【Head First Servlets and JSP】笔记3:Servlet的生命周期
2017-05-14 11:28
771 查看
1、servlet的存在就是要为客户服务。servlet的任务就是得到一个用户的请求,再发回一些响应。
请求可能很复杂,也可能很简单,例如,“为我的购物车结账”,这个请求携带了一些重要的数据,你必须知道如何获取这些数据;相应的,响应也可能需要携带一些东西,你必须知道怎样把这些附加信息写入响应。
servlet既可以直接输出响应给Web容器,也可以转发请求给JSP
2、Web容器(例如Tomcat)全盘控制着servlet的一生。
用户点击一个URL,这个URL指向一个servlet
容器“看出”URL指向一个servlet,于是创建两个对象:HttpServletRequest、HttpServletResponse
容器为对应的servlet创建线程,并将两个对象传入service(HttpServletRequest req, HttpServletResponse resp)
service方法根据客户发过来的HTTP方法(GET、POST等)调用servlet的对应方法(doGet(HttpServletRequest req, HttpServletResponse resp)、doPost(HttpServletRequest req, HttpServletResponse resp)等)
servlet通过响应对象将响应写给客户,容器传回响应给客户。
service()线程结束,保留或是清理响应的对象,客户得到响应。
3、mark 一下tomcat的官方文档 Servlet API Documentation 以及head first系列 Head First (book series)
4、HttpServlet的继承树、接口
java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
MyServlet
All Implemented Interfaces:java.io.Serializable, Servlet, ServletConfig
Servlet接口:包括三个生命周期方法
GenericServlet:抽象类,包括大部分基本servlet行为,基本不扩展这个类
HttpServlet:强调servlet的HTTP特性
MyServlet:覆盖所需的HTTP方法,例如doPost等
5、每个请求都在一个单独的线程运行(不是进程),servlet类不会有多个实例![b]servlet类不会有多个实例![/b]
6、servlet类的加载和实例化到底是什么时候开始的?基本上是在容器启动时,有例外,但是一定是在第一个客户请求提供服务之前。
7、在init()之前,还只是个普通的对象,当且仅当一个对象具备“servlet特性”的时候,才能被称作servlet
8、在构造函数和init()之间,servlet处于一种 介于生与死之间的状态 Schrödinger's cat - Wikipedia
9、ServletConfig和ServletContext。每一个servlet都有一个ServletConfig对象,用处就是字面上的意思;每个Web应用都有个ServletContext(应该叫做AppContext),相当于应用中的一个公告栏。
10、最后,servlet的真正任务是处理请求,这才是servlet存在的意义,请求和响应是其中的关键。
请求可能很复杂,也可能很简单,例如,“为我的购物车结账”,这个请求携带了一些重要的数据,你必须知道如何获取这些数据;相应的,响应也可能需要携带一些东西,你必须知道怎样把这些附加信息写入响应。
servlet既可以直接输出响应给Web容器,也可以转发请求给JSP
2、Web容器(例如Tomcat)全盘控制着servlet的一生。
用户点击一个URL,这个URL指向一个servlet
容器“看出”URL指向一个servlet,于是创建两个对象:HttpServletRequest、HttpServletResponse
容器为对应的servlet创建线程,并将两个对象传入service(HttpServletRequest req, HttpServletResponse resp)
service方法根据客户发过来的HTTP方法(GET、POST等)调用servlet的对应方法(doGet(HttpServletRequest req, HttpServletResponse resp)、doPost(HttpServletRequest req, HttpServletResponse resp)等)
servlet通过响应对象将响应写给客户,容器传回响应给客户。
service()线程结束,保留或是清理响应的对象,客户得到响应。
3、mark 一下tomcat的官方文档 Servlet API Documentation 以及head first系列 Head First (book series)
4、HttpServlet的继承树、接口
java.lang.Object
javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
MyServlet
All Implemented Interfaces:java.io.Serializable, Servlet, ServletConfig
Servlet接口:包括三个生命周期方法
GenericServlet:抽象类,包括大部分基本servlet行为,基本不扩展这个类
HttpServlet:强调servlet的HTTP特性
MyServlet:覆盖所需的HTTP方法,例如doPost等
5、每个请求都在一个单独的线程运行(不是进程),servlet类不会有多个实例![b]servlet类不会有多个实例![/b]
6、servlet类的加载和实例化到底是什么时候开始的?基本上是在容器启动时,有例外,但是一定是在第一个客户请求提供服务之前。
7、在init()之前,还只是个普通的对象,当且仅当一个对象具备“servlet特性”的时候,才能被称作servlet
8、在构造函数和init()之间,servlet处于一种 介于生与死之间的状态 Schrödinger's cat - Wikipedia
9、ServletConfig和ServletContext。每一个servlet都有一个ServletConfig对象,用处就是字面上的意思;每个Web应用都有个ServletContext(应该叫做AppContext),相当于应用中的一个公告栏。
10、最后,servlet的真正任务是处理请求,这才是servlet存在的意义,请求和响应是其中的关键。
相关文章推荐
- 【Head First Servlets and JSP】笔记2:MVC迷你教程
- 【Head First Servlets and JSP】笔记15:建立一个JSP页面来显示被访问了多少次
- 【Head First Servlets and JSP】笔记 25:JSTL 参考
- 【Head First Servlets and JSP】笔记
- 【Head First Servlets and JSP】笔记6:什么是响应首部 & 快速搭建一个简单的测试环境
- 【Head First Servlets and JSP】笔记14:session再探 & Listener示例
- 【Head First Servlets and JSP】笔记1
- 【Head First Servlets and JSP】笔记5:HttpServletResponse resp
- Head First Servlet and JSP 笔记 JSP 部分 (未完待续)
- 【Head First Servlets and JSP】笔记9:属性的作用域、线程安全
- 【Head First Servlets and JSP】笔记16:JSP隐式对象(内置对象)的映射关系
- 【Head First Servlets and JSP】笔记20:EL以及<jsp:useBean ....>的补充
- 【Head First Servlets and JSP】笔记22:直接从请求到JSP & 获取Person的嵌套属性
- 【Head First Servlets and JSP】笔记21:从有脚本到无脚本
- 【Head First Servlets and JSP】笔记17:JSP所生成的servlet相关问题
- 【Head First Servlets and JSP】笔记11:cookie
- 【Head First Servlets and JSP】笔记18:JSP指令
- Head First Servlet and JSP 笔记(前三章)
- 【Head First Servlets and JSP】笔记 27: web 应用安全
- 【Head First Servlets and JSP】笔记 26: web 应用部署