我从事java上的休息服务工作。该服务包括Spring mvc模型。它工作正常,但是当我在 url 中使用 Russian char х 时,我有 404 并且 Controller 中的 spring 方法不运行。我使用 url 编码传输此数据。
localhost:8080/x/test
服务代码:
@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)并检查 URIEncoding。
Jetty默认为UTF-8,更多信息:https://wiki.eclipse.org/Jetty/Howto/International_Characters
您还必须在 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>
关于java - Spring REST 服务不会因 URL 中的某些符号而触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27273777/