嵌入式Jetty + Spring:HTTP POST任意改为GET

时间:2016-06-16 21:25:08

标签: java spring spring-mvc jetty embedded-jetty

Spring版本:4.2.6.RELEASE 码头版本:9.3.9.v20160517

我有一个带有SpringMVC的嵌入式Jetty服务器,配置如下:

package test;

public class WebServer {
    public static void main(String[] args) throws Exception {
        AnnotationConfigWebApplicationContext spring = new AnnotationConfigWebApplicationContext();
        spring.scan("test");

        DispatcherServlet servlet = new DispatcherServlet(spring);
        ServletHolder servletHolder = new ServletHolder(servlet);
        servletHolder.setName("spring");

        ServletContextHandler springHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
        springHandler.setContextPath("/endpoint");
        springHandler.addServlet(servletHolder, "/*");
        springHandler.setErrorHandler(null);
        springHandler.addEventListener(new ContextLoaderListener(spring));

        Server server = new Server(9290);
        server.setHandler(springHandler);
        server.setStopAtShutdown(true);
        server.start();
        server.join();
    }
}

我也有这个控制器:

package test;

@RestController
public class AController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ResponseEntity<String> testGet() {
        return new ResponseEntity<>("GET response", null, HttpStatus.OK);
    }

    @RequestMapping(value = "/", method = RequestMethod.POST)
    public ResponseEntity<String> testPost() {
        return new ResponseEntity<>("POST response", null, HttpStatus.OK);
    }
}

当我向localhost:9290/endpoint发出POST时,testGet()方法已执行,因为我正在接收GET response

但是,如果我将POST发送到localhost:9290/endpoint/(注意结尾处的斜杠),则会按预期执行testPost()方法。

这是Jetty还是Spring bug?我希望接收404或testPost()方法而不是testGet方法。

0 个答案:

没有答案