请选择 进入手机版 | 继续访问电脑版

技术_方法_掌握技术,成就未来-6miu百度云

 找回密码
 立即注册
查看: 5|回复: 0

看了网友Roy的评论,研究了一下用filter来解决Struts中文乱码的问题!

[复制链接]

277万

主题

277万

帖子

832万

积分

论坛元老

Rank: 8Rank: 8

积分
8326212
发表于 2021-1-4 13:17:10 | 显示全部楼层 |阅读模式
.CodeFormat {font-family:"Courier New", Courier, mono; font-size:10pt; }Roy 网友指出,用Filter处理Struts中文乱码才是王道,原文请参考这里:


Struts Hack!解决中文参数在Form Bean中的乱码问题!

  filter的用法,的确是比较有扩展性的一种方法...可以通过filter结合读取web.xml中的filter参数来完成一系列的动作,做法如下:

首先,实现javax.servlet.Filter接口,编写一个处理request编码的过滤器类...


  
      
       package
        tutorial.struts.filter;
       import
        javax.servlet.Filter;
       import
        javax.servlet.FilterConfig;
       import
        javax.servlet.ServletException;
       import
        javax.servlet.ServletRequest;
       import
        javax.servlet.ServletResponse;
       import
        javax.servlet.FilterChain;
       import
        java.io.IOException;
       public
        
       class
        SetCharacterEncodingFilter
       implements
        Filter {  
       protected
        FilterConfig filterConfig;  
       protected
        String encodingName;  
       protected
        
       boolean
        enable;  
       public
        SetCharacterEncodingFilter() {   
       this
       .encodingName
       =
        
       "
       UTF-8
       "
       ;   
       this
       .enable
       =
        
       false
       ;  }  
       public
        
       void
        init(FilterConfig filterConfig)
       throws
        ServletException {   
       this
       .filterConfig
       =
        filterConfig;    loadConfigParams();  }  
       private
        
       void
        loadConfigParams() {   
       //
       encoding
        
           
           this
       .encodingName
       =
        
       this
       .filterConfig.getInitParameter(
       "
       encoding
       "
       );   
       //
       filter enable flag   
      
       String strIgnoreFlag
       =
        
       this
       .filterConfig.getInitParameter(
       "
       enable
       "
       );   
       if
        (strIgnoreFlag.equalsIgnoreCase(
       "
       true
       "
       )) {      
       this
       .enable
       =
        
       true
       ;    }
       else
        {      
       this
       .enable
       =
        
       false
       ;    }  }  
       public
        
       void
        doFilter(ServletRequest request, ServletResponse response,                       FilterChain chain)
       throws
        IOException, ServletException {   
       if
       (
       this
       .enable) {      request.setCharacterEncoding(
       this
       .encodingName);    }    chain.doFilter(request, response);  }  
       public
        
       void
        destroy() {  }                }
      
然后,需要在web.xml中注册我们的过滤器类:


  
      
        
      
       filter
       >
         
      
       filter-name
       >
       Set Character Encoding
      
        filter-name>   filter-class>tutorial.struts.filter.SetCharacterEncodingFilter
         filter-class>   init-param>     param-name>encoding
          param-name>     param-value>UTF-8
           param-value>
            init-param> init-param> param-name>enable
             param-name> param-value>true
              param-value>
               init-param>
                filter> filter-mapping> filter-name>Set Character Encoding
                 filter-name> servlet-name>Action Servlet
                  servlet-name>
                   filter-mapping> filter-mapping> filter-name>Set Character Encoding
                    filter-name> servlet-name>Faces Servlet
                     servlet-name>
                      filter-mapping>
      
这样,任何通过Struts,或是JSF的Controller Servlet处理的request,都会在过滤器中先行处理,才把控制权交还给Struts或是JSF,而且Filter中有一个Process Chain的概念,是一个很吸引人的东东~~!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|技术_方法_掌握技术,成就未来-6miu百度云

GMT+8, 2021-1-22 02:43 , Processed in 0.063441 second(s), 21 queries .

合作伙伴:

盘搜搜 / 百度云搜索 / 盘多多 / 如风搜 / 小说阅读网 / 笔趣阁 / 文库 / 学术 / 小说排行榜 / 专利网 / 专利查询 / 网盘搜索 / 网盘 / 问医生 / 健康网 / APP开发 / 金蝶 / 软件定制 / 软件开发 / 教育app / ERP系统 / SAP / 分销系统 / 成都软件开发 / 小程序开发 / ERP / WMS / MES / LIMS / SCADA / PLM / PDM / 希沃 / SEEWO / OTO / O2O / 培训系统 / 在线问诊 / 在线问诊系统 / 医疗咨询系统 / 网店代运营 / 返利网 / 京东代运营 / 斯特封 / trelleborg / NOK / 斯凯孚 / SKF / 圣戈班 / Saint-Gobain / 派克汉尼汾 / parker / 洪格尔 / hunger / Merkel / 密封圈 /
快速回复 返回顶部 返回列表