您的位置:首页 > 游戏 > 手游 > Filter 过滤器

Filter 过滤器

2024/12/23 4:47:54 来源:https://blog.csdn.net/weixin_51644244/article/details/140262877  浏览:    关键词:Filter 过滤器

1. 什么是过滤器

拦截不符合过滤要求的请求,使其无法到达目的地。

执行过程

主要用在:统一认证,统一编码设置

2. 创建过滤器

两种方式:与 servlet 雷同

① 注解方式 (/* 拦截所有请求)

@WebFilter(filterName = "MyFilter",urlPatterns = "/*")
public class MyFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {//初始化---只会执行一次}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//过滤的业务处理代码System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");//放行filterChain.doFilter(servletRequest,servletResponse);System.out.println("------再次经过过滤器~~~~~~~~~~~~");}@Overridepublic void destroy() {//销毁方法--当服务器重启或关闭时}
}

②web.xml 方式

    <!--注册过滤器--><filter><filter-name>MyFilter</filter-name><filter-class>com.ykq.filter.MyFilter</filter-class></filter><!--过滤规则--><filter-mapping><filter-name>MyFilter</filter-name><!--/*:表示拦截所有的请求/views/*: 只拦截包含views/资源/*.do: 拦截请求后缀未.do资源--><url-pattern>/*</url-pattern></filter-mapping>

3. 编码过滤器

public class EncodingFilter implements Filter {private String encoding="gbk";@Overridepublic void init(FilterConfig filterConfig) throws ServletException {//初始化---只会执行一次encoding=filterConfig.getInitParameter("encoding");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding(encoding); //ISO-8859-1 java源码一旦写完就无法修改servletResponse.setCharacterEncoding(encoding);//放行filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {//销毁方法--当服务器重启或关闭时}
}

使用 web.xml 方式

<!--注册过滤器-->
<filter><filter-name>MyFilter</filter-name><filter-class>com.ykq.filter.EncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param>
</filter>
<!--过滤规则-->
<filter-mapping><filter-name>MyFilter</filter-name><!--/*:表示拦截所有的请求/views/*: 只拦截包含views/资源/*.do: 拦截请求后缀未.do资源--><url-pattern>/*</url-pattern>
</filter-mapping>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com