• 彻底解决Spring MVC 中文乱码 问题


    1. 表单提交controller获得中文参数后乱码解决方案

    注意: jsp页面编码设置为UTF-8

    form表单提交方式为必须为post,get方式下面spring编码过滤器不起效果

      1.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

      2.<form action="${ctx}/user/addUser" name="userForm" method="post">  

    修改web.xml,增加编码过滤器,如下(注意,需要设置forceEncoding参数值为true)

     1     <!-- Spring字符集过滤器      建议放前面 不然拦截可能有问题-->
     2     <filter>
     3         <filter-name>SpringEncodingFilter</filter-name>
     4         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     5         <init-param>
     6             <param-name>encoding</param-name>
     7             <param-value>UTF-8</param-value>
     8         </init-param>
     9         <init-param>
    10             <param-name>forceEncoding</param-name>
    11             <param-value>true</param-value>
    12         </init-param>
    13     </filter>
    14     <filter-mapping>
    15         <filter-name>SpringEncodingFilter</filter-name>
    16         <url-pattern>/*</url-pattern>
    17     </filter-mapping>

    注意:

    数据库编码是否支持中文

    数据库表和表字段是否正确


    在配置连接数据库的参数设置修改:

    <property name="url" value="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8"></property

     第一种情况:

    jsp页面中文输入,到controller乱码,这时候需要设置的是在web.xml文件中添加一个编码的过滤器(filter)将编码统一为UTF-8,代码如下:

    Web.xml配置文件:

        <!-- Spring字符集过滤器      建议放前面 不然拦截可能有问题-->
        <filter>
            <filter-name>SpringEncodingFilter</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>SpringEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

     第二种情况:

    数据库中文数据,jsp页面显示乱码(不是严格意义上的乱码,而是以问号的形式呈现)

    由于我们前后台的数据交互使用的是json数据,出现这种情况的原因我也不太清楚,之前也没遇到过,只能怪自己做过的项目太少,解决起来也不困难,只需要在转json的时候设置一下编码格式就可以了,代码如下:

      response.setContentType("application/json;charset=UTF-8");//防止数据传递乱码
     

      produces = "application/json;charset=utf-8"(springmvc)

    3、以上两步有时只能解决post方式传递参数乱码问题,get方式还是出现乱码,则就需要该tomcat的配置文件了,打开tomcat的server.xml文件,找到以下行

    1 <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    在上面行中插入URIEncoding="UTF-8",改成如下形式:

    1 <Connector URIEncoding="UTF-8"  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
  • 相关阅读:
    【java】报错could not find the main class,program will
    CSS3——阴影
    SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
    SSO单点登录系列3:casserver端配置认证方式实践
    [转载] jQuery Mobile 开发 Web App 系列文章目录
    SHELL基本语法2
    SHELL编程基本语法
    如何写批处理文件
    LINUX shell-快速参考[一]
    Shell中的引号,反引号,双引号,反斜杠
  • 原文地址:https://www.cnblogs.com/hy-space/p/7507548.html
Copyright © 2020-2023  润新知