java - Spring REST 服务不会因 URL 中的某些符号而触发

标签 java spring rest spring-mvc tomcat7

我从事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/

相关文章:

java - Spring data cassandra 中的自定义编解码器读取问题

java - 如何自动将 Dropwizard Metrics @Timed 添加到 Spring Boot 应用程序中的所有 API 方法中?

javascript - Node 和 Express : How to implement basic webhook server

java - Maven 构建 web.xml 中的 Access-Control-Allow-Origin header 设置

java - Google Admin SDK Directory API (Java) 中的 members.list()

Java静态 block 引用另一个类中的静态变量

java - 如何在 MongoDB 中加密字段

java - REST API 版本控制

java - 无键时从 HashMap<String, String> 返回

未找到 Java -cp 类