Skip to content

Use Maven to create Web projects

虽然我们已经可以在Tomcat上部署我们的前端页面了,但是依然只是一个静态页面(每次访问都是同样的样子),那么如何向服务器请求一个动态的页面呢(比如显示我们访问当前页面的时间)这时就需要我们编写一个Web应用程序来实现了,我们需要在用户向服务器发起页面请求时,进行一些处理,再将结果发送给用户的浏览器。

注意:这里需要使用终极版IDEA,如果你的还是社区版,就很难受了。

我们打开IDEA,新建一个项目,选择Java Enterprise(社区版没有此选项!)项目名称随便,项目模板选择Web应用程序,然后我们需要配置Web应用程序服务器,将我们的Tomcat服务器集成到IDEA中。配置很简单,首先点击新建,然后设置Tomcat主目录即可,配置完成后,点击下一步即可,依赖项使用默认即可,然后点击完成,之后IDEA会自动帮助我们创建Maven项目。

Screenshot 2024-05-01 at 15.42.22

Screenshot 2024-05-01 at 15.42.34

Screenshot 2024-05-01 at 15.42.55

Screenshot 2024-05-01 at 15.44.30

Version 最新的不匹配的话往下降

创建完成后,直接点击右上角即可运行此项目了,但是我们发现,有一个Servlet页面不生效。

需要注意的是,Tomcat10以上的版本比较新,Servlet API包名发生了一些变化,因此我们需要修改一下依赖:

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>

Screenshot 2024-05-01 at 15.46.22

注意包名全部从javax改为jakarta,我们需要手动修改一下。

Screenshot 2024-05-01 at 15.52.39

感兴趣的可以了解一下为什么名称被修改了:

Eclipse基金会在2019年对 Java EE 标准的每个规范进行了重命名,阐明了每个规范在Jakarta EE平台未来的角色。

新的名称Jakarta EE是Java EE的第二次重命名。2006年5月,“J2EE”一词被弃用,并选择了Java EE这个名称。在YouTube还只是一家独立的公司的时候,数字2就就从名字中消失了,而且当时冥王星仍然被认为是一颗行星。同样,作为Java SE 5(2004)的一部分,数字2也从J2SE中删除了,那时谷歌还没有上市。

因为不能再使用javax名称空间,Jakarta EE提供了非常明显的分界线。

  • Jakarta 9(2019及以后)使用jakarta命名空间。
  • Java EE 5(2005)到Java EE 8(2017)使用javax命名空间。
  • Java EE 4使用javax命名空间。

我们可以将项目直接打包为war包(默认),打包好之后,放入webapp文件夹,就可以直接运行我们通过Java编写的Web应用程序了,访问路径为文件的名称。

Screenshot 2024-05-01 at 15.53.31

Screenshot 2024-05-01 at 15.54.10

Screenshot 2024-05-01 at 16.03.20

出现这个问题是java版本问题, java 改成 11+ 可running

Screenshot 2024-05-01 at 16.44.05

https://stackoverflow.com/questions/60353491/unrecognized-option-add-opens-hyperledger-besu

对于Java 8 适用于tomcat 9 而不是10

Screenshot 2024-05-01 at 16.49.23

Screenshot 2024-05-01 at 16.50.01

删除index.jsp, and then restart tomcat

Screenshot 2024-05-01 at 16.51.03

Screenshot 2024-05-01 at 16.55.06

Screenshot 2024-05-01 at 16.56.10

Screenshot 2024-05-01 at 16.56.18

进行打包:

Screenshot 2024-05-01 at 16.57.27

Copy WebTest-1.0-SNAPSHOT.war) to Tomcat webapps :

Screenshot 2024-05-01 at 16.59.15

终端里启动

Screenshot 2024-05-01 at 17.02.06

Screenshot 2024-05-01 at 17.02.24

Screenshot 2024-05-01 at 17.03.14

Screenshot 2024-05-01 at 17.03.34

tomcat 启动的时候自动解压包了