与请求分派协作-20

来源:互联网 发布:java 获取整数的位数 编辑:程序博客网 时间:2024/06/05 10:11

dispatcher的意义:可以通过配置该属性的值,控制那些类型的请求会经过过滤器
Dispatcher属性的值:
REQUEST(默认值)、FORWARD、INCLUDE、ERROR、ASYNC
配置方式:使用注解@WebFilter的属性:dispatcherTypes,其值是一个数组,元素类型是DispatcherType枚举类型
使用web.xml中filter标签的子标签
可以为该属性同时配置多个值。

@WebFilter(urlPatterns = "*", dispatcherTypes = { DispatcherType.REQUEST,        DispatcherType.ASYNC })

测试代码:
servlet

package com.ls.javaees1;import java.io.IOException;import javax.servlet.AsyncContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(urlPatterns="/test1",asyncSupported=true)public class Servlet1 extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        //request.getRequestDispatcher("index.jsp").forward(request, response);        //request.getRequestDispatcher("index.jsp").include(request, response);        final AsyncContext context=request.startAsync();        context.start(new Runnable() {            @Override            public void run() {                context.dispatch("/index.jsp");            }        });    }}

Filter

package com.ls.javaees1;import java.io.IOException;import javax.servlet.DispatcherType;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;@WebFilter(urlPatterns = "*", dispatcherTypes = { DispatcherType.REQUEST,        DispatcherType.ASYNC })public class Filter1 implements Filter {    @Override    public void destroy() {        // TODO Auto-generated method stub    }    @Override    public void doFilter(ServletRequest arg0, ServletResponse arg1,            FilterChain chain) throws IOException, ServletException {        System.out.println("filter1");        chain.doFilter(arg0, arg1);    }    @Override    public void init(FilterConfig arg0) throws ServletException {        // TODO Auto-generated method stub    }}
原创粉丝点击