一、概述
1、Servlet规范中规定:
(1)一个合格的webapp应该是一个固定的目录结构
(2)一个合格的webapp的配置文件位置固定
(3)一个合格的webapp的配置文件名固定
(4)一个合格的webapp中java程序存放位置固定
二、开发一个带有Servlet的webapp
1、开发步骤
(1)第一步:在webapps目录下新建一个目录,起名crm(这个crm就是webapp的名字)
注意:起这只是项目名,但crm就是这个webapp的根
(2)第二步:在crm目录下(webapp的根下)新建一个目录:WEB-INF
注意:这个名字是Servlet规范中规定的,必须全部大写,必须一模一样!
(3)第三步:在WEB-INF目录下新建一个目录:classes
注意:这个名字是Servlet规范中规定的,必须全部大写,必须一模一样!,这里存放的是字节码文件
(4)第四步:在WEB-INF目录下新建一个目录:lib
注意:(1)这个目录不是必须的,但是一个webapp中需要第三方的jar包时,这个jar包必须放在这个目录下。
(2)名字必须一模一样,Servlet规范规定!
(5)第五步:在WEB-INF目录下新建一个文件:web.xml
注意:
(1)这个文件是必须的,这个文件名必须叫做web.xml。一个合法有效的webapp,web.xml文件时必须的。
(2)web.xml是一个配置文件,在这个配置文件中描述了请求路径和Servlet类之间的对照关系
(3)web.xml最好从已有的webapp中拷贝,最好别手写。
所需代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
</web-app>
(6)第六步:编写一个java程序
注意:
(1)这个java程序也不能随意编写,这个java程序必须实现Servlet接口!
(2)Servlet接口不在JDK中,应为Servlet属于JavaEE,是另一套类库。
(3)Tomcat服务器遵循Servlet规范,所以Tomcat服务器中有这个接口,在C:\dev\apache-tomcat-10.0.20\lib目录下
(4)java源代码的位置可以任意,但是编译之后生成的字节码文件必须在classes中
(7)第七步:编译Java程序
注意:
(1)配置Path环境变量:C:\dev\apache-tomcat-10.0.20\lib\servlet-api.jar【如果不配置,导包会报错,找不到对应包名】
(8)第八步:将以上编译好的字节码文件放入classes目录中
(9)第九步:在web.xml文件中编写配置信息,让“请求路径”和“Servlet类名”关联。
注:
(1)这一步的专业术语描述:在web.xml文件中注册Servlet类
代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
<!--servlet描述信息-->
<!--任何一个servlet都对应一个servlet-mapping-->
<servlet>
<servlet-name>hello</servlet-name>
<!--这个位置必须是带有包名的全限定类名-->
<servlet-class>com.mytest.servlet.HelloServlet</servlet-class>
</servlet>
<!--servlet映射信息-->
<servlet-mapping>
<!--这里随意填写,但是名字必须与上方相同-->
<servlet-name>hello</servlet-name>
<!-这里需要一个路径,必须以/开始,可以随便写-->
<url-pattern>/sdafs/sada/ds</url-pattern>
</servlet-mapping>
</web-app>
(10)第十步:启动Tomcat服务器
(11)第十一步:打开浏览器,在这个浏览器地址栏上输入RUL
注意:
(1)这个URL的请求路径必须是和web.xml文件中的url-pattern一致
(2)浏览器上的请求路径和web.xml文件中的url-pattern唯一区别:浏览器上的请求路径带项目名(crm)
(12)第十二步(非必须):浏览器上编写的路径太复杂,可以使用超链接
注意:
(1)html页面只能放到WEB-INF目录外面
(13)注意:Tomcat服务器负责调用main方法,Tomcat启动时执行的就是main方法,我们只需要编写Servlet接口的实现类,然后注册到web.xml中即可。
三、关于JavaEE的版本(了解即可)
1、JavaEE目前最高版本是JavaEE8,但是JavaEE被Oracle捐献给Apache了。而Apache把JavaEE换名了,新名字叫做Jakarta EE。
2、JavaEE8升级之后的“JavaEE9”,不再是JavaEE9了,而是JakartaEE9。
3、JavaEE8之前对应的包名是:javax.servlet.Servlet
4、JakartaEE9对应的包名是:jakarta.servlet.Servlet
5、老项目如果还是使用javax.servlet.Servlet,那么这个项目就不能直接部署到Tomcat10+版本上,只能部署到Tomcat9-版本上。因为包名不一样,找不到了。