1.什么是Servlet
- Servlet是一个继承HttpServlet类的Java类
- Servlet必须部署在web服务器端,用来处理客户端的请求
2.Servlet运行过程
- Web Client 向Servlet容器(Tomcat)发出Http请求
- Servlet容器接收Web Client的请求
- Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
- Servlet容器创建一个HttpResponse对象
- Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
- HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。(Servlet的service方法中)
- HttpServlet调用HttpResponse对象的有关方法,生成响应数据。(Servlet的service方法中)
- Servlet容器把HttpServlet的响应结果传给Web Client。
如果想要分别相应客户端的GET和POST请求,需要重写HttpServlet对象的doGet和doPost方法,如果所有请求的相应都是一样的,则只需要重写service方法即可。
3.Servlet的创建
创建Servlet实例有两个时机:
- 客户端第一次请求某个Servlet时,容器创建该Servlet实例(大部分Servlet都是以这种方式创建)。
- Web应用启动时立即创建Servlet实例,即load-on-startup Servlet。
关于load-on-startup参数:
- load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
- 它的值必须是一个整数,表示servlet应该被载入的顺序
- 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
- 当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
- 正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
- 当值相同时,容器就会自己选择顺序来加载。
4.Servlet的生命周期
- 实例化:容器创建Servlet对象
- 初始化:调用Servlet的init()方法
- 服务:调用Servlet实例的service()方法来处理请求
- 销毁:容器删除Servlet实例(调用Servlet实例的destroy()方法)
5.Servlet的配置
为了让Servlet响应客户端的请求,还必须将Servlet配置在web应用中,配置Servlet时,需要修改web.xml文件。
<servlet> <servlet-name>ServletDemo</servlet-name> <servlet-class>cn.dragon.servlet.ServletDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemo</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping>
其中servlet-name属性的值必须一致才能保证响应客户端请求。
6.Servlet与JSP
JSP的本质就是Servlet,我们将编写好的JSP文件部署在web容器中之后,web容器会将JSP编译成对应的Servlet。
如果Servlet要生成表现层页面时,所有的HTML标签都需要使用Servlet的输出流来输出,繁琐且不利于美工人员修改。
在标准的MVC模式中,Servlet仅作为控制器使用,而JSP仅作为表现层技术使用:
- M:Model,即模型,对应JavaBean。
- V:View,即视图,对应JSP。
- C:Controller,即控制器,对应Servlet。
参考:
http://www.cnblogs.com/xdp-gacl/p/3760336.html
http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html
http://www.cnblogs.com/goody9807/archive/2007/06/13/782519.html
http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html
转载请注明出处
时间: 2024-10-29 19:09:42