url传值到Action的乱码解决方法

jsp页面 URL传中文参数到Action里面出现乱码,用过滤器和控制器都解决不了,用了我两个多小时解决这个小问题!
解决方法有以下几种:
第一种:在Action中用 new String(str.getBytes("ISO8859_1"), "UTF8"),进行转码,因为传递的时候,中文默人的是ISO8859_1
第二种:可通过配置TOMCAT来解决此问题,具体解决方法如下:在tomcat的server.xml里,找到               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" redirectPort="8443" acceptCount="100"
              debug="0" connectionTimeout="20000"
              disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="gbk">
其中是修改 disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="gbk" 其方法是防止在url中出现乱码
然后在每个Jsp页面添加如下代码
<%@ page pageEncoding=”gb2312″%>
<%@ page contentType=”text/html;charset=gb2312″%>
<%request.setCharacterEncoding(”gb2312″);%>
第三种:直接在ACTION中利用以下方法解决:request.setCharacterEncoding("gb2312");
        response.setCharacterEncoding("gb2312");
<==========================================>
我用的是struct1.2+Hibernate3.0+Spring2.0
在做那个两个action的页面的时候,jsp页面的下拉列表通过actionForm传值给action,老是得到乱码,过滤器+server.xml+页面编码统一后,


仍不能解决。后来把下拉列表代码改成value值为数字的形式传值

   
   
   
       
   
   
     
   
任务类型
   


然后在action中
int typeNo = Integer.parseInt(lform.getT_type());   //将下拉列表传来的值转化成int形
         System.out.println(typeNo);
         String type = null;
         if(typeNo==1){type = "维修";}
         if(typeNo==2){type = "安装";}
         if(typeNo==3){type = "采购";}

你可能感兴趣的:(javaWeb)