[catalog]
1. Dynamic Web Module,Tomcat,JDK 三者对应关系
2. 什么是Archetype,WEB-INF 文件夹
3. 创建Maven-Web项目
4.【每日一面】folder,source folder,package三者的关系
1. Dynamic Web Module与Tomcat对应关系
dynamic web module version | tomcat version | jdk version | web socket criterion |
---|---|---|---|
2.2 | 3.3 | 1.1 | not support |
2.3 | 4.1 | 1.3 | not support |
2.4 | 5.5 | 1.4 | not support |
2.5 | 6.0 | 5 | not support |
3.0 | 7.0 | 6 | 1.1 |
3.1 | 8.0 | 7 | 1.1 |
4.0 | 9.0 | 8 | 1.1 |
2. 什么是 Archetype
Archetype 是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供了一个一致的生成Maven工程的方式。Archetype会帮助作者给用户创建Maven工程模板,并给用户提供生成相关工程模板版本的参数化方法。
- 常用的两个模板
1.maven-archetype-quickstart
默认的Archetype,快速创建一个基本项目,内容包括:
一个包含junit依赖声明的pom.xml
src/main/java主代码目录及一个名为App的类
src/test/java测试代码目录及一个名为AppTest的测试用例
2.maven-archetype-webapp
一个最简单的 Maven war 项目模板,生成的项目内容包括:
一个packaging为war且带有junit依赖声明的pom.xml
src/main/webapp/目录
src/main/webapp/index.jsp文件
src/main/webapp/WEB-INF/web.xml文件
- WEB-INF 文件夹
大家都知道该目录下面的文件是不能直接在浏览器下访问的,只能是Java文件调用访问。
web-inf 是Java web的安全目录 ,之所以说他安全是因为客户端不可以访问,只有服务器端可以访问,如果想在客户端访问,也不是不可能,在web.xml文件中对要访问的文件进行映射配置就OK了。
3. 创建Maven Web 项目
新建项目快捷键 Alt+Shift+N 选择 Maven Project,注意不要跳过模板选择,也就是不要打上勾,直接下一步。
搜索"org.apache.maven"找到下面的模板,一个最简单的Maven war项目模板。会帮我们生成一个packaging为war且带有junit依赖声明的pom.xml、src/main/webapp/目录、index.jsp文件和web.xml文件。下一步。
输入Group Id和Artifact Id,点击"Finish"完成创建。
Group Id 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
Artifact Id 是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
发现我们的项目有很多错误,看错误描述:新生成工程默认的jdk和compiler是1.7的但我们使用的JRE是11的。并且jsp还缺少 “javax.servlet.http.HttpServlet” 类。这是因为网上的web模板太旧了,使用的web.xml是2.3版本的,jre用的1.7
选中项目 Alt+Enter 进入到项目属性中,点击"Project Facets"把Dynamic Web Module 和 Java 这两项的勾去掉,点击应用,关闭。
回到Eclipse界面,发现项目中网络模块和Java模块已经没了,只剩下静态资源,下面的报错说,找不到解析类。先不去管它。
选中项目 Alt+Enter 进入到项目属性中,点击"Project Facets"把Dynamic Web Module 改为 4.0 Java 的版本改为 11,然后这两项的勾打上,不要着急下一步,点击下面出来的黄框,需要做进一步的设置。
我们的目录结构为 src/main/java,默认的src要remove掉
Add Folder 重新设置文件夹,改成正确的路径,下一步
配置网络模块的路径,默认的WebContent也已经不对了,改为正确的 src/main/webapp,并把下面的勾打上,会帮我们自动生成web.xml文件。设置好点"OK",应用并关闭。
回到Eclipse界面,这时候我们的项目已经正确出现了Dynamic Web Module 4.0
去解决 “javax.servlet.http.HttpServlet” 这个问题,项目右键,点击"Build Path"进行设置,去添加依赖库。
发现目录结构不全,完整的目录结构应该包含四个,这个待会再添加。
- src/main/java
- src/main/resources
- src/test/java
- src/test/resources
切换到"Library"依赖库,JRE要编辑一下
修改为工作空间默认的JRE,点击"Finish",返回到"Build Path"界面,点击"Add Library"添加依赖库,这块我忘截图了,相信你能找到。
选择"Server Runtime",下一步。
选择 “Apache Tomcat v9.0” 点击 “Finish”
配置后的依赖如图
回到项目,补全目录结构。
项目右键New → Source Folder,把缺少的全部补全。
补全后的完整项目结构
到这里还不行,需要修改一下 web.xml 和 pom.xml,修改为4.0版本和JDK11编译版本
【web.xml】
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0">
<display-name>Archetype Created Web Application</display-name>
</web-app>
【pom.xml】
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ITGodRoad</groupId>
<artifactId>DigIntoSpringMVC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>DigIntoSpringMVC Maven Webapp</name>
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>DigIntoSpringMVC</finalName>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
改完又报错了,因为和之前的编译版本不一样有冲突了,需要更新一下依赖
项目右键 → Maven → Update Project
等待下载完成后,切换到"Server"视图,右键 Tomcat 服务器 → 添加部署项目
选中我们的项目,点击"Add"部署完项目后,点击"Finish"
启动我们的项目
打开浏览器,输入"http://localhost:8080/DigIntoSpringMVC/"
唰~(高级转场特效)
【每日一面】
folder,source folder,package三者的关系
folder,source folder,package在eclipse中都是文件夹的意思,任何类型的文件都可以往这三种文件夹里放。
folder:是普通的文件夹,和我们 windows 下使用的文件夹没有任何区别,作用就是对文件进行管理。
source folder:是用来存放Java源代码的,其下的所有Java源文件都会被时时编译成 class 文件。对于 JavaSE 项目会被编译到项目的bin目录下,对于JavaEE项目会被编译到相应的/WEB-INF/classes文件夹中。(bin文件夹和classes文件夹都不会在IDE中显示)sourceFolder靠"/"来进行上下级划分。
package:是一种特别的文件夹,他的特别之处在于:它必须存在于 source folder 下面,当建立一个 package 时,会自动建立到 source folder 下。它的路径最后组成了每一个类的包路径名,package靠"."来进行上下级划分。
package、folder 之间相互转换
package 转成 folder 显示:选中package, build path-> Exclude
folder 转成 package 显示:选中folder,build path-> Include
package、source folder 之间相互转换
package 转成 source folder 显示:选中package,build path-> Use as Source folder
source folder 转成 package 显示:选中folder,build path-> Remove from BuildPath