CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

struts表单的中文乱码问题

楼主oldmanpushcart(上善若水)2005-11-13 01:10:29 在 Java / Web 开发 提问

小菜刚刚接触用struts进行web开发,发现struts在处理form的时候对中文的支持不是很好  
  这是我的action代码  
  package   ch03.hello;  
   
  import   javax.servlet.RequestDispatcher;  
  import   javax.servlet.ServletException;  
  import   javax.servlet.http.HttpServletRequest;  
  import   javax.servlet.http.HttpSession;  
  import   javax.servlet.http.HttpServletResponse;  
   
  import   org.apache.struts.action.Action;  
  import   org.apache.struts.action.ActionError;  
  import   org.apache.struts.action.ActionErrors;  
  import   org.apache.struts.action.ActionForm;  
  import   org.apache.struts.action.ActionForward;  
  import   org.apache.struts.action.ActionMapping;  
   
  import   org.apache.struts.util.MessageResources;  
   
  import   org.apache.commons.beanutils.PropertyUtils;  
   
  public   final   class   HelloAction   extends   Action   {  
   
          public   ActionForward   execute(ActionMapping   mapping,  
    ActionForm   form,  
                                                                    HttpServletRequest   request,  
                                                                    HttpServletResponse   response)  
          throws   Exception   {  
                   
                  System.out.println("person="+request.getParameter("person"));  
                   
                  String   action   =   request.getParameter("action");  
              if   (action   ==   null)   {  
                      return   (mapping.findForward("SayHello"));  
                  }  
              ActionErrors   errors   =   new   ActionErrors();  
              String   person   =   (String)  
                          PropertyUtils.getSimpleProperty(form,   "person");  
   
                  String   badPerson   =   "Atilla   the   Hun";  
   
                  if   (person.equals(badPerson))   {  
                          errors.add("person",  
                                new   ActionError("ch03.hello.dont.talk.to.atilla",   badPerson   ));  
                      saveErrors(request,   errors);  
                      return   (new   ActionForward(mapping.getInput()));  
                  }  
   
                  HelloModel   hm   =   new   HelloModel();  
                  hm.setPerson(person);  
                  hm.saveToPersistentStore();  
   
              request.setAttribute(   Constants.HELLO_KEY,   hm);              
                  request.removeAttribute(mapping.getAttribute());  
  return   (mapping.findForward("SayHello"));  
   
          }  
  }  
  请问到底是在什么地方出了岔子呢?是ActionBean中还是Action中?还是JSP中?  
  再问问,在Action中,是如何和取得VIEW中用户输入的参数的?是从form中来还是从request中?该如何取得?  
   
  小弟不胜感激,谢谢~ 问题点数:20、回复次数:6Top

1 楼humanity(城市边缘的狼)回复于 2005-11-13 02:40:03 得分 15

struts-config.xml  
  中有个    
  <struts-config>  
      <controller   processorClass="   你的RequestProcessor处理器类名"   />  
  </struts-config>  
   
  public   class   Processor   extends   RequestProcessor{  
        public   void   process(...){   //   比较健忘...   想不起来.  
            request.setCharacterEncoding("GB2312");  
            super.process(request,response);  
        }  
  }  
   
  在这里加上了请求处理器类处理编码问题就能赶在   ActionForm   填充之前设置编码,   如果在   action   类中设置编码则已经过了   ActionForm     填充的阶段,   所以   form   中依然是乱码.  
   
  到   http://struts.apache.org   下载源码看看.Top

2 楼humanity(城市边缘的狼)回复于 2005-11-13 02:41:52 得分 0

还可以用   Servlet   过滤器,   如果你用一些好点的IDE   ,   都有创建Servlet   过滤器向导.Top

3 楼oldmanpushcart(上善若水)回复于 2005-11-13 07:54:26 得分 0

谢谢,netbeans有servlet过滤器吗?  
  eclipse我不大会用Top

4 楼rosifox(下着鱼的天)回复于 2005-11-13 07:56:18 得分 5

原因一:  
          请求是通过GET而不是POST,解决,把JSP/HTML中的FORM的METHOD改为POST  
  原因二:  
          见楼上,方法,加一个ServletFilter,设置request.setCharacterEncoding("GBK");  
  Top

5 楼oldmanpushcart(上善若水)回复于 2005-11-13 08:03:31 得分 0

哎~~在用struts以前,我是一个单纯的JSP/Servlet   CodeWriter   每次上论坛看到ServletFiter的帖子都不明白到底要来干什么,现在我是终于明白了~~  
   
  谢谢大家Top

6 楼oldmanpushcart(上善若水)回复于 2005-11-13 08:14:59 得分 0

顺便问一下,大家有什么好的Struts开源项目吗?我想下一个来学习一下~  
   
  再次谢谢大家~!Top

相关问题

  • 求教 JSP页面乱码问题 struts表单繁体中文乱码 数字和英文正确
  • struts国际化:浏览器表单提交中文,链接提交中文,全是乱码。怎么办啊?
  • Struts表单提交出现乱码?
  • Struts 中文乱码问题 以及 URL暴露表单数据和SessionID问题,急~~~
  • Struts 中文乱码问题 以及 URL暴露表单数据和SessionID问题,急~~~
  • 表单提交的中文乱码问题
  • 去表单数据的中文乱码问题??????
  • 在表单中提交中文出现乱码,怎么回事?
  • Apache2整合Tomcat后,提交表单,中文出现乱码。
  • struts+hibernate+sybase中文乱码问题

关键词

  • struts
  • 编码
  • apache
  • servlet
  • 过滤器
  • actionform
  • 谢谢
  • action
  • import
  • javax

得分解答快速导航

  • 帖主:oldmanpushcart
  • humanity
  • rosifox

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo