zoukankan      html  css  js  c++  java
  • 使用Struts,前台提交给后台的汉字为乱码

    首先产生乱码的根本原因为前台JSP页面和后台Action的编码方式不同!

    • Struts的默认编码方式为UTF-8
    • JSP的默认编码方式为GB18030

    解决方案:

    • 前后台编码方式一致;
    • 结合拦截器的使用;
    • 表单传输方式的指定;

    只用三种方式结合使用才能根本上解决乱码问题。

    1:首先指定前后台编码方式:

    前台:

    <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    后台Struts.xml配置文件:

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

    2:指定拦截器

    可以自己编写拦截器也可以使用Spring提供的拦截器(用于SSH整合)。

    使用Spring提供的拦截器需要在web.xml中添加如下配置:

    <!--配置编码过滤器 -->

    <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>

    <init-param>

    <param-name>forceEncoding</param-name>

    <param-value>true</param-value>

    </init-param>

    </filter>

    <filter-mapping>

    <filter-name>encodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

    </filter-mapping>

    encoding:用来指定一个具体的字符集。

    forceEncoding:Spring的早期版本这个参数作用很单一,当request中已经被指定了一个字符集的时候是否再将用endcoding对应的字符集设置到request中去。举个例子来说明,假如说过滤器该字段被配置为false,当请求被提交之后,过滤器会判断request.getCharacterEncoding()是否为null,如果是null那么就会进行request.setCharacterEncoding("UTF-8")的操作,如果不是null那么过滤器什么也不会做。如果被配置成了true,则每次都会进行request.setCharacterEncoding("UTF-8")的操作。

    3:表单指定传输方式:

    使用表单提交参数的时候一定要显示的指定传输的方式,将其指定为post方式。如果不显示指定传输方式默认为get方式,get方式会将参数拼接在URL中,而编码方式为ISO-8859-1。这种情况下(使用get方式)即使你做到了步骤1和步骤2(即统一了前后台编码方式和设置了拦截器)也仍然会出现汉字乱码的问题。除非你在后台使用如下方式对存储汉字的参数做一下处理:

    String str = new String(name.getBytes("ISO-8859-1"),"UTF-8");

    但是如果存储汉字的参数特别多的话,手工进行转换就很麻烦和得不偿失了。

    所以一定要指定表单传输方式为POST!

     

    综上,乱码的问题就会得以解决。

  • 相关阅读:
    netty源码学习
    大话数据结构读书笔记
    java编程思想读书笔记
    spring依赖注入源码分析和mongodb自带连接本地mongodb服务逻辑分析
    spring的xml的property和constructor-arg的解析
    junit测试用例加载spring配置文件
    (大二下)软件需求分析阅读笔记01
    课后作业——需求分析
    2018年春季个人阅读计划
    软件需求与分析——大二下需会知识点
  • 原文地址:https://www.cnblogs.com/wanggangblog/p/3477525.html
Copyright © 2011-2022 走看看