欢迎光临
我们一直在努力

struts中文乱码问题解决-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

近日,使用struts 1.1,发现讨厌的中文乱码问题,在form的传送过程和入库时候出现。

就我在网络上找的方法罗列如下:

(tomcat 5.0.28+struts 1.1+hibernate 2.1+sqlserver2k)

1.直接转编码public static string isotogb(string src){    string strret=null;    try{      strret = new string(src.getbytes("iso_8859_1"),"gb2312");    }catch(exception e)    {          }    return strret;}通过一个函数转编码,我没有成功,不知为何!

2.过滤filter设置法

package yourbean;

import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.*;

public class servfilter extends httpservlet implements filter {  private filterconfig filterconfig;  //handle the passed-in filterconfig  public void init(filterconfig filterconfig) {    this.filterconfig = filterconfig;  }  //process the request/response pair  public void dofilter(servletrequest request, servletresponse response, filterchain filterchain) {    try {      request.setcharacterencoding("gb2312");       ((httpservletresponse)response).setheader("cache-control","no-cache");      response.setheader("pragma","no-cache"); response.setheader("cache-control","no-cache"); response.setheader("expires","0");       ((httpservletresponse)response).setheader("pragram","no-cache");      filterchain.dofilter(request, response);    }    catch(servletexception sx) {      filterconfig.getservletcontext().log(sx.getmessage());    }    catch(ioexception iox) {      filterconfig.getservletcontext().log(iox.getmessage());    }  }  //clean up resources  public void destroy() {  }}下面是一个web.xml文件你用jbuilder写上面的bean的时候会生成一个<?xml version="1.0" encoding="iso-8859-1"?>

<!doctype web-app    public "-//sun microsystems, inc.//dtd web application 2.3//en"    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>  <display-name>welcome to tomcat</display-name>  <description>     welcome to tomcat  </description>  <filter>    <filter-name>servfilter</filter-name>    <filter-class>yourbean.servfilter</filter-class>  </filter>  <filter-mapping>    <filter-name>servfilter</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping></web-app>把上面的servfilter编译放在你的web-inf/classes/yourbean/下web.xml放在web-inf/下和classes在一个目录下在每个jsp页面上加上<%@page contenttype="text/html;charset=gbk"%>

也不是很方便,而且在tomcat也没有成功,继续郁闷!

3.我现在使用方法,推荐!!

写一个myactionservlet来并覆盖actionservlet中的process()方法。

  protected void process(httpservletrequest request, httpservletresponse response) throws java.io.ioexception, javax.servlet.servletexception {    /**@todo override this org.apache.struts.action.actionservlet method*/    request.setcharacterencoding("gb2312");//就加着一行一切都解决了    super.process(request, response);  }

当然别忘了改一下web.xml里面的配置  <servlet>    <servlet-name>action</servlet-name>    <servlet-class>strutsdemo.myactionservlet</servlet-class>    <init-param>      <param-name>debug</param-name>      <param-value>2</param-value>    </init-param>    <init-param>      <param-name>config</param-name>      <param-value>/web-inf/struts-config.xml</param-value>    </init-param>    <load-on-startup>2</load-on-startup>  </servlet>

改一下servlet-class标签中的内容就可以!

真的可以,一劳用yi!

具体编码的理论就不说了,google上已经够多了。

另外,如果不用struts的话,hibernate也可能碰到中文乱码问题,只要在hibernate.cfg.xml配置中如下:

<property name="hibernate.connection.url">   jdbc:microsoft:sqlserver://localhost:1433;selectmethod=cursor;characterencoding=gbk;databasename=mydatabase.  </property>

characterencoding=gbk!就可以了。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » struts中文乱码问题解决-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章