index.html没有显示(不支持请求方法'GET')

时间:2018-02-22 18:32:45

标签: java spring-boot

注意:可以在此处找到代码:https://github.com/silentsnooc/ema-server

所以,我正在清理一个非常混乱的项目,我尝试提供静态内容以及一个小的REST API。但是,应用程序与其他任何应用程序一样启动:

@SpringBootApplication
public class Server {
    public static void main(String[] args) {
        SpringApplication.run(Server.class, args);
    }
}

REST API适用于我,但Web客户端不适用。我已将Web客户端资源移至src/main/resources/static/

enter image description here

但是,如果我访问http://localhost:8080我得到的是405(不支持请求方法'GET')。

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
    at org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:207) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:374) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:314) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:61) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:352) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1145) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:936) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) [spring-webmvc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
...

我不明白遗漏了什么 - 也许我的文件夹结构错了?

如果您需要我方提供更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

如前所述,here @RestController本身已注明@ResponseBody,这使得RequestMapping方法的响应成为其返回值。在您的情况下,这是您在网络浏览器中看到的index.html字符串。

@RestController替换@Controller注释应该可以解决问题。

至于你的错误,你有另一个类WordEmbeddingRestController,它定义了" /"的映射。同样," /" (或""确切地说)是默认路径值。从此类中删除@RestController注释将使您能够获取所需的html文件。

忽略这一点,GET是默认方法,如果指定了

编辑:

您必须为每个方法添加要支持的方法@RequestMapping注释。有关详细信息,请参阅this。举个例子:

@RequestMapping(path = "/", method = RequestMethod.GET)
public String index() {
    return "index.html";
}

您可以使用@RequestMapping@GetMapping等速记注释,而不是使用@PostMapping显式方法。使用这些可以将你的代码减少到这样:

@GetMapping("/")
public String index() {
    return "index.html";
}