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很好用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡『』

最不值钱的便是钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值