Servlet小结
前言
Servlet是JAVA Web的底层技术,有着很重要的地位。下面分几点简单总结下:
- 1、Servlet家族
- 2、Servlet–HelloWorld!
- 3、Servlet生命周期
Servlet家族
上图是Servlet家族类图,其中可以看出HttpServlet继承自GenericServlet,GenericServlet继承自HttpServlet。它们的结构如下:
可以看出Servlet的结构非常简单,仅仅定义了init()
、service
、desdroy
三个控制生命周期的方法,GenericServlet对Servlet
进行了一些拓展,增加了log()
、getInitParameter()
等方法,HttpServlet对GenericServlet又进行了拓展,增加了Http协议的相关方法。
Servlet–HelloWorld!
- 在tomcat中新建一个web应用
hello
,在web应用中新建一个WEB-INF/classes
目录。 - 在
classes
目录新建一个MyServlet
。
|
|
- 编译,
javac -cp %CATALINA_HOME%/lib/servlet-api.jar -d . MyServlet.java
,参考这篇博客 - 在
WEB-INF
目录中新建一个web.xml
文件,配置servlet
的对外访问路径。 - 启动tomcat访问。
Servlet生命周期
先上一张图:
解读:
- 浏览器发送http请求到Servlet容器(假设为Tomcat)。
- Tomcat根据请求找到对应的Web应用。
Web应用里的web.xml里的配置找到请求对应的Servlet,如:
12345678910<servlet><servlet-name>mvc-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><url-pattern>/</url-pattern></servlet-mapping>得到servlet.class的字符串内容。
- Tomcat通过反射构造servlet对象。
- Tomcat调用servlet构造方法,servlet对象执行构造方法。
- Tomcat创建ServletConfig对象,并调用servlet的init()方法,servlet执行init()方法。
- Tomcat创建request和response对象,并调用servlet的service()方法,servlet执行service()方法。
- servlet返回修改过的response给Tomcat。
- Tomcat将返回的response对象渲染成相应格式并发送给浏览器。
- servlet调用destroy方法,servlet被销毁。