Web.servlet.PageNotFound - 没有 GET 映射

Posted

技术标签:

【中文标题】Web.servlet.PageNotFound - 没有 GET 映射【英文标题】:Web.servlet.PageNotFound - No mapping for GET 【发布时间】:2020-07-30 23:54:41 【问题描述】:

我正在学习 Spring boot + MVC 的工作原理。我可以在屏幕上显示一条消息,但我不能修改样式。 js e css 文件不与 Spring 映射。

2020-04-17 14:38:29.169  WARN 9552 --- [nio-8080-exec-3] o.s.web.servlet.PageNotFound             : No mapping for GET /js/main.js
2020-04-17 14:38:29.169  WARN 9552 --- [nio-8080-exec-2] o.s.web.servlet.PageNotFound             : No mapping for GET /css/main.css
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController 

     @GetMapping("/")
        public String index() 
            return "index";
        

        @PostMapping("/hello") 
        public String sayhello(@RequestParam("name") String name, Model model) 
            model.addAttribute("name", name);
            return "hello";
        

        @GetMapping("/helloworld", "/helloname")
        public String hello(Model model, @RequestParam(value="name", required=false, defaultValue="WORLD") String name) 
            model.addAttribute("name", name);
            return "helloname";
        

我尝试修改 application.properties 中的路径,但没有任何改变。

spring.mvc.view.prefix = /WEB-INF/view/
spring.mvc.view.suffix = .jsp
spring.mvc.static-path-pattern = /resources/**

这是我的jsp页面。当我运行这个页面时,我收到了我之前发布过的错误消息

<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en">
<head>

<link rel="stylesheet" type="text/css"
 href="webjars/bootstrap/3.3.7/css/bootstrap.min.css" />
<c:url value="/css/main.css" var="jstlCss" />
<link href="$jstlCss" rel="stylesheet" />

</head>
<body>
 <div class="container">
  <header>
   <h1>Spring MVC + JSP + JPA + Spring Boot 2</h1>
  </header>
  <div class="starter-template">
   <h1>Users List</h1>
   <table
    class="table table-striped table-hover table-condensed table-bordered">
    <tr>
     <th>Date</th>
     <th>Device</th>
   <!--   <th>Amount</th>
     <th>OEE</th> -->
    </tr>
    <c:forEach items="$OEE" var="oee">
     <tr>
      <!-- <td>$oee.oeeID.date</td>
        <td>$oee.oeeID.device</td> -->
        <td>$oee.amount</td>
        <td>$oee.oee</td>
     </tr>
    </c:forEach>
   </table>
  </div>

 </div>

 <script type="text/javascript"
  src="webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>

</html>

【问题讨论】:

你能添加你的配置类吗 抱歉,您指的是哪个配置类?在我的示例中,我只有 hellocontroller 类、application.properties 和带有 @SpringBootApplication 注释的主类、我把它放在我的帖子中的 jsp 页面,没有别的 【参考方案1】:

使用这个

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer 
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
        registry.addResourceHandler("/resources/**")
          .addResourceLocations("/resources/"); 
    


【讨论】:

以上是关于Web.servlet.PageNotFound - 没有 GET 映射的主要内容,如果未能解决你的问题,请参考以下文章

org.springframework.web.servlet.PageNotFound - 请求方法'POST'不支持http状态405

org.springframework.web.servlet.PageNotFound - 没有为带有 URI 的 HTTP 请求找到映射

尝试设置spring servlet时出现“WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP

得到错误作为 org.springframework.web.servlet.PageNotFound handleHttpRequestMethodNotSupported

org.springframework.web.servlet.PageNotFound noHandlerFound spring

o.s.web.servlet.PageNotFound - Request method 'POST' not supported 的一种可能