文档介绍:Java 中filter 过滤器的使用:
Servlets Filter 是Servlet 规范中新增加的,它是截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行的一个类。它操纵来自客户端的请求,在资源还没有初发送到客户端前截取响应,并处理这些还没有发送到客户端的响应。
Filters 有许多的应用场合。Servlet 规范建议如下的地方可以应用Filter:
authentication filters
logging and auditing filters
image conversion filters
pression filters
encryption filters
tokenizing filters
filters that trigger resource access events
XSL/T filters that transform XML content
MIME-type chain filters
如何实现一个过滤器呢?
public interface Filter
public void init(FilterConfig filterConfig)throws ServletException
过滤器初始化是在容器启动时自动初始化
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletExcepton
在标准Servlet中的doGet或doPost 方法中,传递参数为:HttpServletRequest、HttpServletResponse
过滤器销毁
public void destroy()
例:如下为过滤器基本的主要结构
import ;
import ;
import ;
import ;
import ;
import ;
import ;
public class MyFirstFilter implements Filter
{
private String encoding;
public void destroy()
{
("过滤器销毁");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException
{
("过滤doFilter");
(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException
Encoding 与配置文件中初始化参数一致(黄色部分)
{
("过滤器初始化");
encoding = ("encoding");
}
对应配置文件:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-.. MyFirstFilter </filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>action</servlet-name>