一个、什么是Servlet

Servlet是一种在server端执行的java编写的程序,是依照Servlet规范编写的一个java类。

二、Servlet的工作过程

如图所看到的:为了实现客户与server端的动态交互,须要一个遵循HTTP协议的server端应用软件,来处理客户的各种请求,并将结果发送给client。

三、Servlet的生命周期

Servlet的生命周期是由Servlet的容器(比如:tomcat)来控制的;生命后期分为载入类及创建实例。初始化;服务;销毁

1、载入类及创建实例

在默认情况下,Servlet实例是在第一个请求到来的时候创建,即输入url的时候创建。以后复用。可是也能够通过配置文件进行设置參数:<load-on-startup>值</load-on-startup>;当中值默觉得负数。当设置为大于等于0的数值时,则在tomcat启动的时候载入创建实例。

2、初始化

一旦Servlet实例被创建,webserver会自己主动调用init(ServletConfig
config)方法来初始化该Servlet,当中方法參数config中包括了Servlet的配置信息。以下说一下该怎样配置Servlet的初始化參数:

在web.xml中该Servlet的定义标记中,比方:

  <servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.tgb.Test.TestServlet</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB18030</param-value>
</init-param>
</servlet>
<servlet-mapping> <servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/TestServlet</url-pattern>
</servlet-mapping>

<servlet-name>:sevlet对象的名称。

<servlet-class>:创建servlet对象须要载入的类

<init-param>:初始化

<param-name>:參数名称

<param-value>:參数值

<load-on-startup>:创建servlet对象的时机以及顺序

<servlet-mapping><servlet-name>要与

<servlet><servlet-name>名称一致。

<url-pattern>:client訪问url地址。

3、服务

初始化成功后,该Servlet实例就能够被server用来服务client提出的请求并响应,在服务阶段server会调用该实例的Service(ServletRequest
request, ServletResponse response)方法,两个參数由server创建并传给Servlet实例。当中request对象封装了client发往server端的信息。response对象则封装了server发往client的信息。

4、销毁

当web应用被终止时。Servlet容器会先调用Servlet对象的destrory()方法,然后再销毁Servlet对象,同一时候也会销毁与Servlet对象相关联的ServletConfig对象。我们能够在destroy方法的实现中释放Servlet所占用的资源。

须要注意的是,Servlet的生命周期中,Servlet的初始化和销毁阶段值会发生一次,而Service方法运行的次数则取决于client訪问的次数。

四、Servlet的线程安全问题

Servlet是单实例多线程的。假设存在能够改动的成员变量将会出现线程安全问题。

使用Servlet最好保证Servlet是无状态的,也就是没有能够改动的成员变量。

总结:如今的感觉是,Servlet用起来非常easy。可是让我非常清楚的描写叙述什么是Servlet,和Servlet的原理还有些困难,这篇博客说明了Servlet一些简单的原理,希望会对以后使用Servlet有非常好额帮助。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

JAVA学习 分析Servlet的更多相关文章

  1. 【java学习】Servlet简单的表单程序(一)

    此文用于java学习,在此小记. 在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识.(Servlet的相关知识摘抄自http://blog.csdn.net/jiuq ...

  2. Java学习之Servlet篇

    <JAVA遇见HTML——Servlet篇> Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命 ...

  3. java学习笔记—Servlet技术(11)

    如果大家要开发一个动态的网站,那么就必须要学习一种动态的网页开发技术.那么在SUN提供的JavaEE中主要包含两种开发动态网页的技术:Servlet和JSP技术. Servlet技术简介 Servle ...

  4. java学习之Servlet

    0x00前言 Servlet就是一个接口我们需要写一个类然后去实现Servlet,就可以被服务器识别到.request是用来接受客户端传过来的参数,respone是用来响应客户端的页面.我们所用的容器 ...

  5. Java Web基础 --- Servlet 综述(理论篇)

    摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Ser ...

  6. Java学习路线图分析

     Java学习路线分析图 第一阶段 技术名称 技术内容 J2SE(java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置, ...

  7. 初学Java Web(4)——Servlet学习总结

    经过一段时间的学习,对于Servlet有了新的不一样的见解,在这里做一下总结,将近来学习到的知识总结一下. Servlet 的请求流程 浏览器发出请求:http://localhost:80/xxx1 ...

  8. Java学习---RMI 技术分析[Hessian]

    一.什么是Hessian Hessian 是一个基于 binary-RPC 实现的远程通讯 library.使用二进制传输数据.Hessian通常通过Web应用来提供服务,通过接口暴露.Servlet ...

  9. Java学习笔记之---Servlet

    Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...

随机推荐

  1. BGP的状态机制

    Idle 状态:即空闲状态,不接受任何BGP的连接,等待Start事件的产生,如果有start事件产生,若有start事件产生,系统开启ConnectRetry定时器,向邻居发起TCP连接,并将状态变 ...

  2. GString及IntelliJIdea中调试Groovy的操作步骤

    今天是学习Groovy的第一天,首先我觉得学习任何一种语言都要先弄清楚这种语言的特性,因为只有了解了特性之后学习才能达到好的效果,那么groovy的特点是什么的.我觉得groovy是一种动态语言,动态 ...

  3. Java 实现二分(折半)插入排序

    设有一个序列a[0],a[1]...a[n];当中a[i-1]前是已经有序的,当插入时a[i]时,利用二分法搜索a[i]插入的位置 效率:O(N^2),对于初始基本有序的序列,效率上不如直接插入排序: ...

  4. 采用大杀招QEMU调试Linux内核代码

    Linux调试内核代码是非常麻烦.它们一般加printk, 或者使用JTAG调试. 这里的方法是使用QEMU为了调试Linux核心. 由于QEMU自己实现gdb server, 它可以容易地使用gdb ...

  5. Windows Phone开发(18):变形金刚第九季——变换

    原文:Windows Phone开发(18):变形金刚第九季--变换 变换不是一个好理解的概念,不是吓你,它涉及很多有关代数,几何,以及线性代数的知识.怎么?被我的话吓怕了?不用怕,尽管我们未必能够理 ...

  6. Codeforces 432E Square Tiling(结构体+贪婪)

    题目连接:Codeforces 432E Square Tiling 题目大意:给出一个n∗m的矩阵,要求对该矩阵进行上色,用大写字母,可是每次上色的区域必须是正方形,不求相邻的上色区域不能有同样的颜 ...

  7. WEB网站性能优化

    最近做了一个WEB现场.幸运的是,一开始.但后来越来越慢,特别是在调试模式,,这肯定是我们的代码有问题.但是即使业务不是非常复杂的也非常慢,我们就想当然的觉得我们的代码没问题,可最后证明还是我们的代码 ...

  8. oracle 修改dbid和dbname

    一般这玩意没人修改,除非特殊情况,比如克隆数据库等等 步骤: 1.备份数据库 2.启动数据到mount状态 3.nid命令修改 (如果只是修改dbid,那么不需要dbname参数,需要更改dbname ...

  9. The example program of C on point

    计划一: #include<stdio.h> #define N_VALUES 5 int main( void ) { float values[N_VALUES]; float *vp ...

  10. leetcode先刷_Remove Duplicates from Sorted List II

    删除重复节点列表中的.假设所有val如果仅仅是为了保持一个非常easy.应承担重复val节点被删除话.要保持pre节点.每当你想保存这pre问题节点,应该head节点可以被取出,好了,没问题边境控制. ...