1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Servlet】Filter过滤器详解 使用示例

【Servlet】Filter过滤器详解 使用示例

时间:2019-11-03 02:03:37

相关推荐

【Servlet】Filter过滤器详解 使用示例

Filter过滤器讲解

定义

过滤器处于浏览器与servlet之间,是一个实现了 javax.servlet.Filter 接口的 Java 类

客户端发送的请求、服务器发送的资源,需要通过过滤器,才可以继续流转

作用
对服务器接收的请求资源和相应给浏览器的资源进行管理。保护servlet
使用
创建一个实现了Filter接口的普通Java类(Eclipse中可以直接创建Filter)覆写接口方法 init方法doFilter方法destroy方法 在web.xml中配置过滤器(如下)

<filter><display-name>MyFilter</display-name><filter-name>MyFilter</filter-name><filter-class>cn.hanquan.filter.MyFilter</filter-class></filter><filter-mapping><filter-name>MyFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

XML配置内容含义

<url-pattern>/</url-pattern>表示拦截所有请求

<url-pattern>.do</url-pattern>表示拦截所有以.do结尾的请求。一般是用来进行模块拦截处理。

<url-pattern>/LoginServlet</url-pattern>表示拦截指定url的请求。针对某个servlet的请求进行拦截,保护servlet。

过滤器的生命周期

从服务器启动,到服务器关闭。

总结

过滤器由程序员声明和配置。

服务器收到请求后,根据URI信息在web.xml中找到对应的过滤器执行doFilter方法。该方法对此请求进行处理后,如果符合要求,则放行,放行后,如果还有符合要求的过滤器则继续进行过滤,找到执行对应的servlet进行请求处理。

servlet对请求处理完毕后,也就service方法结束了。还需要返回相应的doFilter方法继续执行。

使用场景

统一设置编码格式

session管理

权限管理

资源管理(统一水印、和谐词汇等等)

使用示例

package cn.hanquan.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/*** 过滤器的使用*/public class MyFilter implements Filter {@Overridepublic void destroy() {System.out.println("过滤器被销毁");}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)throws IOException, ServletException {System.out.println("过滤器被执行");// 设置编码格式req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");// 放行chain.doFilter(req, resp);}@Overridepublic void init(FilterConfig arg0) throws ServletException {System.out.println("过滤器被初始化");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。