JAVA学习 分析Servlet
一个、什么是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的更多相关文章
- 【java学习】Servlet简单的表单程序(一)
此文用于java学习,在此小记. 在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识.(Servlet的相关知识摘抄自http://blog.csdn.net/jiuq ...
- Java学习之Servlet篇
<JAVA遇见HTML——Servlet篇> Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命 ...
- java学习笔记—Servlet技术(11)
如果大家要开发一个动态的网站,那么就必须要学习一种动态的网页开发技术.那么在SUN提供的JavaEE中主要包含两种开发动态网页的技术:Servlet和JSP技术. Servlet技术简介 Servle ...
- java学习之Servlet
0x00前言 Servlet就是一个接口我们需要写一个类然后去实现Servlet,就可以被服务器识别到.request是用来接受客户端传过来的参数,respone是用来响应客户端的页面.我们所用的容器 ...
- Java Web基础 --- Servlet 综述(理论篇)
摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Ser ...
- Java学习路线图分析
Java学习路线分析图 第一阶段 技术名称 技术内容 J2SE(java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置, ...
- 初学Java Web(4)——Servlet学习总结
经过一段时间的学习,对于Servlet有了新的不一样的见解,在这里做一下总结,将近来学习到的知识总结一下. Servlet 的请求流程 浏览器发出请求:http://localhost:80/xxx1 ...
- Java学习---RMI 技术分析[Hessian]
一.什么是Hessian Hessian 是一个基于 binary-RPC 实现的远程通讯 library.使用二进制传输数据.Hessian通常通过Web应用来提供服务,通过接口暴露.Servlet ...
- Java学习笔记之---Servlet
Java学习笔记之---Servlet (一)如何实现Servlet 1.实现javax.servlet.Servlet接口: 2.继承javax.servlet.GenericServlet类: 3 ...
随机推荐
- 面对多个互斥量的加锁策略:"试加锁-回退"算法/固定加锁层次
有时一个互斥量是不够的: 比如: 当多个线程同时访问一个队列结构时,你需要2个互斥量,一个用来保护队列头,一个用来保护队列元素内的数据. 当为多线程建立一个树结构时,你可能需要为每个节点设置一个互斥量 ...
- C#函数参数传递解惑
C#语言函数参数的传递 就像C语言众多的后世子孙一样,C#的函数参数是非常讲究的.首先,参数必须写在函数名后面的括号里,这里我们有必要称其为形参.参数必须有一个参数名称和明确的类型声明.该参数名称 ...
- Netflix公司监控内部安全的开源项目
Netfix公司已经公布了三个内部工具,用于捕捉黑客在使用互联网服务时留下的痕迹. AndyHoernecke和Netflix公司的云安全团队成员ScottBehrens指出:"很多安全团队 ...
- Android它SDK Manager无法更新终极解决方案
前些日子.Google终于发布Android5.0正式版--棒糖.也许你和我一样,,此外,我想在第一时间更新SDK,结果打开SDK Manager,但令人失望,络围墙啊.默默问一句:近期好久没有听到方 ...
- Knockout应用开发指南 第三章:绑定语法(2)
原文:Knockout应用开发指南 第三章:绑定语法(2) 7 click 绑定 目的 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用 ...
- Jndi使用好处,与简单实例【JBOSS】
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有 ...
- 设置 zend studio 默认编码为UTF8
今天用zend studio 打开文件时发现为乱码,这肯定是编码出了问题,我看了一下果然是编码出了问题,默认的是以GBK编码方式打开,我换utf8编码打开就好了,换编码打开的方法是: 1点击工具栏中的 ...
- Mercurial简介
前言 目前所在的公司的版本控制使用的是Mercurial,它也有一个对应的客户端小乌龟,但是Mercurial跟我们之前使用的SVN有着本质的区别,对于其区别会在下一篇中介绍到,这次主要是带领 ...
- 编C语言单元测试框架CUnit方法库
/********************************************************************* * Author : Samson * Date ...
- libyuv编
下载代码(墙): git clone http://git.chromium.org/external/libyuv.git 用 make 编译(linux.mingw.cygwin): mak ...