freemarker页面get型参数转码问题

问题描述

系统为:tomcat, Spring+Spring MVC+freemarker由于tomcat上有许多应用,不能修改connector属性URIEncoding为UTF8,所以freemarker中使用${RequestParameters["fn"]}得到中文字符。我目前的解决办法是在controller里拿到parameter,并转码,然后储存在一个map里,返回到页面上。请问有什么其他办法吗? 问题补充:myali88 写道

解决方案

采用另外一种办法,你看试试行不。你扩展一个HttpServletRequestWrapper 类,在子类里面重载getParameter方法:class ParametersWrapper extends HttpServletRequestWrapper { public String getParameter(String name) { String val = super.getParameter(name);//这里返回的是乱码 //然后你自己通过转码,返回正确的字符 return new String(val.getBytes("iso-859-1") , "xxx");//xxx,你转换的编码 }}然后通过一个过滤器拦截所有请求,对GET请求进行request替换:public class EncodingFilter implements Filter { public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain fc) throws IOException, ServletException { final HttpServletRequest req = (HttpServletRequest) sreq; final HttpServletResponse res = (HttpServletResponse) sres; if (req.getMethod() == "GET") { fc.doFilter(new ParametersWrapper(req), res); }else { fc.doFilter(wrapper, res); }}}
解决方案二:
我觉得也没什么好的办法了,如果你的请求是“GET”的话,encodingFilter对这些参数是不启作用的,除非你能改用“POST”。另外一个方法,就是你用spring的拦截器去拦截${RequestParameters["fn"]}的调用过程,然后转码。不过,这个只是我的想法,没实践过。
解决方案三:
再架一台tomcat

时间: 2025-01-21 15:05:13

freemarker页面get型参数转码问题的相关文章

jsp中页面间传汉字参数转码的方法

 这篇文章主要介绍了jsp中页面间传汉字参数转码的方法,有需要的朋友可以参考一下 转码:a.href="./showCont.jsp?tcontent="+encodeURI(encodeURI(tcontent));   解码:java.net.URLDecoder.decode((String)request.getParameter("tcontent"), "UTF-8");     例   a.jsp源代码 代码如下: <%@ p

jsp接收参数 转码-jsp页面接收的中文被转码为&amp;amp;amp;#xxxxx等信息

问题描述 jsp页面接收的中文被转码为&#xxxxx等信息 用的是strtus2,在后台拼接了一段html代码使用参数传到前台,拼接的部分代码为: 安全巡检安全加固 在前台接收的参数为:<tr><td width='50%' ><input type='checkbox' id='ab1'name='ability' value='1' />安全巡检</td><td width='50%' ><input type='checkbo

mybatis-SpringMVC+Mybatis调用后台报空指针异常,代码没查出错误,页面也有参数传进来,求解答

问题描述 SpringMVC+Mybatis调用后台报空指针异常,代码没查出错误,页面也有参数传进来,求解答 [DEBUG]2015-08-12 11:07:30,234 org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver Resolving exception from handler [public java.util.Map cn.sg.controller.Back

javaweb-jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?

问题描述 jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办? jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?我在doGet方法中设置了response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");所有的编码方式都是utf-8

JS控制静态页面之间传递参数获取参数并应用的简单实例_javascript技巧

在项目中遇到这也一个问题: 有a.html和b.html. 1.a页面已经打开,b页面尚未打开,我希望在a页面设置好一些列参数,比如背景色,宽度等参数,传递给b页面,好让b页面在打开就能应用. 2.a页面已经打开,b页面无论是否打开.在a页面需要获取到b页面的一些元素甚至变量,以便于应用到a页面. 注意:不涉及跨域问题. 想了很久,终于想到了解决方案. 第一个问题,我们可以利用html页面锚点的特性,将参数通过url传递给b页面 这是a页面代码: <button>跳转设置</button

jqueryui-关于前端JQ或JS获取别的页面传来的参数问题。

问题描述 关于前端JQ或JS获取别的页面传来的参数问题. 页面A向页面B 传递参数,可是页面A传递是用JQ的 ajax的Get请求,提交的参数没有在浏览器里面,例如?XXX=A&XXX=C这样子, ,所以页面B就不能用 var URL = document.location.toString(); 这样来获取了 求页面B该 怎么样写才能获取 ? 解决方案 首先你要明确一点, web 中两个页面的独立性是非常大的,里面的代码在两个独立的环境中解析运行,Chrome就干脆一个tab一个进程(基本上就

ASP.NET页面之间传递参数的几种方法

  Asp.net页面之间传递参数的几种方法 第一种方法:通过URL链接地址传递 send.aspx: protected void Button1_Click(object sender, EventArgs e) { Request.Redirect("Default2.aspx?username=honge"); } receive.aspx: string username = Request.QueryString["username"]; 这样可以得到参

利用jquery.qrcode在页面上生成二维码且支持中文

 这篇文章主要介绍了利用jquery.qrcode在页面上生成二维码且支持中文.需要的朋友可以过来参考下,希望对大家有所帮助 实例如下:  代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www

js通过location.search来获取页面传来的参数

  这篇文章主要介绍了通过window.location.search来获取页面传来的参数,经测试是OK的 1function GetQueryString(name) { 2var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i"); 3var r = window.location.search.substr(1).match(reg); 4if (r!=nul