




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章JSP概述JSP概述JSP(Java Server Pages)是由Sun公司以Java语言为脚本语言开发出来的一种动态网页制作技术,主要完成网页中服务器动态部分的编写。该技术是在Servlet技术的基础上形成的,并继承了Java语言的多种优势,如安全性、支持多线程、平台无关性等。与其他动态网页技术相比较,如ASP、PHP等,具有运行速度快、安全等特点。本章将简要介绍JSP的产生到现状,并重点介绍构建JSP的运行平台,即Tomcat和JDK的安装及配置。在本章最后给出一个JSP+JavaBean+Servlet实例,演示JSP各部分的运行情况。 了解Web技术的产生和发展。 了解JSP的产生和应用。 了解JSP的技术优势。 掌握常见JSP的设计模式。 掌握JDK下载、安装、配置。 掌握Tomcat下载、安装。 掌握编写JSP工作原理。 了解JSP页面包含元素。 了解JSP的开发流程。1.1 JSP简介要熟练掌握JSP技术,首先需要了解JSP的产生和发展历史,明确JSP技术在Web技术中所占有位置,JSP技术能够解决的问题。在本小节中,将主要介绍JSP形成的必然原因,与其他动态技术相比所具有的优势。1.1.1 JSP技术概述在Internet发展的最初阶段,HTML语言只能在浏览器中展现静态的文本或图像信息,这无法满足人们对信息丰富性和多样性的强烈需求。随着Internet和Web技术应用到商业领域,Web技术功能越来越强大。目前,解决Web动态网站的开发技术很多,如Servlet,JSP,ASP,PHP等,都得到了广泛应用。JSP是它们中的佼佼者。JSP(Java Server Pages)是由Sun Microsystem公司于1999推出的新技术,是基于Java Servlet以及整个Java体系的Web开发技术。利用这一技术可以建立先进、安全和跨平台的动态网站。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记,就构成了JSP网页(*.jsp)。Web服务器在收到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页、发送E-mail等等,这就是建立动态网站所需要的功能。JSP所有程序操作都在服务器端执行,网络上传送给客户端仅是得到的结果,对客户浏览器的要求最低。Servlet是JSP技术的发展前身,它是Java技术对CGI编程的回应。Servlet程序在服务器端运行,动态生成Web页面。Servlet由Java语言编写,运行在Tomcat服务器中,能够主动生成HTML标记和客户端需要的数据,并能够将生成的数据返回到客户端。与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。其详细信息如表1-1所示。表1-1 Servlet技术优势优势说明高效在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程);在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择,比如缓冲以前的计算结果,保持数据库连接的活动等方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等功能强大在Servlet中,可以完成许多使用传统CGI程序很难完成的任务。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,很容易实现数据库连接池之类的功能可移植性好Servlet用Java语言编写,Servlet API具有完善的标准。因此,为I-Planet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。所有主流服务器都直接或间接通过插件支持Servlet节省投资不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)但遗憾的是,Servlet具有一个致命缺点,就是所有响应代码都是通过Servlet程序生成的,如HTML标记。一个Servlet程序,其中大量的代码都是用来生成这些HTML标记响应代码,只有其中少部分代码用作数据的处理和响应。并且开发Servlet程序起点要求较高,Servlet产生之后,没有像PHP和ASP那样,快速得到应用。故Sun公司在结合了Servlet技术和ASP技术等特点,又推出了JSP技术,JSP技术完全继承了Servlet技术的优势,并具备了一些新的优势。JSP相对于PHP和ASP技术有下面几种优势,如表1-2所示。表1-2 JSP优势优势说明数据内容和显示分离使用JSP技术,Web开发人员可以使用HTML或者XML标记来设计和格式化最终页面。使用JSP标记或者小脚本来产生页面上的动态内容。产生内容的逻辑被封装在标记和JavaBeans群组件中,并且捆绑在小脚本中,所有的脚本在服务器端执行。如果核心逻辑被封装在标记和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的产生。在服务器端,JSP引擎解释JSP标记,产生所请求的内容(例如,通过存取JavaBeans群组件,使用JDBC技术存取数据库),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性可重用组件绝大多数JSP页面依赖于可重用且跨平台的组件(如JavaBeans或者Enterprise JavaBeans)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者用户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种群组织在他们现有的技能和优化结果的开发努力中得到平衡采用标记简化页面开发Web页面开发人员不会都是熟悉脚本语言的程序设计人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标记中生成动态内容所需要的。标准的JSP标记能够存取和实例化 JavaBeans组件,设定或者检索群组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能一种技术功能越是强大,其复杂性就越高,JSP技术也不例外。在使用JSP技术成功编写高效,安全的Web网站的同时,JSP也面临入门比较困难的问题。相对与其他网页开发技术,如ASP、PHP来说,三者各有其优点。其详细信息如表1-3所示。表1-3 JSP、PHP和ASP技术比较参数JSPASPPHP运行速度快较快较快运行耗损较小较大较大难易程度容易掌握简单简单运行平台绝大部分平台均可Windows平台Windows/Unix平台扩展性好较好较差安全性好较差好函数支持多较少多数据库支持多多多厂商支持多较少较多对XML的支持支持不支持支持对组件的支持支持支持不支持对分布式处理的支持支持支持不支持应用程序较广较广较广此三者中,JSP应该是未来发展的趋势。一些大的电子商务解决方案提供商都采用JSP/Servlet。比较著名的如IBM的E-business,它的核心技术采用JSP/Servlet的Web Sphere。Intershop公司开发的Enfinity软件采用JSP/Servlet的电子商务Application Server,而且他们声言不再开发传统 软件。1.1.2 JSP的开发模式JSP自产生到现在,应用越来越广泛,其相关技术也越来越多,如JavaBean、EJB等。相关技术的产生,使JSP技术更容易实现Web网站的开发和控制。JSP网站开发技术,经常使用下面几种组合开发网站,包括纯粹JSP技术实现、JSP+JavaBean实现、JSP+JavaBean+Servlet实现、J2EE实现等。不同的开发组合,可以称为不同的设计模式,最常用的技术是JSP+JavaBean+Servlet。1纯粹JSP实现使用纯粹JSP技术实现动态网站开发,是JSP初学者经常使用的技术。JSP页面中所有的代码都是在同一个页面,如标记、标记、标记、逻辑处理、数据库处理代码等。这么多代码,混合在一个页面中,容易出现错误,出现错误后,不容易查找和调试。这时设计出的网站,采用JSP技术还是采用ASP技术就没有什么大的差别了。2JSP+JavaBean实现JSP+JavaBean技术的使用,很好地达到了页面静态部分和动态部分相互分离。在这种技术中,使用JSP技术中的HTML、CSS等可以非常容易地构建数据显示页面,而对于数据处理,可以交给JavaBean技术处理,如连接数据库代码、显示数据库代码。当执行功能代码封装到JavaBean中时,同时也达到了代码重用的目的。如显示当前时间的JavaBean,不仅可以用在当前页面,还可以用在其他页面。这种技术的使用,已经显示出JSP技术的优势,但并不充分,JSP+JavaBean+Servlet技术的组合更加充分地显示了JSP的优势。3JSP+JavaBean+Servlet实现JSP+JavaBean+Servlet技术的组合,很好地实现了MVC模式,MVC模式是应该提倡学习和使用的一种模式。MVC模式是Model-View-Controller的缩写,中文翻译为“模式-视图-控制器”,MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变了Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是Smalltalk语言研究团提出的,应用于用户交互应用程序。Smalltalk语言和Java语言有很多相似性,都是面向对象语言。MVC模式是一个复杂的架构模式,其实现也显得非常复杂。但是,人们已经总结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可以用Observer Pattern来实现。Controller控制Views的显示,可以用Strategy Pattern实现。Model通常是一个调停者,可采用Mediator Pattern来实现。现在来了解一下MVC三个部分在架构中处于什么位置,这样有助于理解MVC模式的实现。MVC与架构的对应关系是:View处于Web Tier或者是Client Tier,通常是JSP/Servlet,即页面的显示部分。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分的实现。Model处于Middle Tier,通常用服务器端的JavaBean或者EJB实现,即业务逻辑部分的实现。其形式如图1-1所示。图1-1 MVC三个部分的形式视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)来处理。比如一个订单的视图只接受来自模型的数据,并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。模型(Model)就是业务流程/状态的处理,以及业务规则的制定。业务流程的处理过程对其他层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。通过MVC设计模式可知,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的依据。抽象与具体不能隔得太远,也不能太近。控制器(Controller)可以理解为从用户接受请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉人们,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求,控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其他依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。4J2EE模式实现J2EE是纯粹基于Java的解决方案。1998年,Sun发布了EJB 1.0标准。EJB为企业级应用中必不可少的数据封装、事务处理、交易控制等功能提供了良好的技术基础。至此,J2EE平台的三大核心技术Servlet、JSP和EJB都已先后问世。1999年,Sun正式发布了J2EE的第一个版本。到2003年时,Sun的J2EE版本已经升级到了J2EE 1.4版,其中三个关键组件的版本也演进到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE体系及相关的软件产品已经成为了Web服务器端开发的一个强有力的支撑环境。在这种模式里,EJB替代了前面提到的JavaBean技术。在Web服务器端,2000年以后出现了几种主要的技术融合方式。首先,越来越多的Web开发环境开始支持MVC(Model-View-Contorller)的设计模型,为开发者提供了全套的开发框架。实际上,J2EE和.NET平台本身就是这种开发框架的典型代表。开源项目在Web开发框架和应用模型方面表现得非常积极,Struts、Jetspeed、JPortlet、Cocoon、Lenya、XOOPS等都是开源世界里与MVC开发框架、门户服务和Web内容管理相关的优秀解决方案。J2EE设计模式由于框架大、不容易编写、不容易调试,因此比较难以掌握。目前只是应用在一些大型的网站上,当然,J2EE模式的前景是好的,让大家拭目以待吧。对于本节介绍的4种JSP开发模式,常用的是第二种和第三种。只有在充分理解这两种开发模式的基础上,才能掌握J2EE设计模式。1.2 JSP的开发环境在1.1节中,介绍了JSP的产生、优势和现在流行的开发模式。在了解了JSP的相关技术后,本节将主要介绍配置JSP运行环境,如JDK和Tomcat的安装。1.2.1 安装和配置JDKJSP技术目前唯一支持的脚本语言为Java语言,在JSP页面运行时,需要有相应的编译器编译和解释器来执行这些Java代码。执行Java代码,需要下载和安装Java的JDK开发工具包。JDK(Java Development Kit,Java开发包,Java开发工具)是一个编写Java的Applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境以及开发者编译、调试和运行用Java语言编写的Applet和应用程序所需的工具组成。在计算机上,安装了JDK开发工具包就可以编译和运行Java代码了。JDK是Sun Microsystems针对Java开发人员而开发的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK(Software Development Kit)。1JDK简介JDK中包括Java编译器(javac)、打包工具(jar)、文档生成器(javadoc)、查错工具(jdb),以及完整的JRE(Java Runtime Environment,Java运行环境),也被称为Private Runtime。并包括了用于产品环境的各种类库,以及给开发人员使用的补充库,如国际化的库、IDL库。JDK中还包括各种例子程序,用以展示Java API中的各部分。从初学者的角度来看,采用JDK开发Java程序能够很快地理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。JDK的另一个显著特点是随着Java(J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的,就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。JDK一般有三种版本,其详细信息如表1-4所示。表1-4 JDK版本名称说明SE(J2SE)Standard Edition,标准版,主要用于开发Java桌面应用程序EE(J2EE)Enterpsise Edition,企业版,使用这种JDK开发J2EE应用程序,用于Web方面ME(J2ME)Micro Edition,微型版,主要用于移动设备、嵌入式设备上的Java应用程序Java开发工具(JDK)是许多Java专家最初使用的开发环境。尽管许多编程人员已经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。JDK由一个标准类库和一组建立、测试及建立文档的Java实用程序组成。API是一些预定义的类库,开发人员需要用这些类库来访问Java语言的功能。Java API包括一些重要的语言结构以及基本图形、网络和文件I/O。一般来说,Java API的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。2下载JDK获取JDK开发工具包非常简单,可以直接在JDK官方网站下载,也可以在网络上进行搜索。这里演示在官方网站上来获取JDK开发工具包,JDK开发工具包的官方网站的网址为/,在地址栏中输入该网址,单击【转到】按钮,会显示如图1-2所示的窗口。图1-2 JDK官方下载网站在窗口中,找到显示页面中的右侧,单击Java SE超级链接,会显示如图1-3所示的窗口。图1-3 JDK版本选择在显示窗口中,找到最新的JDK开发工具包,并单击Download按钮下载,会显示如图1-4所示的窗口。在本页面中,显示的是不同平台下的JDK安装包,如Windows、Linux、Solaris。在上面的窗口中,找到适合于自己计算机平台的JDK版本,这里下载jdk-6u2-windows-i586-p.exe可执行程序。这里需要注意的是,在下载JDK工具包之前,需要选择接受协议。3安装JDK直接单击下载的jdk-6u2-windows-i586-p.exe可执行程序,就可以开始安装。其步骤如下所示:(1)双击可执行程序,将打开【许可协议】对话框,单击【接受】按钮,打开【自定义安装】对话框,选择接受该协议,继续单击【下一步】按钮。(2)在如图1-5所示的对话框,可以更改文件的安装路径以及是否安装某些组件,这里选择默认安装。 图1-4 JDK下载页面 图1-5 【自定义安装】对话框(3)设置完成后,单击【下一步】按钮开始进行安装,下面整个过程一直单击【下一步】按钮。在安装快要结束时,安装过程中可能会根据本地计算机的情况提示是否安装或重新安装JRE(Java运行时环境),直接选择安装,其安装路径和JDK安装路径一样。安装完成后,会显示安装成功提示。4配置JDKJDK安装完成后,还并不能够使用,还需要进行配置。其过程如下所示。(1)右击【我的电脑】,选择【属性】命令,会弹出一个【系统属性】对话框,如图1-6所示。(2)单击【高级】标签,单击该选项卡中的【环境变量】按钮,会显示如图1-7所示的对 话框。(3)单击如图1-7所示的【新建】按钮,会显示一个如图1-8所示的对话框。在如图1-8所示的对话框中,变量名文本框中要输入创建的系统变量名称,这里输入“path”。path表示Java在运行时,如果需要相关命令可以到path的路径下寻找。在变量值文本框中输入JDK安装路径下bin文件夹的所在路径,如输入“,;C:Program FilesJavajdk1.6.0bin;”,变量值由三部分构成,“,”表示在当前目录下寻找,“;”表示不同路径分隔符,C:Program FilesJava jdk1.6.0bin表示在该目录下寻找。 图1-6 【系统属性】对话框 图1-7 【环境变量】对话框(4)上述操作完成后,单击【确定】按钮。现在还不能重新使用JDK开发工具包,需要重新启动命令提示符窗口。这里需要注意的是,如果计算机系统上没有安装其他的Java编辑开发工具,上述操作就可以了。如果安装了其他的Java开发工具,如JBuilder等,还需要配置另外一个系统变量,其配置过程与path一样。其名称为classpath,系统变量值为JDK安装路径下的lib文件路径,以笔者计算机为例,应输入变量值为“,;C:Program Filesjavajdk1.6.0libdt.jar;C:Program FilesJavajdk1.6.0libtools.jar;”。配置完成后,检测安装是否成功。需单击【开始】|【运行】命令,在弹出对话框中,输入“cmd”,确定后,会显示如图1-9所示的窗口,在显示窗口中输入“javac version”命令,如果输出JDK开发工具包的版本,表示安装成功;否则安装失败。 图1-8 【新建系统变量】对话框图1-9 JDK安装检测到此为止,JDK安装和配置就已经完成了。1.2.2 安装和配置TomcatJSP技术可以使用的服务器有很多,如Tomcat、Jboss、Resin、WebLogic等。每个服务器都有自己的特点,其应用方面也不相同。其中Tomcat服务器在中、小型的JSP网站上应用比较广泛,具有和JSP技术结合紧密等特点。1Tomcat简介自从JSP发布之后,推出了各式各样的JSP引擎。Apache Group在完成GNUJSP 1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JSP服务器,当然同时也支持Servlet,这样Tomcat就诞生了。Tomcat是Jakarta项目中的一个重要的子项目,其被Java World杂志的编辑评选为2001年度最具创新的Java产品,同时它又是Sun公司官方推荐的Servlet和JSP容器,因此其越来越多地受到软件公司和开发人员的喜爱。Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache。对于Tomcat的相关技术在后面章节会陆续提到。2下载Tomcat获取Tomcat非常容易,可以直接在网络上搜索或者从Tomcat官方网站获取。打开IE浏览器,在地址栏中输入“/”,单击【转到】按钮,会显示如图1-10所示的窗口。图1-10 Tomcat官方网站显示在窗口中单击页面左侧的Tomcat 6.x超级链接,会显示如图1-11所示的窗口。图1-11 Tomcat下载窗口在如图1-11所示的窗口中,有不同的Tomcat版本,用来适应不同的操作系统平台,这里选择Windows操作系统平台,单击Windows Service Installer(pgp, md5)超级链接下载。3安装Tomcat单击下载的可执行程序,会弹出一个如图1-12所示的窗口,在该窗口中单击Next按钮,会弹出如图1-13所示的窗口。 图1-12 Tomcat安装启动窗口图1-13 Tomcat安装显示窗口在图1-13所示的窗口中单击I Agree按钮,进入下一个安装窗口,如图1-14所示,该窗口中有相关的插件需要进行选择,在这里把所有的插件全部选中,即选择Full选项,选择好后单击Next按钮,会显示如图1-15所示的窗口。 图1-14 安装选项窗口 图1-15 安装位置选择窗口在图1-15所示的窗口中单击Browse按钮选择该Tomcat安装的路径位置,选择好后,单击Next按钮,进入下一个窗口,如图1-16所示,在该窗口中,主要是进行端口的配置,即所编写的JSP程序在那个端口运行,这里Tomcat默认的是操作系统的8080端口。单击Next按钮,会进入下一个窗口,如图1-17所示。 图1-16 端口选择窗口图1-17 选择Java虚拟机窗口在如图1-17所示的窗口中,要选择Tomcat服务器在运行的时候,使用那个开发工具包编译和解释执行JSP文件,JSP文件实质上是一个Java文件,是由Java中的Servlet包产生的。在这里要选择的是jdk1.6.0文件夹。选择好后,单击Install按钮,程序会自动完成安装。安装完成后,会弹出一个如图1-18所示的窗口。图1-18 安装完成窗口在如图1-18所示的窗口中选择要运行的软件,如可以直接运行该Tomcat服务器,或打开Tomcat的使用说明书。在这里选择两个都运行,Tomcat服务器运行后,会在右下角的状态栏出现一个图标,绿色表示正常启动,可以使用,红色表示不可以使用。到此为止Tomcat已经安装完成了,检验是否安装成功,打开IE浏览器,在地址栏中输入“http:/localhost:8080/”,单击【转到】按钮,会弹出一个如图1-19所示的窗口,这时就表明服务器已经正确安装了。图1-19 Tomcat服务器主页运行窗口Tomcat安装完成后,就可以进行实例的开发了。1.2.3 JSP的运行原理当在计算机系统上安装并配置了Tomcat和JDK后,就可以运行JSP页面了。开发JSP页面可以采用的工具有多种,如记事本、Eclipse、JBuilder、Dreamweaver等。在本书中,使用记事本作为开发JSP页面的工具,这样能够更加容易地理解JSP的运行原理。现在创建一个实例,以演示JSP的创建过程,用来分析JSP的运行原理。打开记事本,输入下列代码:/实例1-1第一个JSP例子将上述代码保存,名称为test.jsp。打开Tomcat安装路径下的webapps文件夹,如C:Tomcat 6.0webapps,在该文件夹下建立一个test文件夹用来存放编写好的JSP页面,并在test文件夹下建立一个WEB-INF文件夹,用来存放JSP页面运行时所有加载的第三方类,可以是读者自己编写的,也可以是从网上下载的。这时test.jsp文件就是保存在C:Tomcat 6.0webappstest目录下。一切完成之后,打开IE浏览器,在地址栏中输入“http:/localhost:8080/test/test.jsp”,会显示如图1-20所示的窗口。图1-20 JSP显示在JSP页面的编写过程中,需要注意的是,JSP中的脚本语言Java区分大小写,以及脚本语言和标记是如何区分的。运行一个JSP页面,需要在客户端打开IE浏览器,并输入要请求的页面地址,这样才能在浏览器中显示结果。实际上这个过程是HTTP协议的一个请求-响应过程,客户端发出请求,服务器端获取请求并处理请求,最后将处理结果返回给客户端。下面来介绍JSP页面的请求在Tomcat服务器是如何工作的。Tomcat服务器(Servlet容器)在获取了客户端发送的请求后,依据请求调用相关的JSP处理页面,如果该页面是第一次执行,需要把JSP页面中的代码转换为Servlet代码形式,转换完毕后,需要转换的Java文件即编译成了class文件,编译完成后,使用JVM执行编译过的文件,并将执行结果返回到客户端。如果该页面不是第一次执行,就会直接调用该页面的class文件执行。可以看出,JSP页面的第一次执行是需要耗费一些时间的,这些时间是耗费在JSP文件到Servlet文件转换并编译的过程中。其详细信息如图1-21所示。图1-21 JSP运行机制从图1-21中可以看出,JSP页面第一次的执行速度比较慢,其他时候执行速度比较快。JSP页面在运行时,实际上是以Java文件的形式在运行。客户请求某个页面的时候,只要该文件没有发生过更改,JSP引擎就直接调用已经装载的Servlet。如果已经做过修改的话,那就会再次执行以上过程,翻译、编译并装载。test.jsp文件同样在执行过程中会形成Java文件,打开C:Tomcat 6.0workCatalinalocalhost testorgapachejsp文件夹,在该文件夹中找到test_jsp.java文件,该文件是test.jsp文件转换为Servlet文件时形成的。test_jsp.java文件代码如下所示。package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;public final class test_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory(); private static java.util.List _jspx_dependants; private javax.el.ExpressionFactory _el_expressionfactory; private org.apache.AnnotationProcessor _jsp_annotationprocessor; public Object getDependants() return _jspx_dependants; public void _jspInit() _el_expressionfactory = _jspxFactory.getJspApplicationContext (getServletConfig().getServletContext().getExpressionFactory(); _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache. AnnotationProcessor.class.getName(); public void _jspDestroy() public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; try response.setContentType(text/html; charset=GB2312); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write(rn); out.write(rn); out.write(第一个JSP例子rn); out.write(rn); out.print(欢迎学习JSP和Ajax技术); out.write(rn); out.write(rn); out.write(); catch (Throwable t) if (!(t instanceof SkipPageException) out = _jspx_out; if (out != null & out.getBufferSize() != 0) try out.clearBuffer(); catch (java.io.IOException e) if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); finally _jspxF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论