• struts2中关于jsp页面向action传值出现乱码问题


    在JSP页面输入中文并传给后台的时候,常常会出现乱码问题,产生乱码的原因:java在进行传值的时候,默认用的是iso-8859-1的编码形式进行传输,而我们jsp页面常用的则是utf-8的编码形式。所以,两者不对应,在解析的时候就出现乱码现象。

      有以下几种解决方案

    一:在struts.xml文件中添加

      <constant name="struts.i18n.encoding" value="utf-8"></constant>

      注:这里value="urt-8"指的是页面的编码格式,如果页面的编码格式是GBK,则写GBK

    二:在Action中重新转码:利用.new String(name.getBytes("iso-8859-1"),"utf-8");

      例:this.name= new String(name.getBytes("iso-8859-1"),"utf-8");

      注:这里的name是从页面传过来的参数,只要在这里重新转码就可以了,另外,这里的utf-8依然是页面的编码格式。

      但每次都这样转,太麻烦了,因此可以写一个工具类,将乱码转成utf-8

    public class Tools{
    //提供一个方法,将乱码转化成utf-8

    public static String getNewString(String input){
    String result = "";
    try{
    result = new String(input.getBytes("iso-8859-1"),"utf-8");
    }catch(Exception e){
    e.printStackTrace();
    }
    return result;
    }

    在用的时候直接调用就行了:userName = Tools.getNewString(name);

    三:就是在tomcat中修改server.xml, 个人不推荐这得方法,其一:不稳定,其二:在工作中修改服务器的配置文件不是一件容易的事情,所以这里就不举例说明。

    四:CharacterEncodingFilter的使用,但这个东西不是万能的,但有时候没有它就会很麻烦,所以还是加上,以防万一,但需要说明一点:这个filter只对post请求有效, get请求一律忽略。例:在web.xml中如下配置:

    <!--字符编码--> 
     <filter>
      <filter-name>CharacterEncodingFilter</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>
     <filter-mapping>
      <filter-name>CharacterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping>

  • 相关阅读:
    RAID技术
    敏捷开发
    如何写出高质量的代码?现在知道还不晚
    Java大型互联网架构技术经验
    Chrome精品插件
    2018 java BAT最新面试宝典
    Java成神之路(2018版)
    三分钟读懂摘要算法
    我的Mac应用清单
    事务隔离级别
  • 原文地址:https://www.cnblogs.com/likeju/p/4772632.html
Copyright © 2020-2023  润新知