Tomcat运行SSM项目报错:请求的资源[/employee/list]不可用

问题:

运行SSM项目,访问URL时显示:

类型 状态报告 消息 请求的资源[/employee/list]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

1:前提:

确认Root + Web容器配置没有问题
确定 添加了ComponentScan,能扫描到所有的Controller + Service + mapper

确定浏览器访问路径无误

(如果只是返回json,不需返回试图的话)确认 Controller添加了@ResponseBody注解。否则会自动去找对应的静态视图,就会报错资源不存在。

2:排查:

(1)在Controller中第一句添加输出语句,发现在访问响应URL的时候,并没有输出。

——> 得出:DispatcherServlet没有按照这个url找到对应的handler(即Controller方法)

因此考虑是配置问题,即handlermapping不正确,因此无法匹配url和handler的对应关系

而handlermaping是自动配置的,不需手动实现。因此考虑是SSM项目没有正确加载Web容器的配置类。

(2)为了验证想法,在Web配置类第一句加入启动时的log日志输出:

@Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
        System.out.println("MyWebAppInitializer is initialized");
    }

但是在重新运行项目的时候,控制台并没有输出。

——> 因此确认是没有加载配置类

(3)关键

在确保MyWebAppInitializer 和 配置类没有问题;且没有额外配置web.xml,导致和配置类的内容冲突等错误后,考虑时Tomcat的问题。

先去项目的 pom.xml下查看依赖:

如果存在依赖: jakarta.jakartaee-web-api,则表示本项目用的Servlet是属于jakarta下的。

而Tomcat 10 开始支持 Jakarta EE。如果你使用的是 Tomcat 9 或更早版本,它们使用的是 javax 命名空间,不兼容 jakarta 命名空间的 Servlet 配置。

——> 因此终极解决方法:将Tomcat升级到 10.

升级后重新运行,问题即可解决。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值