Servlet

eclipse创建web项目

@WebServlet("/hello")   //使用注解开启web应用
public class HelloServlet extends HttpServlet{
    
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        resp.getWriter().write("Hello...");
    }
}

 <body>
   <a href="hello">hello</a>
</body>

应用启动的时候,会运行onStartup方法;
      
Set<Class<?>> arg0:感兴趣的类型的所有子类型;
ServletContext sc:代表当前Web应用的ServletContext;一个Web应用一个ServletContext;

  1. 使用ServletContext注册Web组件(Servlet、Filter、Listener)
  2. 使用编码的方式,在项目启动的时候给ServletContext里面添加组件; 必须在项目启动的时候来添加;

添加的时机:

  1. ServletContainerInitializer得到的ServletContext;
  2. ServletContextListener得到的ServletContext;   

 //容器启动的时候会将@HandlesTypes指定的这个类型下面的子类(实现类,子接口,抽象类等)传递过来;
//传入感兴趣的类型;


@HandlesTypes(value= {HelloService.class})
public class MyServletContainerInitializer implements ServletContainerInitializer{
    @Override
    public void onStartup(Set<Class<?>> arg0, ServletContext sc) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("感兴趣的类型:");
        for (Class<?> claz : arg0) {
            System.out.println(claz);
        }
        //注册组件  ServletRegistration  
        ServletRegistration.Dynamic addServlet = sc.addServlet("UserServlet", new UserServlet());
        //配置servlet的映射信息
        addServlet.addMapping("/user");
        
        //注册Listener
        sc.addListener(UserListener.class);
        
        //注册Filter  FilterRegistration
        FilterRegistration.Dynamic addFilter = sc.addFilter("userFilter", UserFilter.class);
        //配置Filter的映射信息
        addFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
    }

}

public class UserListener implements ServletContextListener{

 //监听ServletContext启动初始化
        public void contextInitialized(ServletContextEvent arg0) {
            //ServletContext servletContext = arg0.getServletContext();   //在这里可以得到ServletContext
            System.out.println("UserListener...contextInitialized...");
        }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值