唐僧喜欢小龙女

导航

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、测试结果

     

 

 

 

 

 

posted on 2021-05-29 23:10  与时具进&不忘初心  阅读(222)  评论(0编辑  收藏  举报