web.xml加载顺序  

1.先加载<context-param>标签

2.创建servletContext容器

3.把<context-parame>标签中数据转化成键值树交给servletContext容器

4.创建Listener实例

5.加载filter(过滤器)

6.加载Interceptor(拦截器)

7.加载servlet


注:filter加载顺序:根据web.xml中<filter-mapper>来决定 servlet一样如此


1.自定义Listener,我们需要实现ServletContextListener接口

public class MyListener implements ServletContextListener {


public void contextInitialized(ServletContextEvent event) {

//加上自己的处理逻辑

}


public void contextDestroyed(ServletContextEvent event) {

//销毁时 处理逻辑

}


}


2.自定义filter,需要实现filter接口

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response =(HttpServletResponse) res; 

//拦截业务逻辑

// 将控制权传递到下一个过滤器

chain.doFilter(request, response);

}



@Override

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}


3.自定义Interceptor,需要实现HandlerInterceptor接口 或者继承 HandlerInterceptorAdapter

  public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,Exception arg3) throws Exception {

        // TODO Auto-generated method stub

 

    }


    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2,ModelAndView arg3) throws Exception {

        // TODO Auto-generated method stub

 

    }

 


    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,

            Object handler) throws Exception {

    //拦截逻辑 通过返回 true; 不通过返回false;

    }