JSP小试牛刀
来源:互联网 发布:淘宝开店日期在哪里看 编辑:程序博客网 时间:2024/06/05 19:35
学习了基本语法,需要实践运用一下:来用jsp这么看似过时的技术来模拟做一个小留言板,毕竟学习之道在于实践与时间。
实现留言增添数据的功能:
显示留言效果的功能:
加深理解与学习运用,在简单学习了语法知识与小运用之后,需要理解一下JSP的运行原理,才能进一步体会到技术的魅力。首先当一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个Servlet。而这个引擎本身也是一个Servlet。JSP的运行过程如下所示:
(1)JSP引擎先把该JSP文件转换成一个Java源文件(Servlet),在转换时如果发现JSP文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息。
(2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件。
(3)创建一个该Servlet(JSP页面的转换结果)的实例,该Servlet的jspInit()方法被执行,jspInit()方法在Servlet的生命周期中只被执行一次。
(4)jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但不过也应该注意多线程的编程限制,由于该Servlet始终驻于内存,所以响应是非常快的。
(5)如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的Servlet,并继续上述处理过程。
(6)虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延 迟。此外,在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将Servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用。
(7)然后Servlet实例便被标记加入“垃圾收集”处理。可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。
而从另一个角度来看,服务器端与客户端之间的交互过程是这样的:
1. 请求应答模式,客户端发送请求,服务器进行响应
2. JSP文件是在服务器端执行的
3 .返回给客户端的结果是JSP文件执行的结果,不包含任何JSP语法
4 .内部对象是在把JSP文件转换为Java代码的时候生成的
5 .执行的并不是JSP文件本身,而是JSP转换成的Java类的对象的方法,所以有时候修改JSP文件不起作用。
因此,所有JSP页面,在执行的时候都会被服务器端的JSP引擎转换为Servelet(.java),然后又由JSP引擎调用Java编译器,将Servelet(.java)编译为Class文件(.class),并由Java虚拟机(JVM)解释执行。下面验证这一点:
有一个JSP页面Test.jsp,在浏览器地址栏中输入http://localhost:8080/Test.jsp,将会出现执行结果。同时在%CATALINA_HOME%/work/Catalina/localhost下多出两个文件:_Test_jsp.java和_Test_jsp.class,他们分别就是Servelet和Class文件。
- JSP小试牛刀
- JSP
- JSP
- jsp
- JSP
- JSP
- jsp
- Jsp
- JSP
- jsp
- jsp
- jsp
- JSP
- JSP
- jsp
- jsp
- JSP
- jsp
- 跑酷
- Mvvm Light Toolkit for wpf/silverlight系列之Command和Events
- Apache下子目录访问权限的设置
- windows的CP_ACP代码页与CP_OEMCP代码页区别
- centos5.4裁剪笔记(2)-准备复制
- JSP小试牛刀
- Apache Vs Httpd Vs Tomcat
- 如何在VC中配置winPcap开发环境
- java 面向对象1
- ajax调用webservice问题
- 管理摘录
- 脉冲编码调制(Pulse-code modulation,PCM)
- VC:CString用法整理
- xen4.0制作基于Linux2.6.31.8内核的Guest OS