【servlet】META-INF/services javax.servlet.ServletContainerInitializer 不起作用,不响应断点

本文主要探讨了在使用IDEA和Maven构建Servlet3.0项目时,ServletContainerInitializer不生效的问题。原因在于META-INF/services/javax.servlet.ServletContainerInitializer文件的位置需要正确放置于资源根目录,以便打包时包含在内。此外,文章提到了IDEA设置资源根目录的重要性,以及不同方式创建项目时目录结构的影响。通过解决这个问题,作者强调了理解Tomcat启动时扫描服务初始化器的机制,以及正确配置IDEA和Maven打包选项对于项目运行的关键性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


我的是maven构建的,打包的话,是将src/main/resrouces目录作为资源根目录,需要把META-INF/services/javax.servlet.ServletContainerInitializer放到这个文件下,后面才能打包的时候将其放到打包的里面根目录,才能生效。

【因为原文定义的,就是扫描根目录下META-INF/services/javax.servlet.ServletContainerInitializer定义的实现ServletContainerInitializer接口的全类名,实现特性功能,至于idea可能需要将resource设置问资源根目录,eclipse也同样也是需要设置】

 

【下面就是简单的sevlet3学习回顾了,到是与题目无关了。】


复习基础知识,把相对古老的JSP的servlet学习一下。此片也不仅仅解答题目中的异常问题(虽然花了大半天终于解决了,但感觉还是摸不着头脑。),整体做一下学习记录。

java8+Tomcat7 +servlet3.0。简单学习项目

idea切换没多久,按照JSP的官方文档servlet3.0,有ServletContainerInitializer接口方法onStartup 实现 Shared libraries / runtimes pluggability(共享库/运行插件)功能的东西。

这个也是对应后续Spring中注解对Java EE中ApplicationContext的onStartup的东西运用。


idea我弄了两种创建工程:

方式一:new project-->Java Enterprise 默认next,然后选上Servlet(idea2020.2默认就是4.0.1了后续测试servlet3以上的都有ServletContainerInitializer这个接口实现的特性)

这种方式呢会多出其它的pom中依赖,后续改成servlet3也是没有问题。此方式,自动生成webapps目录在的在 src/main下,webapps目录下所有文件都会打包部署到tomcat安装目录的webapps目录下。

 

方式二:这是我直接maven创建空项目,然后project上右键 add Framework Support只勾选个Web Application(4.0),然后手动添加pom中的servlet依

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值