码迷,mamicode.com
首页 > 其他好文 > 详细

初始Servlet

时间:2015-02-26 21:42:33      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

 

 1.什么是Servlet?

   可以把它理解为一个小程序,该程序运行在服务器端,用来处理客户端发送过来的请求。

   例如:

      1.获取请求数据:登录的时候,Servlet就需要获取到用户输入的用户名和密码;

      2.处理请求:Servlet获取到用户密码后,就需要进行相应的处理

      3.响应请求:对于登录来说,Servlet需要给浏览器响应,登录成功或失败


 2.Servlet的原理

   有了对Servlet一定的基础,下面来看一下Servlet运行原理。在Tomact中是如何找到Servlet的呢?

   当用户在客户端访问Servlet时,是通过Servlet在Tomact的web.xml文件配置的访问路径放问的。下面通过一张图来看一下。




技术分享


  根据上图我们来分析一下,具体流程如下。

  (1)服务器根据客户端的访问路径,获得Servlet的访问路径。

  (2)服务器通过获得的路径去web.xml中进行匹配,其中在这个过程中需要对web.xml进行解析

  (3)匹配成功后,会找到相应的<servlet-class>标签,这是关键所在,其值为Servlet类名,可以通过反射获取该Servlet的class对象

  (4)然后调用Class对象的newInstance()方法,实例化一个Servlet对象。在此一定要为Servlet提供一个无参数的构造方法。

  (5)利用反射获得Service()方法的Method对象,然后调用service方法,这样就可以实现了service方法的执行。


3.Servlet生命周期

 有了对Servlet实现原理的介绍,我们来看一下,Servlet整个生命周期的运作。

 技术分享



 

 4.Servlet中相关接口和类

 技术分享

  注意:其中我们经常用的是继承的HttpServlet

 

5.Servlet的线程安全

 通过了解Servlet的生命周期,我们可以得出以下几点

 (1)客户端不同的请求会对应不同的Servlet

 (2)每个Servlet都是独一无二的

 (3)服务器端会保存多个Servlet,来处理不同的请求

  通过这几点我们知道,一个Servlet对应一个Servlet实例,也就是说Servlet是单实例的,那么就有可能出现一个Servlet同时处理多个不同的请求,这时就可能造成线程不安全,解决办法通常如下:

   1.不用在servlet中创建成员变量,可以创建局部变量

   2.如果要创建成员变量,必须保证是无状态的成员变量

   3.如果创建的有状态的成员变量,状态必须是只读的。

初始Servlet

标签:

原文地址:http://blog.csdn.net/luckyzhoustar/article/details/43955775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!