javax.servlet.Filter运用

来源:互联网 发布:画图软件怎么打字 编辑:程序博客网 时间:2024/05/21 17:02

Servlets Filter 是Servlet 2.3 规范中新增加的,它是截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行的一个类。它操纵来自客户端的请求,在资源还没有初发送到客户端前截取响应,并处理这些还没有发送到客户端的响应。

Filters 有许多的应用场合。Servlet 2.3 规范建议如下的地方可以应用Filter:

authentication filters
logging and auditing filters
image conversion filters
data compression filters
encryption filters
tokenizing filters
filters that trigger resource access events
XSL/T filters that transform XML content
MIME-type chain filters

例:

package jasso.web.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;


/**
 *
 * @author
 */
public class SetCharacterEncodingFilter implements Filter {
 
 private String encoding;
 

 /**
  * Called by the web container to indicate to a filter that it is being
  * taken out of service.
  *
  * @todo Implement this javax.servlet.Filter method
  */
 public void destroy() {
 }

 /**
  * The <code>doFilter</code> method of the Filter is called by the
  * container each time a request/response pair is passed through the chain
  * due to a client request for a resource at the end of the chain.
  *
  * @param request
  *            ServletRequest
  * @param response
  *            ServletResponse
  * @param chain
  *            FilterChain
  * @throws IOException
  * @throws ServletException
  * @todo Implement this javax.servlet.Filter method
  */
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  request.setCharacterEncoding(encoding);
  chain.doFilter(request, response);
 }

 /**
  * @see javax.servlet.Filter#init(FilterConfig)
  */
 public void init(FilterConfig config) throws ServletException {
  encoding = config.getInitParameter("encoding");
 }
 
 
}

web.xml部分

......

<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>my.web.filter.SetCharacterEncodingFilter</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>
 </filter-mapping>
 <servlet>
   <servlet-name>action</servlet-name>
   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
   <init-param>
     <param-name>config</param-name>
     <param-value>/WEB-INF/config/struts-config.xml,/WEB-INF/config/struts-config-contents.xml</param-value>
   </init-param>
   <init-param>
     <param-name>debug</param-name>
     <param-value>2</param-value>
   </init-param>
   <init-param>
     <param-name>detail</param-name>
     <param-value>2</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
 </servlet>

原创粉丝点击