spring mvc 参数乱码url带参数为什么乱码weblogic

String name=&张三&;
//两次进行编码
name=java.net.URLEncoder.encode(name,&UTF-8&);
name=java.net.URLEncoder.encode(name,&UTF-8&);
url=&/test/search.do?name=&+name+&&&+//
一下是controller内的相应
@RequestMapping(&/search.do”)
public String search(@RequestParam(&name&)String name, @RequestParam(&id&)int id)
& & & &name=java.net.URLDecoder.decode(name,&UTF-8&);//此时name是张三
& & & &....................
& & & &原因分析:在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,然后由处理页面进行再次解码,所以需要使用两次URLEncoder.encode方法。
& & & & 第一次是把中文编码成%xy的格式; 第二次是对%xy中的%进行编码,%编码成%。客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次java.net.URLEncoder.encode并在服务器中使用java.net.URLDecoder.decode  今天在springmvc遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次URLEncoder。encode编码方式,乱码问题就解决了。
& & & & 当然,不管在js中,还是后台,只是调用的编码解码函数不同而已,问题解决原理,却是一样的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1850次
排名:千里之外SpringMVC(4)
今天自己动手搭建SpringMVC框架,搭建完成后测试时,在浏览器输入测试地址http://localhost:8090/springMvc/helloWorld.do?USERNAME=测试,出现中文乱码。
通常比较简单的解决方法是在web.xml文件中加入如下配置:
&!-- 过滤器,用来将请求的字符统一转化成 UTF-8 编码 --&
&filter-name&CharacterEncoding&/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&
&!-- forceEncoding用来设置是否理会 request.getCharacterEncoding()方法,设置为true则强制覆盖之前的编码格式 --&
&init-param&
&param-name&forceEncoding&/param-name&
&param-value&true&/param-value&
&/init-param&
&!-- 过滤器,用来将请求的字符统一转化成 UTF-8 编码 --&
&filter-mapping&
&filter-name&CharacterEncoding&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
但是加入该配置后乱码问题没有得到解决,后来发现因为在浏览器直接输入地址,是发起的get请求。但是上面的过滤只会对post起作用,这时候就需要修改tomcat安装目录下的server.xml,找&Connector port=&8080& /&,在里面加uRIEncoding=&utf-8&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:739次
排名:千里之外
(2)(1)(2)(3)解决Spring MVC中传值乱码的问题
解决Spring MVC中传值乱码的问题
1。乱码的解决通过过滤器来解决乱码,Spring MVC中提供CharacterEncodingFilter来解决post乱码
配置过滤器:
&filter-name&encode&/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-mapping&
&filter-name&encode&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&解决get乱码的方式:
第一种修改tomcat的配置文件:server.xml
&Connector connectionTimeout=&20000& port=&8088& protocol=&HTTP/1.1& redirectPort=&8443& &span style=&color:#FF6666;&&URIEncoding=&UTF-8&&/span&/&
第二种自定义乱码解决的过滤器。
2.restful风格的url
优点:轻量级、安全、效率高
//http://localhost:8088/SpringMvcData/999/delete.do
@RequestMapping(&/{id}/delete&)
public String delete(@PathVariable int id){
System.out.println(id);
return &index.jsp&;
}3.同一个controller通过参数调用不同的方法:
访问url:http://localhost:8088/SpringMvcData/delete.do?method=add
代码:(其中还可以指定get方式或者是post方式请求,不写默认都可以)
@RequestMapping(params=&method=add&, method=RequestMethod.GET)
public String add(){
System.out.println(&add&);
return &index.jsp&;
我的热门文章
即使是一小步也想与你分享<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 spring mvc get 乱码 的文章

 

随机推荐