首页 > 代码库 > 从有码到无码
从有码到无码
想歪的直觉面壁去,不想见到你。大师说了:心中无码,自然高清。
言归正传。
环境:
- tomcat7,jdk6
- spring+springmvc+mybatis
- maven
问题:有CharacterEncodingFilter,controller处理get请求乱码。
controller:
@Controllerpublic class SearchController { @RequestMapping(value = "http://www.mamicode.com/s/{k}.html", method = RequestMethod.GET) public String search(@ModelAttribute("k") @PathVariable String k) { System.out.println("k=" + k); return "search/search"; }}
页面获取:
<div class="form-group"> <input type="text" class="form-control" style="width: 450px;" name="k" id="k" placeholder="客官想搜点什么?番号~哈希码~" value="http://www.mamicode.com/${k }"/></div>
网上查了下,比较靠谱的解决方案是修改tomcat中的server.xml配置,在connector节点里增加配置:useBodyEncodingForURI="true" URIEncoding="UTF-8"
;
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
URIEncoding和useBodyEncodingForURI区别是:
- URIEncoding是对所有GET方式的请求的数据进行统一的重新编码,
- 而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码
按照这个方法修改之后:
OK,没有问题!于是我找jsp空间商修改配置,这货是这么说的:
身为一个有钱的技术人员,怎能被钱财这种铜臭味困扰!
于是我自己搜集资料,重新改了下代码,在controller里边重编码:
controller:
@Controllerpublic class SearchController { @RequestMapping(value = "http://www.mamicode.com/s/{k}.html", method = RequestMethod.GET) public String search( @PathVariable String k, HttpServletRequest request) { String key = EncodingUtil.encodeStr(k); request.setAttribute("key", key); return "search/search"; }}
EncodingUtil:
public class EncodingUtil { public static String encodeStr(String str) { try { return new String(str.getBytes("ISO-8859-1"), "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return null; } }}
好了问题解决了。
可是这明显不是那货说的无敌运行的方法,哪个大神有更好的方法呢?欢迎赐教!!!
从有码到无码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。