文章目录 1、Servlet的概念 2、Servlet的快速入门 3、Servlet的执行原理 4、Servlet的生命周期 4.1 指定Servlet的创建时机 4.2 Destroy方法 1、
文章目录
- 1、Servlet的概念
- 2、Servlet的快速入门
- 3、Servlet的执行原理
- 4、Servlet的生命周期
- 4.1 指定Servlet的创建时机
- 4.2 Destroy方法
1、Servlet的概念
- Servlet是Server和Applet的这两个单词的组合,即运行在服务器上的小程序。
- Servlet就是一个接口,定义了Java类被浏览器访问到的规则。
- Java程序员自定义一个类,实现Servlet接口并重写接口中的方法,Web服务器(如Tomcat等)就可以识别并执行这个程序。
2、Servlet的快速入门
- 创建JavaEE项目
- 定义一个类,实现Servlet接口,实现接口中的方法
* 定义一个实现Servlet接口的类
*
* @author zhuhuix
* @date 2020-08-23
*/
public class ServletDemo implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
// Demo服务
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet!!!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
- 在web.xml配置Servlet
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置Servlet -->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>demo.servlet.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
- 运行
- 访问http://localhost:8080/servlet_war_exploded/demo路径
3、Servlet的执行原理
4、Servlet的生命周期
- 例子
// 在Servlet被创建时执行,只会执行一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init...");
}
// 获取Servlet配置
@Override
public ServletConfig getServletConfig() {
return null;
}
// 提供服务的方法
// 每一次Servlet被访问时执行,执行多次
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service...");
}
// 获取Servlet的一些信息
@Override
public String getServletInfo() {
return null;
}
// 销毁方法
// 在web服务器正常关闭时执行,只执行一次
@Override
public void destroy() {
System.out.println("destroy...");
}
- 生命周期图
4.1 指定Servlet的创建时机
- 在服务器启动时就创建
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置Servlet -->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>demo.servlet.ServletDemo</servlet-class>
<!-- 指定Servlet的创建时机
1.在服务器启动时就创建,load-on-startup配置为0或正值
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
- 第一次被访问时才创建
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置Servlet -->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>demo.servlet.ServletDemo</servlet-class>
<!-- 指定Servlet的创建时机
2.第一次被访问时创建,load-on-startup配置为负值
-->
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
</web-app>
- 注意点: Servlet的init方法中尽量不要定义成员变量。
4.2 Destroy方法
- 只有服务器正常关闭时,才会执行Destroy方法
- Destroy方法在Servlet销毁之前执行,一般用于释放资源。