当前位置:网站首页>过滤器(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);
}完
边栏推荐
猜你喜欢
随机推荐
MySQL数据库约束,表的设计
H5跳转微信公众号解决方案
2D转换模块&&媒体查询
游戏商城表建立
Unity 加载读取PPT
从两个易错的笔试题深入理解自增运算符
会议OA项目待开会议、所有会议功能
Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
Homework: iptables prevent nmap scan and binlog
IOT跨平台组件设计方案
如何在WordPress网站上添加导航菜单
[动态规划] 0-1背包问题和完全背包问题
消息队列存储消息数据的MySQL表设计
Oracle一个诡异的临时表空间不足的问题
Jetpack Compose学习(8)——State及remeber
【深入浅出玩转FPGA学习13-----------测试用例设计1】
Summary of the stock problem of state machine dynamic programming
Mysql体系化之JOIN运算实例分析
asser利用蚁剑登录
joiplay模拟器如何调中文








![[In-depth and easy-to-follow FPGA learning 15---------- Timing analysis basics]](/img/a9/4c7a703a36a244394b586bfb42ab6b.png)
