ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于在struts 框架中使用Filter过滤器解决汉字编码问题(转)

关于在struts 框架中使用Filter过滤器解决汉字编码问题(转)

原创 Linux操作系统 作者:ad8224 时间:2009-03-17 00:05:27 0 删除 编辑

转自:http://blog.csdn.net/123xxx/archive/2005/01/27/270575.aspx

1.web.xml最开始的地方加上对filter过滤器的声明,指明过滤器使用的类<filter-class>,要使用的编码<param-value>,以及过滤器的适用范围

<url-pattern>

 

       <filter>

              <filter-name>setEncodingfilter-name>

              <filter-class>

       进行过滤器处理的类             com.yourcompany.struts.FilterEncoding

              filter-class>

              <init-param>

                     <param-name>encodingparam-name>

       指定使用的编码   <param-value>GBKparam-value>

              init-param>

       filter>

       <filter-mapping>

              <filter-name>setEncodingfilter-name>

       有效路径 <url-pattern>/*url-pattern>

filter-mapping>

 

注意,与servlet的声明一样,两个地方的<filter-name>的值是一样的。

 

 

2.过滤器类FilterEncoding的书写:

注意事项:实现javax.servlet.Filter接口,重写其中的3个方法:(init(FilterConfig filterConfig)doFilter(ServletRequest request, ServletResponse response, FilterChain chain)destroy()

       主要是从web.xml中取得要使用的编码,然后给request设置成取得的编码类型。示例代码如下:

       package com.yourcompany.struts;

 

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 n-liang

 *

 * TODO To change the template for this generated type comment go to

 * Window - Preferences - Java - Code Style. - Code Templates

 */

public class FilterEncoding implements Filter {

       private FilterConfig filterConfig=null;

       private String encoding=null;

 

       /* (non-Javadoc)

        * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)

        */

       public void init(FilterConfig filterConfig) throws ServletException {

              this.filterConfig=filterConfig;

              this.encoding=filterConfig.getInitParameter("encoding");

       }

 

       /* (non-Javadoc)

        * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

        */

       public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

              String encoding=this.encoding;

              if(encoding!=null)

              {

              request.setCharacterEncoding(encoding);  

              }

              chain.doFilter(request, response);

       }

 

       /* (non-Javadoc)

        * @see javax.servlet.Filter#destroy()

        */

       public void destroy() {

              this.encoding=null;

              this.filterConfig=null;

             

       }

  

}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/635599/viewspace-567583/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-17

  • 博文量
    17
  • 访问量
    25037