您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
6_Filter_细节_过滤器拦截路径配置(servlet拦截与目录拦截和具体资源路径拦截)
发布时间:2022-09-25 19:32:35编辑:雪饮阅读()
首先重置下上篇中的web/index.jsp:
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2022/9/23
Time: 21:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
$END$
</body>
</html>
精准路由拦截
匹配到具体的url资源,示例如
Filter2.java:
package package3;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*
拦截资源的具体路径,
这里如访问“http://localhost:8080/day19_war_exploded/index.jsp”
或者"http://localhost:8080/day19_war_exploded/"
或者"http://localhost:8080/day19_war_exploded"
时候才能被拦截到,当然后两种都是由于默认文档以及可能是浏览器自己补全或者tomcat之类的自己给处理的吧。
*/
@WebFilter("/index.jsp")
public class Filter2 implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("----------Filter2=>index.jsp被访问");
chain.doFilter(req, resp);
}
public void destroy() {
}
}
路由模糊匹配拦截
比如我们需要拦截user新增和user修改这两个servlet路由的拦截(filter支持对servlet的拦截(这不废话。。。)),或者准确点说就是对user这个目录下所有访问都拦截。
则首先假如我们有新增的servlet如:
ServletAdd.java:
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("/user/addServlet")
public class ServletAdd extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("---ServletAdd被访问");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
然后有ServletUpdate.java:
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("/user/updateServlet")
public class ServletUpdate extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("---ServletUpdate被访问");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
最后就是具体的filter拦截目录的实例如
FilterServlet.java:
package package3;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/*
* 拦截目录
* 这里具体就是以访问如
*http://localhost:8080/day19_war_exploded/user/xx
* http://localhost:8080/day19_war_exploded/user
* http://localhost:8080/day19_war_exploded/user/
* http://localhost:8080/day19_war_exploded/user/addServlet
* http://localhost:8080/day19_war_exploded/user/updateServlet
*即便这些url里面可能有404,只要匹配到user目录了,则都会被拦截
* */
@WebFilter("/user/*")
public class FilterServlet implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println("---FilterServlet被访问");
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
关键字词: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
- phpunit如何生成代码覆盖率?“No filter is configured