您的位置:首页 > 编程语言 > Java开发

JAVA_OA(五)(番外篇):SpringMVC乱码解决(post,get)

2016-06-05 14:41 435 查看

get:字符转换: 

1).xxx =new String(name.getBytes("iso8859-1"),"utf-8");

2).web.html中<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>(不建议)

post:

1).利用Spring的过滤器.

2).修改DispatcherServlet,使其具有filter的功能

public class cra {
public String login(HttpServletRequest req){
/*
* 解决编码问题,我们分为两种 情况
* 第一种  get请求的乱码问题
* get请求的快速解决方法是:
*
*或者服务器的server.xml中的
*Connector标签中添加URIEncoding="utf-8(也就是设置端口的那一个标签).
*如下
*<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>
*
*
* 但是这样写有个很大的麻烦,就是会导致服务器中所有的get全变utf-8,这样可能会影响其他人的代码,
* 所以建议在并非所有的GET都需要utf-8时,还是利用=new String(name.getBytes("iso8859-1"),"utf-8")来解决比较好
*
* 下面是例子
*/

String id=req.getParameter("id");
String name=req.getParameter("name");
String name1="";
try {
name1=new String(name.getBytes("iso8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(id);
System.out.println(name);
System.out.println(name1);
return "Hello";

/*
* 第二种 post请求的乱码问题
* 这个在SpringMVC中比较简单,只需要自动调用其过滤器就好了

例子:

<!-- 使用Filter解决中文乱码问题 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
<!-- jar包显示问题,运行正常  -->
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
*
*
* 不过,本人也听说过一种貌似更牛逼的黑科技(下面的内容摘自nivana999的博客):
因为使用spring mvc的时候,已经在web.xml中设置了servlet:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
*
* 故而---》直接改一下DispatcherServlet这个类,
* 使它具有修改编码的功能。写一个新的类,继承自DispatcherServlet,
* 代码如下:
package com.mocha.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.DispatcherServlet;

public class EncodingDispatcherServlet extends DispatcherServlet {
private String encoding;

public void init(ServletConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
super.init(config);
}

protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding(encoding);
super.doService(request, response);
}
}

* 然后是web的配置
*
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>com.mocha.servlet.EncodingDispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet><pre name="code" class="java"><span style="white-space:pre">	</span> <servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
*
*/

}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息