Java Web开发基础(1)-Servlet

概述

    Servlet技术是对webserver的扩展,要理解这个,可能先了解一下什么是Webserver以及它的功能,特别是它的不足是非常有帮助的,可參考:点击打开链接。另外。Servlet也是一个用java语言的Servlet API编写的特殊的java类。它执行在Servlet容器中。它的功能是分析请求,处理请求,构造响应消息,它本来就处于web服务的线上这也非常easy理解。概念上就这么多了。


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实例被创建,Webserver会自己主动调用init(ServletConfig config)方法来初始化该Servlet。当中方法參数config中包括了Servlet的配置信息。比方初始化參数,该对象由server创建。

<span style="font-size:18px;">        <span style="font-family:FangSong_GB2312;"><servlet>
	       <servlet-name>ClientIdValidateServlet</servlet-name>
	       <servlet-class>com.bjpowernode.drp.util.servlet.ClientIdValidateServlet</servlet-class>
	</servlet>
	<servlet-mapping>
	        <servlet-name>ClientIdValidateServlet</servlet-name>
	        <url-pattern>/servlet/ClientIdValidateServlet</url-pattern>
	</servlet-mapping></span></span></span>
      运行( Service):在服务阶段Webserver会调用该实例的service(ServletRequest request,ServletResponse response)方法。request对象和response对象有server创建并传给Servlet实例。request对象封装了client发往server端的信息。response对象封装了server发往client的信息。


    销毁:Webserver必须保证调用destroy()方法之前。让全部正在执行在该实例的service()方法中的线程退出或者等待这些线程一段时间。

一旦destroy()方法已经执行。Webserver将拒绝全部的新到来的对该Servlet实例的请求,destroy()方法退出,该Servlet实例即能够被垃圾回收。


    总结:Servlet是Java web的核心,对于理解它的工作原理和生命周期是比較重要的。

尽管是看了视频。查了资料。花了近一天的时间,可是感受上还不是特别清晰。

关于怎样定位到Servlet class文件,关于其和容器以及容器和Webserver,应用程序server之间的关系的问题。

都还比較的乱!

原文地址:https://www.cnblogs.com/gcczhongduan/p/5232626.html