JSP学习要点记录
2024-09-05 00:19:28
供稿:网友
这个是我原来学习的时候写的一个笔记,可能没有写完,大致看了一下,对新人可能有些用处,就贴上来了。
这个笔记很古老了,今天整理硬盘翻出来的,所以其中的观点可能是错的。
有时间再改了。
当一个浏览器向服务器请求一个jsp文件时,这个jsp文件首先被web应用服务器编译成servlet并执行,然后将所产生的结果作为一个html文件传给浏览器。只要在jsp文件中加入一些控制,便可轻易的实现对数据的动态显示。以后,如果再有对这个jsp文件的请求,如果该文件没有作任何修改,它将不会再被编译,而是直接执行已编译好的servlet。然而,在web应用服务器上的这些处理都是需要时间和资源的,必然会加大web应用服务器的负荷和相应的延长响应时间。特别是整个系统刚刚启动或是有大量jsp文件作了改动以后。
jsp的功能是相当强大的,有的人说它甚至能够完成几乎所有的功能。这确实没有错误,但是当我们考虑到代码的复用性和实现的难易程度时,恐怕所有的功能都通过jsp文件来实现就不是什么好的选择了。更多的,我们还是用jsp文件作为一个response,来动态的显示某一状态下的数据。jsp的另一个特点就是它很象html文件,也是由许多的标签所组成的,所以我们也可以利用所见即所得的编辑器(如websphere studio中的pagedesinger)来编辑它。而且,它还更加有利于不同开发人员之间的协作。jsp文件就像一个模板一样,等待着不同的数据去填充,而实现这个动态机制的正是那些嵌入html标签的jsp标签。基于这个思路,首先,网页的编辑人员可以将大致的模板(网页的静态部分)先设计出来,然后再由开发人员向模板中添加动态的控制代码。当全部完成后,就可以利用jsp的某种调试工具进行调试。
jsp文件的调试分为两个阶段,编译阶段和运行态阶段。应该说,jsp文件在编译阶段的调试是比较困难的,因为任何的语法错误都会导致jsp文件的编译不通过,但是却没有任何信息说明到底是什么地方有错。有的时候会因为少了一个括号花上很长的时间。一旦编译通过,运行态的问题就有方法得以解决了。我认为,最好的运行态调试工具要数visualage for java的websphere test environment中的jsp执行监视器了,它可以单步执行jsp文件中的代码段,非常便于错误的定位和修改。
与perl、shell script等cgi相比,servlet的优势在于它只驻留一次,可以处理多个http请求,而其他的cgi程序则要对每个请求都创建一个进程。所以,servlet可以在一定程度上节省对资源的消耗。
servlet和jsp一样,都面临同一个问题,那就是它的加载需要时间。当一个web应用启动后,对某个servlet的第一次调用往往很慢,而以后的调用就会好多了。这个问题是由servlet在引擎中的调用方式和生命周期决定的。如果一个站点对web应用的性能十分看重的化,不妨编写一个简单的程序,模拟对所有servlet和jsp文件的http请求来初始化整个web应用,使其在真正被应用之前就已经加载好了所有的功能。
servlet也是一种java程序,所以它也继承了java语言的所有特点。如果某个web应用的所有servlet都具有一个共同的功能,例如对后端数据库的连接,我们便可以先编写一个通用的servlet来完成这些功能,而其他的servlet都从这个通用的servlet继承下来。
data bean,顾名思义,是与数据打交道的。更严格的说,它是对数据的一种封装。虽然也有bean,但是却与javabeans不同,它并没有javabeans所具有的事件处理。可以说,data bean是整个编程模型中最简短的部分了,因为它除了数据域以外,就是对这些数据域进行操作的get和set方法了。data bean实际上是对数据结构的一种映射。一般的,如果一个web应用的数据库schema确定以后,data bean的数目和接口也就基本上决定了。而data bean的开发,就更加简单了。在许多的java开发环境中,都可以通过wizard来生成data bean,开发人员需要做的,只不过是告诉wizard这个data bean到底有多少个属性,每个属性的类型是什么。其实,如果自己手工编写data bean的话,也不是什么费力的事情。
在服务器端,我们要谈的最后一个元素就是db object。它的目的就是构造对数据库操作所需要的sql语句,并且在执行后得到结果集。之所以需要它,是因为我们每次对数据库的操作都是不同的,如查找功能,会因不同的查询条件产生许多种情况。这需要依据不同的情况来构造不同的sql语句。只有这样,我们的程序才能达到更高的利用率,减少开发的工作量。