第二章 JSP2.0简介
本章开始进入我们的主题——JavaServer Pages(JSP)。主要目的是建立对JSP机技术的初步认识。
第一节JavaServer Pages(JSP)技术
JSP技术是一个纯Java平台的技术,它主要用来产生动态网页内容,包括:HTML、DHTML、XHTMl和XML。JSP技术能够让网页人员轻易建立起功能强大、有弹性的动态内容。
JSP技术有下列优点:
l Write Once,Run Anywhere特性
作为Java平台的一部分,JSP技术拥有Java语言“一次编写,各处执行”的特点。这使得在更换服务器平台的情况下,JSP并不需要改变。这不但减轻了开发人员的工作还可以节省公司的成本。
l 搭配可重复使用的组件
JSP技术可依赖于重复使用跨平台的组件(如:JavaBean或Enterprise JavaBean组件)来执行更复杂的运算、数据处理。开发人员能够共享开发完成的组件,或者能够加强这些组件的功能,让更多用户或是客户团体使用。基于善加组件的方法,可以加快整体开发过程,也大大降低公司的开发成本和人力。
l 采用标签化页面开发
JSP技术能够将许多功能封装起来,成为一个自定义的标签,这些功能是完全根据XML的标准来制订的,即JSP技术中的标签库。
l 企业应用架构的支持
网际网络发展的速度很快,服务要求也越来越复杂,而且不受地域限制。因此必须放弃以往的JSP+JavaBean的两层架构,进而转向更具威力、弹性的分散性的架构基于MVC的三层架构。由于JSP技术是JavaEE集成中的一部分,它主要是负责前端显示经过复杂运算后之结果内容。业务逻辑处理并不依赖于JSP。主要有JavaBean、Enterprise JavaBean(EJB)和JNDI构建而成。
第二节 什么是JSP
JSP是由Sun公司倡导、许多别的公司参与一起建立的一种新动态网页技术标准,类似其他技术标准,如ASP、PHP等。
在传统的网页HTML文件中加入Java程序段(Scriptle)和JSP标签,构成了JSP网页(*.jsp)。Servlet/JSP 容器收到客户端发出的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式响应给客户端。其中程序片段可以是:所有程序操作都在服务器端执行,网络上传给客户端的仅是得到的结果,与客户端的浏览器无关,因此,JSP是属于服务端的代码。
第三节 JSP与Servlet的比较
Sun公司首先发展出Servlet,其功能非常强大,且体系设计也很完善,但是它输出HTML语法时,必须使用out.println()一句一句地输出,例如下面的程序段:
上例是一段简单的Hello World程序,看不出其复杂性,但当网页内容非常复杂时,那么你的Servlet程序可能大部分都是用out.println()输出HTML的标签。
后来Sun公司推出类似于ASP的嵌入型Scripting Language,并且给它一个新的名称:JSP。于是上面的程序改为:
这样就简化的编写页面的难度。
第四节JSP与Servlet在应用上的区别
1. 主要差别
JSP中应该仅仅存放与表示层有关的内容,也就是说,只放输出HTML网页的部分;而所有的数据计算、分析、数据库连接等处理,统统是属于业务层,应该放在JavaBean或者Servlet中。
注意:Servlet是包含HTML代码的Java程序,而JSP是包含Java代码的HTML网页。
2. Servlet与JSP相互配合
Servlet写业务层很好,写表示层则不方便。所以用JSP写表示层,JavaBean
写业务层,Servlet用来协调控制JSP与JavaBean之间的调用。
第五节JSP的执行过程
在介绍JSP语法之前,先说明一下JSP的执行过程(见图2-1)。
(1) 客户端发出Request(请求);
(2) JSP容器将JSP转译成Servlet源代码:
(3) 将产生的Servlet源代码经过编译后,加载到内存执行;
(4) 把结果Response(响应)至客户端。
图2-1 JSP执行过程
一般人会认为JSP的执行性能会和Servlet相差不多,其实执行性能上的差
差别只是在第一次的执行。因为JSP在执行第一次后,会被编译成Servlet的类文件,即为XXX.class,当再重复调用执行时,就直接执行第一次所产生的Servlet,而不用再重新把JSP编译成Servlet。因此,除了第一次的编译会花较久的时间之外,之后JSP和Servlet的执行速度就几乎相同了。
第六节 web.xml新增元素
元素主要用来设定JSP相关配置,包括和两个子元素。其中元素在JSP1.2时就已经存在;而是JSP2.0新增的元素。
元素主要有八个子元素,它们分别为:
:设定的说明;
:设定的名字;
:设定值所影响的范围,如/com或/*.jsp;
:若为true,表示不支持EL语法;
:若为true,表示不支持<%scripting%>语法;
:设置JSP网页的抬头,扩展名为.jspf;
:设置JSP网页的结尾,扩展名为.jspf;
图2-2所示的所谓JSP网页的抬头为网页最上方的This banner included with ;结尾为网页最下方的This banner included with 。
图2-2 TomcCat上的范例程序
其中抬头的源代码为:
n preIude.jspf
结尾的源代码为:
n coda.jspf
下面是一个简单的元素完整配置: