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> * */ } }
相关文章推荐
- 介绍一款信息管理系统的开源框架---jeecg
- jQuery plugin items filter
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 全国哀悼日网站页面变成灰色的filter方法
- Orace查询数据出现乱码的问题解决思路
- oracle em 按钮乱码解决办法及em网页变成英文
- 用css filter做鼠标滑过图片效果
- C#读取中文文件出现乱码的解决方法
- mysql命令提示行连接乱码的解决
- 解决Java程序使用MySQL时返回参数为乱码的示例教程
- Jquery乱码的一次解决过程 图解教程
- 解决realplayer11中文正式版网页右键乱码问题embed_cn.dll