首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>JAVA专区>STRUTS>Struts中文的乱码问题两种经典解决方法
Struts中文的乱码问题两种经典解决方法
来源: 发布时间:2008-05-29 发布人: 浏览: 人次   字体: [ ]  
初学Struts的人一定遇到过中文的乱码问题 ,目前解决的方法有很多。我这有两种经典的方法和大家分享。
1,重写 RequestProcessor   这是最简单的方法。

 public class MyRequestProcessor extends RequestProcessor {
 @Override
 protected boolean processPreprocess(HttpServletRequest request, HttpServletResponse response) {
  try {
   request.setCharacterEncoding("UTF-8");  //在这加一行设置编码的的代吗。
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return super.processPreprocess(request, response);
 } 
}

页面的编码也要保持一致
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
另外在struts-config.xml 中配置 <controller> 元素
<controller processorClass="com.cao.struts.MyRequestProcessor"/>
不过该方法只对 post 请求有作用

如果对get 方法也有作用processPreprocess 方法写成
if( request.getMethod().compareToIgnoreCase("post")>=0){
   try {
    request.setCharacterEncoding("UTF-8");
   } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }else{   
   Iterator iter=request.getParameterMap().values().iterator();
   while(iter.hasNext())
   {
    String[] parames=(String[])iter.next();
    for (int i = 0; i < parames.length; i++) {
     try {
      parames[i]=new String(parames[i].getBytes("iso8859-1"),"UTF-8");
     } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
     }    }      }     }
  
2,通过过滤器使用请求代理

public class EncodingFilter extends javax.servlet.http.HttpServlet implements Filter {
 
 FilterConfig filterConfig;
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  MyRequest req = new MyRequest( (HttpServletRequest)request);//设置代理请求
  filterChain.doFilter(req, response);
  
 }

 public void init(FilterConfig arg0) throws ServletException {
  this.filterConfig = arg0;  
 }
}
class MyRequest extends javax.servlet.http.HttpServletRequestWrapper{//自定义的代理请求类
 HttpServletRequest request;
 public MyRequest(HttpServletRequest request) {
  super(request);
  this.request = request;
 }
 public String[] getParameterValues(String name){
  String strs[] = super.getParameterValues(name);
  for(int i=0;i<strs.length;i++){
   strs[i]  = this.myEncoding(strs[i]);
  }
  return strs;
 }
 private String myEncoding(String input){
  String output ="";
  try {
   output = new String(input.getBytes("ISO-8859-1"),"UTF-8"); //注意同页面的编码保持一致
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return output;
 }
}

在web.xml中进行配置
 <filter>
  <filter-name>encoding</filter-name>
  <filter-class>com.cao.struts.EncodingFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>encoding</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

该方法既可以用于post请求又可以用于get请求。
希望对大家有所帮助!


相 关 文 章   发布商链接
·如何在struts中应用国际化
·Struts中实现多人合作多模块开发方式
·实例详解struts2常用的拦截器
·小解struts2的action使用
·Struts2在IE7下文件不能下载问题的解...
·Struts2 系统架构图中文版图解
·Tomcat+MySql+Struts中文问题绝妙的...
·五步解释Struts处理请求的过程
·struts框架中使用tiles组件代码实例
·Struts2入门实例
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·Struts中实现多人合作多模块...
·如何在struts中应用国际化
·Struts常见的11个错误汇总,附
·Struts+hibernate实现投票系...
·Struts2中文乱码问题解决的几
·小解Struts2验证不能生成vali...
·struts2 redirect-action传递
·struts2文件上传实例
·structs2输入校验实例代码
·Struts2入门实例
·struts框架中使用tiles组件代
·五步解释Struts处理请求的过...
·Tomcat+MySql+Struts中文问题
热 门 文 章
·Struts+hibernate实现投票系...
·struts2 redirect-action传递...
·Struts2中文乱码问题解决的几...
·struts2文件上传实例
·Struts2入门实例
·struts框架中使用tiles组件代...
·structs2输入校验实例代码
·小解Struts2验证不能生成vali...
·Tomcat+MySql+Struts中文问题...
·Struts2 系统架构图中文版图...
·五步解释Struts处理请求的过...
·实例详解struts2常用的拦截器
·小解struts2的action使用
·Struts常见的11个错误汇总,附...
·Struts中实现多人合作多模块...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .