與請求分派協作-20

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

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章