Eri*_*rik 10 spring spring-mvc java-ee
我在GET请求中使用spring mvc和special chars时遇到问题.请考虑以下方法:
@RequestMapping("/update")
public Object testMethod(@RequestParam String name) throws IOException {
}
Run Code Online (Sandbox Code Playgroud)
例如,我向其发送名称中包含"ä"(德语变音符号)的GET请求.它导致弹簧接收"¤",因为浏览器将"ä"映射到%C3%A4.
那么,我怎样才能获得正确的编码字符串?
谢谢你的帮助!
小智 44
您遇到此问题,因为请求区分了正文编码和URI编码.CharacterEncodingFilter设置主体编码,但不设置URI编码.
您需要将URIEncoding ="UTF-8 "设置为Tomcat server.xml中所有连接器中的属性.请参见:http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html
或者,您也可以设置useBodyEncodingForURI ="True".
如果你正在使用maven tomcat插件,只需添加以下参数:
mvn -Dmaven.tomcat.uriEncoding = UTF-8 tomcat:运行
那这个呢?它有帮助吗?
在您的web.xml中:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>com.example.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<servlet-name>dispatcher</servlet-name>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
com.example.CharacterEncodingFilter:
public class CharacterEncodingFilter implements Filter {
protected String encoding;
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
request.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void destroy() {
encoding = null;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24394 次 |
| 最近记录: |