对 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(),销毁加载的资源,销毁实例。
- 对 Jsp及Servlet 的简单剖析
- 深入剖析JSP和Servlet对中文的处理过程
- 深入剖析JSP和Servlet对中文的处理过程
- 深入剖析JSP和Servlet对中文的处理过程
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理过程
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理过程
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理过程
- 深入剖析JSP和Servlet对中文的处理
- 深入剖析JSP和Servlet对中文的处理
- Java学习笔记01 编译和运行Java程序
- docker 构建网站初探
- Android开发之QQ侧滑面板
- 编译原理总结
- Axis2(WebService)经典教程
- 对 Jsp及Servlet 的简单剖析
- zoj3892Available Computation Sequence(区间dp)
- LeetCode Best Time to Buy and Sell Stock IV
- .net中ImageField绑定图片路径
- java 逆置 单链表
- hdu 5439 Aggregated Counting(找规律)
- 将char[][] 赋值给char**的结果
- Xcode添加常用的代码片段 (code sinppets)
- Python 学习(2)---基本知识整理