Servlet3.0之ServletContext

Servlet3.0之ServletContext

1、自定义MyServletContainerInitializer实现ServletContainerInitializer接口,在onStartup方法中传入组件
@HandlesTypes,可以传入你想要的java类的子类的所有类型,以HelloService接口为例子。

package main.com.kerwin.servlet;

import main.com.kerwin.service.AbsHelloService;
import main.com.kerwin.service.HelloService;
import main.com.kerwin.service.HelloServiceExt;

import javax.servlet.*;
import javax.servlet.annotation.HandlesTypes;
import java.util.EnumSet;
import java.util.Set;
/**
 * @author Kerwin
 *
 */
@HandlesTypes(value={HelloService.class, AbsHelloService.class, HelloServiceExt.class})
public class MyServletContainerInitialier implements ServletContainerInitializer {
    @Override
    public void onStartup(Set<Class<?>> clzes, ServletContext ctx) throws ServletException {
        System.out.println("感兴趣的类型:");
        for (Class<?> clz : clzes) {
            System.out.println(clz);
        }
        //注册组件
        //注册Filter
        FilterRegistration userFilter = ctx.addFilter("userFilter", UserFilter.class);
        userFilter.addMappingForUrlPatterns(EnumSet.
                of(DispatcherType.REQUEST), true, "/*");
        //配置filter的映射信息
        ServletRegistration.Dynamic userServlet = ctx.addServlet("userServlet", new UserServlet());
        //注册servlet
        userServlet.addMapping("/user");
        //注册Listener
        ctx.addListener(UserListener.class);
    }
}

小结:
1、使用ServletContext可以注册web三大组件(Servlet、Filter、Listener)
2、使用编码的方式,在项目启动的时候给ServletContext里面添加组件:
必须在项目启动的时候来添加:
1)、ServletContainerInitializer得到ServletContext,
2) 、ServletContextListener得到ServletContext。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值