admin管理员组文章数量:1642470
目录
1、过滤器的原理
2、如何创建过滤器
2.1在xml中注册
2.2使用@WebFilter注解
让一些合法的请求通过该过滤器,而拦截一些不符合要求的请求路径。当请求到达该过滤器时,可以为请求设置一些参数。
1、过滤器的原理
2、如何创建过滤器
2.1在xml中注册
(1)创建一个类并实现Filter接口并重写相应的方法
package filter;
import javax.servlet.*;
import java.io.IOException;
/**
* @创建人 xiaoliu
* @创建时间 2022/5/19
* @描述
*/
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化过滤器,它只会被执行一次");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
System.out.println("过滤执行时,被调用的方法,这个方法是核心代码,每次请求时都会被执行。");
}
@Override
public void destroy() {
System.out.println("过滤器被销毁时执行");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp/xml/ns/javaee"
xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp/xml/ns/javaee http://xmlns.jcp/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册filter-->
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
</filter>
<!--配置请求路径与过滤器的关系,当你发送什么请求时会被该过滤器拦截-->
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>//通配符:代表所有请求都会经过过滤器
</filter-mapping>
</web-app>
2.2使用@WebFilter注解
如果使用了WebFilter注解,则无需在web.xml在注册该filter了。
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* 如果使用了WebFilter注解,则无需在web.xml在注册该filter了。
**/
@WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");//设置请求的编码 接受到的请求参数不会乱码。
resp.setCharacterEncoding("utf-8");//设置响应的编码,响应的数据不会出现乱码。
//放行
filterChain.doFilter(req,resp);
}
@Override
public void destroy() {
}
}
版权声明:本文标题:JavaWeb—Filter过滤器 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729329326a1196183.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论