org.springframework.web.servlet.PageNotFound - No mapping for GET|POST xxx

异常出现的背景:

SSM项目向服务器发送get请求后404错误。服务器打印错误:

org.springframework.web.servlet.PageNotFound - No mapping for GET|POST xxx

下面只给出关键代码:

index.jsp:
 

<a href="${pageContext.request.contextPath}/demo.action">访问服务器</a>

web.xml:

<url-pattern>*.action</url-pattern>

springmvc.xml :

<property name="prefix" value="/admin/"/>
<property name="suffix" value=".jsp"/>

DemoAction.java:

@Controller
public class DemoAction {
    @RequestMapping(value="/demo")
    public String demo(){
        System.out.println("GET请求");
        return "main";// 可以直接跳转到/admin/main.jsp页面上。
    }
}

异常出现的原因:

No mapping for GET xxx
对于请求的路径没有正确的映射,也就是说路径肯定是有错误的。


问题的解决:
@RequestMapping映射路径要写后缀,前端请求的是/demo.action,这里就要写@RequestMapping("/demo.action")。


注意:我这里使用的是tomcat10+JDK19,maven依赖用的是jakarta.servlet-api 6.0.0版本,版本不同会影响路径的编写。有些版本的@RequestMapping的路径不需要写后缀.action【直接就是@RequestMapping("/demo")】,这是我这个问题出现的根本原因。这个问题我看了网上好多说法,说url-pattern路径写错和prefix、suffix路径拼接错误的比较多,说版本不匹配导致404的很少。路径写错比较好改,版本不匹配出错这个比较难发现。

ps:log4j查bug很好用。

转载请说明出处内容投诉
CSS教程_站长资源网 » org.springframework.web.servlet.PageNotFound - No mapping for GET|POST xxx

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买