六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 425|回复: 0

Java Web开发基础(1)-Servlet

[复制链接]
 楼主| 发表于 2014-11-4 15:01:32 | 显示全部楼层 |阅读模式
Java Web开发基础(1)-Servlet
概述    Servlet技术是对web服务器的扩展,要理解这个,可能先了解一下什么是Web服务器以及它的功能,特别是它的不足是很有帮助的,可参考:点击打开链接。另外,Servlet也是一个用java语言的Servlet API编写的特殊的java类,它运行在Servlet容器中。它的功能是分析请求,处理请求,构造响应消息,它本来就处于web服务的线上这也很容易理解。概念上就这么多了。
Servlet容器    容器负责管理Servlet类,其内容包括:匹配Servlet,执行Servlet生命周期等。容器和Servlet的关系呢就像饭店和厨师,厨师可以分为什么湘、闽、川、中式糕点等,这就相当于一个一个的Servlet类,顾客通过服务员(Request)点餐,然后饭店再根据点餐需求去找到对应的厨师(Servlet)来做菜,然后厨师做好了菜通过传菜生(Response)交给顾客。容器大概也就是相当于饭店做的内容了, 定位厨师,管理厨师。下面看一下Tomcat容器的结构,如图(图片作者许令波)。

生命周期    Servlet的生命周期需要经过创建、初始化、执行、销毁四个阶段,这四个阶段都是有Servlet容器来管理的。整个执行的流程如下图所示。这里因为Servlet是单实例多线程的,所以针对请求先要检查实例是否存在。下面详细分析一下生命周期的各个阶段。

    创建:关于Servlet实例何时创建有两种情况,在默认情况下Servlet实例是在第一个请求到来的时候创建。或者是通过配置文件来设置它在容器启动时就实例化。只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码:<loadon-startup>1</loadon-startup> 。这里的的值表示的是Servlet实例化的顺序。
    初始化: 一旦Servlet实例被创建,Web服务器会自动调用init(ServletConfig config)方法来初始化该Servlet。其中方法参数config中包含了Servlet的配置信息,比如初始化参数,该对象由服务器创建。
  1. <span style="font-size:18px;">        <span style="font-family:FangSong_GB2312;"><servlet>
  2.                <servlet-name>ClientIdValidateServlet</servlet-name>
  3.                <servlet-class>com.bjpowernode.drp.util.servlet.ClientIdValidateServlet</servlet-class>
  4.         </servlet>
  5.         <servlet-mapping>
  6.                 <servlet-name>ClientIdValidateServlet</servlet-name>
  7.                 <url-pattern>/servlet/ClientIdValidateServlet</url-pattern>
  8.         </servlet-mapping></span></span></span>
复制代码
  执行( Service):在服务阶段Web服务器会调用该实例的service(ServletRequest request,ServletResponse response)方法,request对象和response对象有服务器创建并传给Servlet实例。request对象封装了客户端发往服务器端的信息,response对象封装了服务器发往客户端的信息。
    销毁:Web服务器必须保证调用destroy()方法之前,让所有正在运行在该实例的service()方法中的线程退出或者等待这些线程一段时间。一旦destroy()方法已经执行,Web服务器将拒绝所有的新到来的对该Servlet实例的请求,destroy()方法退出,该Servlet实例即可以被垃圾回收。
    总结:Servlet是Java web的核心,对于理解它的工作原理和生命周期是比较重要的。虽然是看了视频,查了资料,花了近一天的时间,但是感受上还不是特别清晰。关于如何定位到Servlet class文件,关于其和容器以及容器和Web服务器,应用程序服务器之间的关系的问题。都还比较的乱!
摘自:http://blog.csdn.net/zhuojiajin/article/details/34195903

Java Web开发基础(1)-Servlet

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表