IDEA使用Maven创建webapp骨架无法创建Servlet文件与无法使用@WebServlet实现注解问题解决

目录

问题一(无法创建Servlet文件)

问题一解决:

问题二(创建好的Servlet文件并不能使用@WebServlet实现注解配置)

问题二解决:

实现@WebServlet注解


使用Maven创建web工程(使用webapp骨架)

问题一(无法创建Servlet文件)

一路next之后,这时我们需要创建第一个servlet,却发现自己无法创建Servlet文件(问题一),WTF!

问题一解决:


使用快捷键 Ctrl + Shift + Alt + S  打开项目结构或按如下操作:

这时我们发现可以创建Servlet文件了


问题二(创建好的Servlet文件并不能使用@WebServlet实现注解配置)

当然,这好解决,最让人无语的是:当你创建完之后体会默认在web.xml文件中对你的Servlet进行配置,而并非创建的是一个@WebServlet注解。问题二

原因:

在使用Maven骨架创建web项目时,默认选择创建webapp:1.4版本,由于在早期的web工程中并不支持@WebServlet注解配置,也不支持El表达式(在web 3.0版本之后才支持),所以在默认创建的webapp骨架使用Servlet 时想使用@WebServlet进行url-pattern配置是不能够完成的。


问题二解决:

  • 找到本地仓库目录路径:D:\repo
  • 依次打开:D:\repo\org\apache\maven\archetypes\maven-archetype-webapp\1.4

  • 找到 maven-archetype-webapp-1.4.jar 这个jar包
  • 使用压缩软件打开:archetype-resources\src\main\webapp\WEB-INF不要解压缩

  • 打开web.xml文件,里面是这样的

  • 找到本地Tomcat目录路径,依次打开:D:\Tomcat 9.0.24\apache-tomcat-9.0.24\webapps\ROOT\WEB-INF

  • 我们需要将Tomcat中web.xml里的部分配置复制粘贴到Maven骨架webapp的那个web.xml文件中

  • 即上述内容复制粘贴到Maven骨架webapp的那个web.xml文件中

并添加一行:metadata-complete="false"           (very important)

保存退出,压缩软件提示是否把更改内容压缩到文件中,选择是!

实现@WebServlet注解

在Maven工程中的pom.xml文件中导入依赖

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

导入依赖后重新加载Maven变更即可!

@WebServlet注解正常使用

posted on 2020-07-27 13:21  青山是谁  阅读(109)  评论(0编辑  收藏  举报