ServletContext 注册web应用的三大组件 servlet、filter、listener
1、ServletContext 注册三大组件的时间
必须是在项目启动的时候,项目运行起来后就不行了,出于安全的考虑
2、ServletContext注册三大组件的位置
2.1 实现了ServletContainerInitializer接口的onStartup方法里
public class MyServletInit implements ServletContainerInitializer {
public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException {
//注册servlet
ServletRegistration.Dynamic servlet =servletContext.addServlet("userServlet",new UserServlet());
//配置servlet的映射信息
servlet.addMapping("/user");
//注册filter
FilterRegistration.Dynamic filter = servletContext.addFilter("userFilter",UserFilter.class);
//配置filter 的映射信息
filter.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST),true,"userServlet");
//注册listener
servletContext.addListener(UserListener.class);
}
}
//自定义一个Servlet
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if(method.equals("add")){
req.getSession().setAttribute("msg","执行了add 方法");
}
if(method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
//转发
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
//重定向
// resp.sendRedirect();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
/**
*
* 自定义一个监听器 监听项目的启动和停止的
*
*/
public class UserListener implements ServletContextListener {
/**
*servletContext 启动和初始化
* @param servletContextEvent
*/
public void contextInitialized(ServletContextEvent servletContextEvent) {
System.out.println("UserListener。。。。 contextInitialized");
}
/**
*servletContext的销毁
*
* @param servletContextEvent
*/
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("UserListener。。。。contextDestroyed");
}
}
/**
*
* 自定义一个filter
*
*
*/
public class UserFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
/**
*
* 过滤请求的
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("执行了 userfilter ....");
//对请求进行了放行
filterChain.doFilter(servletRequest,servletResponse);
}
public void destroy() {
}
}
3、测试结果

浙公网安备 33010602011771号