2)目录匹配
3)后缀名匹配
一、Filter简介
Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
Filter 过滤器它是 JavaEE 的规范。也就是接口
Filter 过滤器它的作用是:拦截请求,过滤响应。
拦截请求常见的应用场景有:
权限检查
日记 *** 作
事务管理
二、Filter使用
1、Filter 的初体验
要求:在你的 web 工程下,有一个 admin 目录。这个 admin 目录下的所有资源(html 页面、jpg 、jsp 文件、等等)都必须是用户登录之后才允许访问。
思考:根据之前我们学过内容。我们知道,用户登录之后都会把用户登录的信息保存到 Session 域中。所以要检查用户是否登录,可以判断 Session 中否包含有用户登录的信息即可。
Filter 的代码
public class AdminFilter implements Filter {
/
doFilter 方法,专门用于拦截请求。可以做权限检查
/
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpSession session = httpServletRequestgetSession();
Object user = sessiongetAttribute("user");
if (user == null) {
servletRequestgetRequestDispatcher("/loginjsp")forward(servletRequest,servletResponse);
return;
} else {
// 让程序继续往下访问用户的目标资源
filterChaindoFilter(servletRequest,servletResponse);
}
}
登录后复制

webxml 中的配置
<!--filter标签用于配置一个 Filter过滤器-->
<filter>
<!--给 filter起一个别名-->
<filter-name>AdminFilter</filter-name>
<!--配置 filter的全类名-->
<filter-class>comatguigufilterAdminFilter</filter-class>
</filter>
<!--filter-mapping配置 Filter过滤器的拦截路径-->
<filter-mapping>
<!--filter-name表示当前的拦截路径给哪个 filter使用-->
<filter-name>AdminFilter</filter-name>
<!--
url-pattern配置拦截路径
/ 表示请求地址为:http://ip:port/工程路径/ 映射到 IDEA 的 web目录
/admin/ 表示请求地址为:http://ip:port/工程路径/admin/
-->
<url-pattern>/admin/</url-pattern>
</filter-mapping>
登录后复制

Filter 过滤器的使用步骤:
编写一个类去实现 Filter 接口
实现过滤方法 doFilter()
到 webxml 中去配置 Filter 的拦截路径
loginjsp 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
登陆页面
<form action="http://localhost:8080/15_filter/loginServlet" method="get">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="password"/>
<input type="submit"/>
</form>
</body>
</html>
登录后复制

LoginServlet程序
public class LoginServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
respsetContentType("text/html; charset=Utf-8");
String username = reqgetParameter("username");
String password = reqgetParameter("password");
if("1"equals(username)&&"1"equals(password)){
reqgetSession()setAttribute("user",username);
respgetWriter()write("登陆成功");
}else{
reqgetRequestDispatcher("/loginjsp")forward(req,resp);
}
}
}
登录后复制

2、Filter 的生命周期
Filter 的生命周期如下
构造器方法
init 初始化方法
doFilter 过滤方法
destroy 销毁
第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建)
第 3 步,每次拦截到请求,就会执行
第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)
3、FilterConfig类
FilterConfig 类见名知义,它是 Filter 过滤器的配置文件类。
Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息。
FilterConfig 类的作用是获取 filter 过滤器的配置内容:
获取 Filter 的名称 filter-name 的内容
获取在 Filter 中配置的 init-param 初始化参数
获取 ServletContext 对象
public class Adminfilter implements Filter {
@Override
public void init(FilterConfig filterConfig) {
// 1 、获取 Filter 的名称 filter-name 的内容
Systemoutprintln("filter-name 的值是:" + filterConfiggetFilterName());
// 2 、获取在 webxml 中配置的 init-param 初始化参数
Systemoutprintln(" 初始化参数 username 的值是 :" + filterConfiggetInitParameter("username"));
Systemoutprintln(" 初始化参数 url 的值是:" + filterConfiggetInitParameter("url"));
// 3 、获取 ServletContext 对象
Systemoutprintln(filterConfiggetServletContext());
}
}
登录后复制

webxml配置
<filter>
<filter-name>Adminfilter</filter-name>
<filter-class>comfilterAdminfilter</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost3306/test</param-value>
</init-param>
</filter>
登录后复制

4、FilterChain过滤器链
5、Filter 的拦截路径
1)精确匹配
<url-pattern>/targetjsp</url-pattern>
登录后复制
表示请求地址必须为:http://ip:port/工程路径/targetjsp
2)目录匹配
<url-pattern>/admin/</url-pattern>
登录后复制
表示请求地址必须为:http://ip:port/工程路径/admin/
3)后缀名匹配
<url-pattern>html</url-pattern>
登录后复制
表示请求地址必须以html 结尾才会拦截到
<url-pattern>do</url-pattern>
登录后复制
表示请求地址必须以do 结尾才会拦截到
<url-pattern>action</url-pattern>
登录后复制
表示请求地址必须以action 结尾才会拦截到
以上就是关于podfilter怎么用全部的内容,包括:podfilter怎么用、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)