Filter的简单介绍及用法
Filter简介:Filter被称之为过滤器,它的基本功能是对servlet容器调用servlet的过程进行过滤,从而在servlet进行响应处理前后做一些操作。它主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理。Filter过滤器实现的是javax.servlet.Filter接口的类,而在javax.servlet.Filter中定义了以下三...
Filter简介:
Filter被称之为过滤器,它的基本功能是对servlet容器调用servlet的过程进行过滤,从而在servlet进行响应处理前后做一些操作。
它主要用于对用户请求进行预处理,也可以对HttpServletResponse 进行后处理。
Filter过滤器实现的是javax.servlet.Filter接口的类,而在javax.servlet.Filter中定义了以下三个方法:
- init(FilterConfig fConfig)
init()方法用来初始化过滤器,可以在init()方法中获取Filter中的初始化参数。
String username = filterConfig.getInitParameter("username");
- doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
doFilter()方法完成过滤操作。当请求发过来的时候,过滤器将执行doFilter方法。
在HttpServletRequest 执行doFilter()之前,根据需要检查 HttpServletRequest ,同时也可以修改HttpServletRequest 请求头和数据。
在HttpServletResponse 执行doFilter()之后,根据需要检查 HttpServletResponse ,同时也可以修改HttpServletResponse响应头和数据。
//设置编码格式
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//添加name属性
request.setAttribute("name", "tom");
System.out.println("denlguFiletr处理 之前");
//过滤器
chain.doFilter(request, response);
response.getWriter().println("<br>");
response.getWriter().println("经过filter的处理了");
System.out.println("denlguFiletr处理 之后 ");
- destroy()
Filter对象创建后会驻留在内存,当web应用移除或服务器停止时调用destroy()方法进行销毁。在Web容器卸载 Filter 对象之前被调用。destroy()方法在Filter的生命周期中仅执行一次。通过destroy()方法,可以释放过滤器占用的资源。
xml文件中配置Filter过滤器:
<filter>
<filter-name>SessionFilter</filter-name>
<filter-class>com.login.SessionFilter</filter-class>
<init-param>
<param-name>name</param-name>
<param-value>aaa</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Filter过滤器执行顺序:
web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter,当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源。
更多推荐
所有评论(0)