`
xph
  • 浏览: 72430 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
文章分类
社区版块
存档分类
最新评论

springMVC传值乱码问题解决

阅读更多
  在jsp,要传入的String类型的name
 
  document.location = "users/add.html?name="+name;
  


  在Controller:
 
  @RequestMapping(value="/add")
  public ModelAndView showUsers(@RequestParam("name") String name){
  Users u=new Users();
  u.setName(name);
  //这时name就为乱码,因此以下操作将不能正常进行
  List<Users> usersList=UsersService.listAllUsers(u);  
  ......
  }
  


  而且这是在加了org.springframework.web.filter.CharacterEncodingFilter的情况下:
 
  <filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
  <param-name>encoding</param-name>
  <param-value>UTF-8</param-value>
  </init-param>
  </filter>
  


  我的解决方法:写个转码的工具类,以便以后要用到的时候就可调用
public class Tools {
    public static String enCodeStr(String str) {
        try {
          return new String(str.getBytes("iso-8859-1"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return null;
        }
    }
}


  这个时候只要把之前的代码改成:
if (name!= null && (name=Tools.enCodeStr(name)) != null){
u.setName(name);
}


  这样便可解决乱码问题了。如果大家有遇到这个问题试试看这个方法,看可不可行。。。
3
2
分享到:
评论
2 楼 luanxiyuan 2014-08-08  
有一个更简便的方法可以解决:
修改tomcat的server.xml文件,将
<Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>
改成:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>
1 楼 夏末忆逝 2012-06-29  
解决办法是这样的,但还是要看看为什么传过来的时候是乱码,尽量减少后台不必要的处理.

相关推荐

Global site tag (gtag.js) - Google Analytics