您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
7_Filter_细节_过滤器拦截方式配置(区分拦截浏览器直接请求或内部forward请求)
发布时间:2022-09-25 21:36:39编辑:雪饮阅读()
拦截浏览器直接请求
实例如:
package package3;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*
* 配置为dispatcherTypes = DispatcherType.REQUEST则是直接拦截浏览器的请求
* 只能拦截浏览器直接请求,不能拦截内部forward请求
* 则@WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.REQUEST)等同于@WebFilter("/index.jsp")
* 因为默认不配置dispatcherTypes值,则默认值就是DispatcherType.REQUEST
* */
@WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.REQUEST)
public class Filter1 implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("触发了拦截");
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
为了便于测试直接请求和forward请求,所以还需要一个如servlet来实现forward请求:
package package3;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletJumpIndex")
public class ServletJumpIndex extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("间接访问index.jsp");
request.getRequestDispatcher("/index.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
内部forward拦截
内部forward拦截的支持只要dispatcherTypes值为DispatcherType.FORWARD即可。
但是设置为DispatcherType.FORWARD后,原来的DispatcherType.REQUEST又会失效,也就是说DispatcherType.REQUEST和DispatcherType.FORWARD不共存的。
forward与request同时拦截
要想内部forward请求被拦截,同时request请求被拦截,则可以配置dispatcherTypes为多值。
如:
dispatcherTypes = {DispatcherType.FORWARD,DispatcherType.REQUEST}
关键字词:Filter,细节,过滤器拦截方式配置,区分拦截浏览器直接请求或内部forward请求
相关文章
- 6_Filter_细节_过滤器拦截路径配置(servlet拦截与目录
- 5_Filter_细节_执行流程&生命周期(filter创建模板与生
- 4_Filter_细节_web.xml配置方式
- 3_Filter_快速入门(类似php中常用的中间件)
- 25_案例_验证码_细节处理(removeAttribute)
- 20_会话技术_Session_细节2(session实例引用地址不同
- 19_会话技术_Session_细节1(用cookie来控制session关闭
- 08_会话技术_Cookie_细节4_Cookie共享
- 06_会话技术_Cookie_细节2_Cookie存活时间
- 05_会话技术_Cookie_细节1_发送多个Cookie