Java 春季休息服务不提供';在URL中使用某些符号触发t
我在java上使用rest服务。此服务包括SpringMVC模型。它工作正常,但当我在url中使用俄语字符时,我有404,而控制器中的spring方法没有运行。我用url编码传输数据 本地主机:8080/x/test 服务代码:Java 春季休息服务不提供';在URL中使用某些符号触发t,java,spring,rest,spring-mvc,tomcat7,Java,Spring,Rest,Spring Mvc,Tomcat7,我在java上使用rest服务。此服务包括SpringMVC模型。它工作正常,但当我在url中使用俄语字符时,我有404,而控制器中的spring方法没有运行。我用url编码传输数据 本地主机:8080/x/test 服务代码: @RequestMapping(value = "{id}/test", method = RequestMethod.GET) @ResponseBody public String getListOfResources(HttpServletRequ
@RequestMapping(value = "{id}/test", method = RequestMethod.GET)
@ResponseBody
public String getListOfResources(HttpServletRequest request, HttpServletResponse httpServletResponse, @PathVariable(value = "id") String id) {
System.out.println(test);
}
我认为您必须查看server.xml中的配置(如果使用Tomcat)并检查编码。 Jetty默认为UTF-8,更多信息:
您还必须在web.xml中定义UTF-8,一个如下所示的过滤器:
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
字符编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
字符编码滤波器
/*
问题出在tomcat中的文件server.xml中:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTf-8"/>
俄文字符可能对URL无效。请参阅以获取有效字符。谢谢您的回答,但它不适用于我。