对 Jsp及Servlet 的简单剖析

来源:互联网 发布:u盘数据恢复文件乱码 编辑:程序博客网 时间:2024/05/18 03:27

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(),销毁加载的资源,销毁实例。

0 0
原创粉丝点击