我的是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依