文档章节

对 Jsp及Servlet 的简单剖析

志强朱
 志强朱
发布于 2016/05/08 17:45
字数 1185
阅读 3
收藏 0

Servlet其实就是JAVA代码。从本质上可以将它理解为基于HTTP协议的一个服务器,它针对客户发来的数据(HTTP请求),回发对应的HTML文本给客户端。客户端通过浏览器通HTML进行解析,呈现最终的网页。

        最简单的当然是回发静态页面。这种页面不需要服务器的任何处理,直接在服务器文件系统找到文件发送即可。甚至可以在服务器程序中构建字符串发送给客户端。

如果客户发来的请求需要经过服务器的处理计算。那么,回发的页面就是动态得了。动态页面需要通过服务器的处理和计算后再发给客户。

 

图1 web服务器简单模型

 

1.       web服务器是一种服务器

        web服务器首先应该是一台服务器。因此,可以将它作为一种普通的C/S服务器去理解。客户端程序当然就是浏览器了。可以肯定的是,它不能像普通的长TCP连接的程序一样,只要开启就一直连着服务器,除非特别指定,浏览器和服务器的连接是一个很短的过程,只存在于单个请求周期。

2.       servlet可以看作一个服务器

        当然它仅仅是服务器的一部分。

        在自定义Servlet中覆写某些方法就可以实现一个简易的Servlet服务器了。主要可覆写的方法有doGet()、doPost、service()等方法。这些方法都携带了两个参数,一个是携带着请求信息的HttpServlerRequest,一个是携带着输出信息的HttpservletRespose。利用HttpServlerRequest可以解析出客户端发来的多种信息,比如解析URL或表单携带的参数;HttpservletRespose可以获得连接的流,向客户发送消息。

3.       web.xml配置信息

        客户端浏览器发过来的URL到底对应哪个Servlet呢?这需要通过web.xml文件进行配置。貌似通过真实路径也可以访问到正确的Servlet,比如JSP文件的访问。

4.       JSP是一种Servlet

        可以将JSP看做一种较为特殊的Servlet的一段代码,JSP中的HTML在它背后的Servlet呈现出来的是文本;而JSP中的JAVA脚本呈现出来的直接就是可运行代码。JSP的标签实际上是这些JAVA脚本的简易形式。



Servlet的生命周期:

所谓生命周期,指的是Servlet容器是如何创建Servlet实例、分配其资源,调用其方法,并销毁其实例的整个过程

1. 加载servlet

2. 实例化servlet

3. 调用init(),进行初始化

4. 调用service,派遣与请求相对应的doXXX方法,运行(以多线程的方式运行service() );

5. 服务终止,调用destory,将其销毁。



JSP  sun公司定制的一种服务器端动态页面生成技术的规范,直接使用Servlet 生成页面比较繁琐复杂,为简化这个过程Jsp应运而生,使用jsp编写页面,使用简单方便而且易于维护。

1. 服务器端的应用,可以访问服务器端的资源;

2. 采用Java编写类XMl标记的脚本,封装动态网页的处理逻辑,简化了由Servlet来生成html文档的繁琐代码,并且降低了复杂度

3. 可以认为是包含Java代码的HTML文档;

4. JSP最终解释为Servlet并编译执行;

5. 将网页逻辑与界面的设计和显示分享,使得web应用的开发更加迅速和容易,使得后台程序员和前台设计人员可以并行工作。


运行机制:

1. 将jsp布置到web服务器上,首次载入时被翻译成Servlet文件,调用JVM编译Servlet文件得到相应的.class文件并执行

2. 将运行结果以html文件的形式行为响应返回给客户浏览器


jsp第一次访问时,历时会较长;当再次访问它时,由于对应的.class文件已经生成,此时将会很快。

当jsp再次被请求时,jsp引擎会比较其相应的Servlet,若jsp比Servlet新,说明jsp被修改,需要重新编译。


生命周期:

1. 将其翻译成 servlet;

2. 将servlet 编译成.class文件;

3. web加载生成的servlet,然后创建servlet实例;

5. 调用Jspinit(),加载需要的资源,等待请求;

6. 调用JspService();创建新线程,处理请求;

7. 调用JspDestory(),销毁加载的资源,销毁实例。

© 著作权归作者所有

共有 人打赏支持
志强朱
粉丝 4
博文 209
码字总数 108290
作品 0
郑州
程序员
私信 提问
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

№贪↗恋♂
2012/08/08
0
0
Servlet3.0新特性剖析

Servlet3.0规范的新特性主要是为了3个目的: 1.简化开发 2.便于布署 3.支持Web2.0原则 为了简化开发流程,Servlet3.0引入了注解(annotation),这使得web布署描述符web.xml不在是必须的选择...

长平狐
2012/09/03
195
0
StandardWrapper分析-tomcat6.x源码阅读

2013-10-20 StandardWrapper是什么StandardWrapper是负责对Servlet的封装,在tomcat的结构层次中属于最内层,跟Servlet最接近的组件,是装载Servlet的容器,StandardWrapper没有子容器,因为...

douglaswei
2013/11/19
0
0
tomcat 5.5 部署项目报错 关于Filter的错误。。

我在tomcat7.0部署没不报错,但是再tomcat5.5就会报错。。 listener.ContextListener UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter logLevel WARN UrlRewriteFilte......

庄泽锐
2014/03/06
1K
5
Servlet 生命周期、工作原理

Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。 init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet 对象。可以配...

ArlenXu
2015/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IOS  学习记录

1.StackView=>IOS 9及以上支持 2.布局方式: AutoLayout / StackView 堆布局 (线性布局) 3.屏幕适配 (资源分辨率、设计分辨率、屏幕分辨率) Size Class技术 可以针对 屏幕的方向进行设置...

萨x姆
今天
4
0
第四次工业革命:自主经济的崛起

https://36kr.com/p/5170370.html

shengjuntu
昨天
3
0
Cloud Native 与12-Factor

12-Factor(twelve-factor),也称为“十二要素”,是一套流行的应用程序开发原则。Cloud Native架构中使用12-Factor作为设计准则。 12-Factor 的目标在于: 使用标准化流程自动配置,从而使...

waylau
昨天
9
0
java多线程2

“非线程安全”问题存在于“实例变量”中,如果是方法内部的私有变量,则不存在线程安全问题。这是因为方法内部的变量都是私有造成的。 synchronized 获取的都是对象锁。如果多个线程访问多个...

一滴水穿石
昨天
4
0
今天的学习

1,document.location.href:获取整个url 2,str.split(' '):用字符分割字符串 3,$this->load->library(' '):引用图像处理类 4,$this->load->library(' '):引用Email类 5,特殊访问指针$th......

墨冥
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部