如题,温故而知新!
环境:IDEA + tomcat8.5 + mysql8.0.19 + jdk8
一、创建项目
首先,创建web项目,具体步骤见https://blog.csdn.net/jesonjoke/article/details/78276714(前三步)。
二、实现Servlet(接口)
先看下目录结构:
(1)在cn.com包下创建HelloServlet.java
package cn.com;
import javax.servlet.*;
import java.io.IOException;
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("调用init方法!");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("调用service方法!");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("调用destroy方法!");
}
}
(2)配置 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>标签,表示在web服务器上配置了一个Servlet程序-->
<servlet>
<!--<servlet-name>标签,给配置的Servlet程序起一个唯一的名字-->
<servlet-name>HelloServlet</servlet-name>
<!--<servlet-class>标签,标签配置全类名(路径)-->
<servlet-class>cn.com.HelloServlet</servlet-class>
</servlet>
<!--<servlet-mapping>标签,标签请求地址-->
<servlet-mapping>
<!--name唯一,区分请求地址给哪个Servlet程序使用-->
<servlet-name>HelloServlet</servlet-name>
<!--<url-pattern>标签,表示请求地址-->
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>
(3)运行tomcat,会进入主页面http://localhost:8080/ServletDemo/,展示的为index.jsp。在地址栏后加上请求地址
/HelloServlet后会将HelloServlet实例化。运行时注意修改tomcat配置中的Application context为“/项目名”。
三、url到servlet的访问细节
①通过ip地址定位访问网络中的哪台服务器
②由端口号决定访问服务器上的哪个程序(本例为Tomcat)
③工程路径决定了访问Tomcat上的哪个工程
后面如图所示。
四、Servlet的生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
- Servlet 通过调用 init () 方法进行初始化。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
运行tomcat(实例化HelloServlet时),我们可以看到执行了init和service方法,但刷新页面只会运行service方法,关闭tomcat,destroy方法被调用,该servlet被销毁:
![](https://img-blog.csdnimg.cn/20200516145824555.png)
![刷新页面两次](https://img-blog.csdnimg.cn/20200516145919216.png)
![](https://img-blog.csdnimg.cn/20200516150227297.png)