当前位置:网站首页>过滤器(Filter)
过滤器(Filter)
2022-07-31 00:17:00 【^O^——】
目录
一、如何使用过滤器(Filter)
1.1.写一个类实现(implements)Filter(过滤器类,Filter来自 Filter - javax,servlet接口中)。
1.2.重写三个方法
@Override
public void destroy() {
System.out.println("过滤器被销毁!");
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("请求被过滤器拦截!");
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// 启动Tomcat服务
System.out.println("过滤器初始化/过滤器被创建!");
}二、通过xml配置过滤器
<!-- 配置过滤器 -->
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.zking.filter.LoginFilter</filter-class>
<!-- 配置过滤器初始化参数 -->
<!-- 参数1 -->
<init-param>
<!-- 参数名 -->
<param-name>name</param-name>
<!-- 参数值 -->
<param-value>张三</param-value>
</init-param>
<!-- 参数2 -->
<init-param>
<!-- 参数名 -->
<param-name>sex</param-name>
<!-- 参数值 -->
<param-value>男</param-value>
</init-param>
</filter>
<!-- 配置过滤器映射文件 -->
<filter-mapping>
<filter-name>loginFilter</filter-name>
<!-- 设置过滤器要过滤的请求 -->
<!-- 1.过滤单个请求 -->
<url-pattern>/index.jsp</url-pattern>
<!-- 2.过滤指定后缀名的请求 -->
<!-- 如:过滤所有后缀名为.jsp的页面 -->
<url-pattern>*.jsp</url-pattern>
<!-- 3.过滤指定目录的请求 -->
<url-pattern>/home/index.jsp</url-pattern>
<!-- 4.过滤整个项目的所有请求 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
三、通过注解配置过滤器
3.1.配置过滤单个请求
@WebFilter("/index.jsp")3.2.配置过滤多个请求
@WebFilter(
filterName = "loginFilter",// 配置过滤器的名字,相当于<filter-name>loginFilter</filter-name>
urlPatterns = {"/login.jsp","/index.jsp"},// 配置过滤多个页面
// 配置初始化参数
initParams = {
@WebInitParam(name = "name",value = "张三"),
@WebInitParam(name = "sex",value = "男")
}
)
四、获取过滤器配置的初始化参数
// 在初始化方法里面获取配置的初始化参数
@Override
public void init(FilterConfig arg0) throws ServletException {
// 启动Tomcat服务
System.out.println("过滤器初始化/过滤器被创建!");
// 获取配置的初始化参数
String name = arg0.getInitParameter("name");
String sex = arg0.getInitParameter("sex");
System.out.println("name = " + name);
System.out.println("sex = " + sex);
}
五、过滤器的使用
1.转换参数arg0和arg1(要使用request和response里面的方法)
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse resp = (HttpServletResponse)arg1;
2.设置编码
req.setCharacterEncoding("utf-8");
resp.setContentType("html/text;charset=utf-8");
3.使用arg2.doFilter(arg0, arg1),可以让被过滤器拦截的页面继续正常运行。
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("请求被过滤器拦截!");
// 转换参数arg0和arg1
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse resp = (HttpServletResponse)arg1;
// 设置编码
resp.setContentType("html/text;charset=utf-8");
// 放行/继续前进
arg2.doFilter(arg0, arg1);
}完
边栏推荐
猜你喜欢
随机推荐
How to Repair Word File Corruption
transition transition && animation animation
45. [Application of list linked list]
数据库的严格模式
How to open the payment channel interface?
firewalld
46.
An easy-to-use interface testing tools - the Postman
MySQL数据库面试题总结(2022最新版)
pytorch bilinear interpolation
MySQL面试题
Bugku sql注入
How to use joiplay emulator
Summary of the stock problem of state machine dynamic programming
Optimization of aggregate mentioned at DATA AI Summit 2022
2D Transform Module && Media Queries
joiplay模拟器报错如何解决
WebServer process explanation (registration module)
firewalld
Installation considerations for pytorch








