1、servlet的生命周期
1.1、servlet规范规定,所有的servlet必须实现javax.servlet.Servlet接口。
1)、第一次调用时,将执行初始化方法:init(ServletConfig)
2)、第一次调用时,都将执行 service(ServletRequest,ServletResponse)方法
3)、服务器关闭,或项目移除:destory()方法
1.2、JavaEE规范中提供Servlet接口实现类:
GenericServlet:通用servlet实现。没有实现servie。
HttpServlet:与Http协议有关的实现。实现service方法,完成与http协议有关的操作。
request.getMethod() 获得请求方法(get、post)
如果是get,将调用doGet()
如果是post,将调用doPost()
1.3、生命周期:就是一个对象从创建到销毁的过程。
1.4、Servlet生命周期:Servlet从创建到销毁的过程。
* 何时创建:用户第一次访问Servlet创建Servlet的实例(单实例)
* 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候。
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行。任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法。 在service方法内部根据请求的方式不同调用doXXX的方法。(get请求调用doPost)。当Servlet中服务器中移除掉,或者关闭服务器,servlet的实例就会被销毁,那么destory方法就会执行。
2、servlet的相关的配置
2.1、启动时创建Servlet
Servlet默认是在第一次访问的时候创建的,现在让Servlet在服务器启动的时候创建好,进行对servlet的配置:
在web.xml中在<servlet></servlet>标签中配置:
*<load-on-startup>2</load-on-startup> ---传入正整数,整数越小,被创建的优先级就越高
2.2、url-pattern的配置
url-pattern配置方式共有三种:
1、完全路径匹配:以 / 开始
2、目录匹配:以 / 开始,需要以 * 结束
3、扩展名匹配:不能以 / 开始,以 * 开始的。
4、缺省路径 /
通常情况访问html页面时,首先从当前web项目的web.xml文件寻找匹配路径,如果没有找到,再从tomcat默认的web.xml匹配,将使用缺省servlet
tomcat获得匹配路径时,优先级顺序:1 > 2 > 3 > 4
有如下的配置:
<servlet>
<servlet-name>Demo02Servlet</servlet-name>
<servlet-class>com.klh.servlet.Demo02Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo02Servlet</servlet-name>
<url-pattern>/demo02Servlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Demo03Servlet</servlet-name>
<servlet-class>com.klh.servlet.Demo03Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo03Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Demo04Servlet</servlet-name>
<servlet-class>com.klh.servlet.Demo04Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo04Servlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
如果访问地址:
http://localhost:8080/test/Demo02Servlet 第一个
http://localhost:8080/test/aaa.do 第二个
***** 完全路径匹配 > 目录匹配 > 扩展名匹配
2.3、开发中的路径的编写
1、相对路径:都是需要找位置相对关系。不能以 / 开始的。
* ./ 当前路径 ../上一级目录
*使用相对路径访问
* http://localhost:8080/test/demo01.html
* http://localhost:8080/test/Demo04Servlet
2、绝对路径:不需要找位置相对关系。以 / 开始的。
*绝对路径中分为客户端和服务器端路径:
* 客户端路径一定要加工程名。 /test/Demo04Servlet
* 服务器端路径不需要加工程名。 /Demo04Servlet