《Web开发技术》课件第9章.ppt

上传人(卖家):momomo 文档编号:8102774 上传时间:2024-11-28 格式:PPT 页数:75 大小:544KB
下载 相关 举报
《Web开发技术》课件第9章.ppt_第1页
第1页 / 共75页
《Web开发技术》课件第9章.ppt_第2页
第2页 / 共75页
《Web开发技术》课件第9章.ppt_第3页
第3页 / 共75页
《Web开发技术》课件第9章.ppt_第4页
第4页 / 共75页
《Web开发技术》课件第9章.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、第9章JSP技术9.1 JSP的本质及其工作原理的本质及其工作原理9.2 JSP运行环境和开发环境的创建运行环境和开发环境的创建9.3 JSP文件组织方式文件组织方式9.4 调试调试JSP程序方法程序方法9.5 JSP内部对象内部对象9.6 JSP应用实例应用实例 习题习题 9.1 JSP的本质及其工作原理的本质及其工作原理服务器端的脚本语言有很多种,如PHP、Perl、JSP(Java Server Pages)等。服务器端脚本语言都是被服务器中脚本解释程序解释执行的。脚本程序中要使用由网络发送或接收的数据,可通过脚本解释程序提供的API函数来访问。服务器端脚本所做的工作主要是完成所定义的“

2、业务逻辑”即数据流的具体实现和界面定义。Servlet通过把XHTML内嵌到Java代码中来实现业务逻辑数据流处理,最终以文档形式输出到客户端。而JSP则通过把某些形式的代码内嵌到XHTML文档中来实现一个文档的动态部分。JSP和Servlet的基本功能是相同的,只是JSP更适用于返回文档的大部分内容已经预先确定的情况,而Servlet则常用于返回文档的大部分内容需要动态产生的情况。准确地说,JSP是Java语言的宏脚本,即JSP是被JSP翻译程序翻译为Java语言的,最终执行的是Java代码。所以JSP的运行环境不仅需要带有JSP翻译程序的服务器(如开源的Tomcat服务器,也叫JSP解释引

3、擎),还需要有能编译和解释Java语言程序的JDK程序。这就是在安装JSP运行环境的时候,为什么先需要安装JDK,然后再安装服务器,如Tomcat的原因。Tomcat中还有将JSP脚本翻译为Java语言程序的Servlet库代码,这也是执行的时候需要的。接下来的细节问题是:JSP脚本是在什么时候被翻译,什么时候被执行的?答案是JSP脚本在第一次被客户端请求访问的时候完成翻译和编译,在以后的访问中如果此JSP源脚本文件的修改日期没有被更新的话,就跳过这两步,不再进行翻译和编译。这样设计的好处是节省了时间和计算机资源,提高了效率,以后每次请求的时候可以直接进入解释执行环节。为什么要创建和使用JSP

4、脚本呢?为什么不直接书写Java的Servlet程序呢?这就是“宏”的好处。“宏”能把复杂的、重复性的、冗长的代码用一个简短的标识符代替。Servlet书写服务器端程序时,需要不断地使用out.println()语句向客户端发送数据,书写起来不方便,而在JSP脚本中文本是不需要使用out.println()这样的语句来进行处理的。9.2 JSP运行环境和开发环境的创建运行环境和开发环境的创建1JSP运行环境运行环境运行环境是指给定一个JSP源文件程序,能翻译、编译和解释执行所需要的库和编译、解释程序。编译、解释程序和一些类的库代码在JDK中。JSP脚本翻译程序一般属于服务器中的一个脚本翻译模块

5、。此外,还需要负责和客户端通信的Web服务器。一般将脚本翻译模块和Web HTTP通信模块集成在一个Web服务器中,如Tomcat中。所以在创建运行环境时,主要做两件事情,即安装和配置。在不同的操作系统环境下,安装和配置步骤略有区别。因为使用Java语言开发的不依赖于特定操作系统支持的程序可以运行在不同的操作系统平台上,所以在学习的过程中,要分别在Windows平台和Linux平台上搭建运行环境、开发环境,将开发的程序在两种平台上运行,进一步体会和理解Java语言的跨平台特性。以下介绍在Windows环境下进行安装和配置,创建JSP运行环境的方法。在选择安装包时,要选择对应平台下的安装包。如在

6、Linux环境下选择rpm包和tar包(源代码包),在Windows环境下选择rar包或者exe包。在Windows操作系统上安装JDK,这里选择的版本是jdk1.6.0。注意JDK的版本和Tomcat要求的JDK版本的匹配程度。第一步:获取JDK安装包。可以从Sun官方网站提供的下载地址下载,也可以从其他途径获得,如图9.1所示。第二步:安装JDK。按照安装向导提示,一步一步地安装完毕即可。配置环境变量PATH和CLASSPATH。PATH指示查找编译程序和解释程序的目录位置。CLASSPATH指示解释CLASS代码的目录位置。图9.1 JDK安装包选择命令“我的电脑属性高级环境变量新建系统

7、变量(注意不是XXX用户变量)”,可以新建PATH变量。如果PATH变量已经存在,则不用新建,就在原来的基础上加一个分号“;”(注意是英文状态下的分号),然后把编译程序和解释程序的目录附在后面即可。注意不要把原来的PATH变量的值删除或清空,因为这个搜索路径是一个目录字符串列表,如果删除了原来的目录字符串,那原来的程序的搜索路径就会受到影响。还有一个要注意的地方就是,所添加的目录路径字符串要用英文状态下的引号括起来,如所安装的JDK的目录位置是C:Program FilesJavajdk1.6.0bin,一定要定位和指示到bin这层目录,如图9.2所示。图9.2 PATH环境变量设置 图9.3

8、 CLASSPATH环境变量设置 对系统用户添加系统变量CLASSPATH,如果CLASSPATH已经存在,则只需修改即可。在变量值中添加系统库的目录位置和要运行的Class代码目录位置,如图9.3所示。CLASSPATH的变量值为“C:ProgramFilesJavajdk1.6.0libdt.jar”;“C:Program FilesJava jdk1.6.0libtools.jar。2JSP开发环境开发环境开发环境主要指进行编辑和调试的环境。先进的编辑工具可以提高程序员的编程效率,减少出错,当出现语法、书写错误时能给出提示及改正建议;当使用一些库中的类时,能自动列出要使用的类的数据和函数

9、。编辑JSP源代码可以选择记事本编辑工具、EditPlus工具程序、Eclipse等。关于Eclipse的配置和工程的创建请参考第1章1.6节。开发JSP文件时需要在工程对应的存储目录的子目录中选择新建JSP File类型。9.3 JSP文件组织方式文件组织方式一个JSP文件又称为一个JSP页面、一个JSP源文件,最终会被翻译为一个Servlet类。一个JSP文件从两方面来考虑:一方面就是界面的构建,即最终在客户端浏览器中解释的HTML格式的文件内容展示的结果;另一方面就是在服务器端执行的任务,如数据库查询、计算等。这些任务代码通常封装在标记内,处理执行的结果向客户端输出时使用输出语句out.

10、println()。println()方法可将各种基本数据转换为字符串,写入输出流,然后由服务器负责把数据发到客户端,最后在客户端浏览器显示执行结果。所以,一个JSP文件既作界面的定制,也作业务逻辑的实现处理。一个JSP文件由元素组成。“元素”可以构建和组成JSP文件的内容。构成JSP文件的“元素”可以分为两种:一种是构成界面的HTML标签元素和内容;另一种是构成程序的标签元素,这种元素按用途和功能来分,又分为指令(Directive)、动作(Action)和脚本标签。指令告诉翻译程序怎么把JSP脚本翻译为Servlet代码。它的表示形式是。最常用的指令是page指令和include指令。pa

11、ge指令在JSP文件被翻译为Servlet文件时起作用,用来定义说明整个JSP页面的全局属性。page属性(即包含的各个数据项)可以根据程序员的需要全部设置,也可以设置任意的一个属性值。include指令用来在源代码级别简单复制另一个文件。动作是JSP已经预先定义的能完成一定功能的脚本代码的调用。动作标识通用的使用格式如下:或JSP定义的标准动作有、等,其中、是使用JavaBean时使用的。在使用中要注意动作与指令元素的表示方式的区别。最频繁使用的是脚本标签,它告诉翻译程序在此标签中的Java源代码要原封不动地引用,它的表示形式是。脚本中可以大量书写Java代码,它是JSP程序功能的主要实现部

12、分。JSP程序中功能的扩展是通过使用类来进行的,通过类创建对象分配空间和初始化后,通过调用其方法即可完成程序功能。其中一种类方法是JavaBean。JavaBean是构成Java程序的“元件”(因为Java是“咖啡”,JavaBean(咖啡豆)是制作咖啡的原材料)。创建JavaBean实例就是创建JavaBean对象。创建一个JavaBean对象和使用该对象的方法在表达上有两种形式:一种是使用动作标签,另一种是直接在脚本中通过new关键字创建。9.4 调试调试JSP程序方法程序方法一个JSP文件包含界面和功能,多个JSP文件即构成了一个能完成一定应用的服务器端程序。由于一个JSP文件被翻译为一

13、个Servlet类,故执行JSP程序的时候,实际执行的是该Servlet代码。因此调试JSP程序的时候需要在执行结果、JSP被文件翻译后对应的Servlet以及JSP源文件三者之间定位和切换错误位置并最终在JSP源文件中修正错误。当客户端出现程序运行错误页面时,对照行号和提示信息,查看JSP文件被翻译后对应的Servlet文件,然后再对照回去,查看原JSP文件的错误位置。JSP文件中常见的错误是:对象引用为空,但却调用了对象的方法,即并没有为对象分配内存和调用构造方法完成其初始化,就去调用对象的方法欲完成对象数据结构提供的功能。其结果是虚拟机抛出NullPointerException异常。9

14、.5 JSP内部对象内部对象JSP翻译程序环境为编程人员默认提供了request、response、out、session、application、pageContext、config、page、exception对象,这些对象的空间分配和初始化由翻译程序加上分配和初始化语句实现,故编程人员可直接调用相应方法完成其功能。这些对象的名称必须小写,否则翻译程序不认。request对象提供了访问客户端请求消息的方法,通过调用这些方法可以访问到请求消息的相关信息,如请求消息的各字段信息,请求消息中包含的向服务器端提交的参数信息等,是获取客户端提交信息的必用对象。request对象封装了客户端向服务器发

15、送的请求消息的数据,通过调用其相应方法完成对应数据项信息的获取,所以request对象的方法名称都是以get开头的。response对象提供了服务器端返回客户端响应消息的方法,通过调用这些方法可以访问到响应消息的相关信息,也可以设置响应消息各字段的内容。out对象是服务器向客户端发回的响应消息的字符流类PrintWriter的对象,它可以把各种基本数据类型转换成字符串,以字符串的方式写入流中。要向客户端返回响应消息数据,只需要以字符串的形式往此流中写数据即可。这些响应消息的数据由服务器来发送。编程人员根据需要可以在一个JSP文件的脚本代码段中使用这些对象的相关方法完成诸如客户端请求消息数据的获

16、取、向客户端输出数据、获取应用中存储的相关数据(包括跨页面的)、获取异常信息等功能。这些功能是一个具体的应用程序中肯定会使用到的功能,可以看成是程序的输入和输出。可以根据功能的需要,使用其中的任意一个对象,也可以使用多个对象。这部分内容请读者参考相关书籍和API文档。9.6 JSP应用实例应用实例实例一登录模块【例9.1】将例7.6的案例改为用JSP程序实现。分析:本例使用动作实现页面跳转,用动作实现传递参数,用request对象获取请求消息数据内容。loginnew.html文件内容如下:登录模块欢迎登录系统用户名:密码:forward.jsp文件内容如下:login forwardjsp:

17、param name=username value=/jsp:param name=username value=/jsp:param name=username value=/jsp:param name=username value=/ogin_ok.jsp文件内容如下:login success%String username=null;String password=null;request.setCharacterEncoding(gb2312);response.setContentType(text/html;charset=gb2312);username=request.ge

18、tParameter(username);password=request.getParameter(password);out.println(“登录成功,用户名”+username+“,”);out.println(密码 +password+);%error.jsp文件内容如下:Error%String username=null;String password=null;request.setCharacterEncoding(gb2312);response.setContentType(text/html;charset=gb2312);username=request.getPar

19、ameter(username);password=request.getParameter(password);out.println(您输入的用户名+username+);out.println(和密码+password+有一项为空,请重新输入:);%返回如果forward.jsp文件中的以下语句:jsp:param name=username value=/jsp:param name=username value=/写错为jsp:param name=username value=/jsp:param name=username value=/则属于语法错误,编译将提示 The jsp

20、:param action must not be used outside the jsp:include,jsp:forward,or jsp:params elements 。请读者注意语法格式。运行结果如图9.4、图9.5(登录成功)、图9.6(登录失败)所示。图9.4 登录界面图9.5 登录成功界面图9.6 登录失败界面实例二获取请求消息【例9.2】通过request对象获取请求消息的第一行数据及请求头部各字段数据。源文件capture.jsp内容如下:captureRequest method:URI:Protocol:Remote address:Remote port:Serv

21、er name:Remote host:ServletPath:Header(host):Header(user-agent):%Enumeration headernames=request.getHeaderNames();while(headernames.hasMoreElements()String headername=(String)headernames.nextElement();String headervalue=request.getHeader(headername);out.println(Header(+headername+):+headervalue);%运行

22、结果如图9.7所示。图9.7 获取请求消息实例三日期显示【例9.3】从服务器系统获取当前时间。源文件date.jsp内容如下:Date and Time Show执行结果如图9.8所示。图9.8 获取系统当前时间实例四文件上传在实际的Web应用中,文件操作是比较常用的,比如文件上传和下载。可以使用Java的输入/输出流来实现文件的读/写操作。【例9.4】上传一个文本文件到服务器。分析:客户通过一个JSP页面上传文件给服务器时,调用内置对象request的方法getInputStream()获得输入字节流,通过该输入字节流读入客户上传的全部信息,包括文件的内容以及表单域的信息。实现:共两个页面。

23、一个页面为upload.jsp,该页面表单中含有File类型的控件,且此控件域的ENCTYPE属性值设为“multipart/form-data”。另一个页面为filesave.jsp,该页面通过request对象读取输入字节流,并通过文件输出字节流将读取的数据写入文件test.txt中。扩展:请读者将文件的内容和表单域的信息分离,通过表单域信息获取上传文件名称,写入文件的文件名采用上传文件的文件名,只将上传文件内容写入文件中。进一步扩展,实现上传任意类型的文件,使用jspSmartUpload组件实现一个功能完善的文件上传模块。upload.jsp文件如下:Upload file选择要上传的

24、txt文件:选择要上传的txt文件:filesave.jsp文件如下:File upload success执行结果如图9.9图9.11所示。图9.9 上传选择文件图9.11 存储的文件图9.10 上传成功后界面 实例五计算正弦三角函数值【例9.5】将第7章例7.5改写为用JSP实现。源文件inputnew.jsp由input.jsp文件中表单项属性action修改而得到,源代码如下:通过JSP求Sin正弦值通过JSP求Sin正弦值:sin.jsp求取sin正弦值,文件如下:Insert title here%response.setContentType(text/html;charset=

25、gb2312);out.println();String strNumber=request.getParameter(number);double dVar=0.0;if(strNumber!=null)trydVar=Double.parseDouble(strNumber);out.print(+Math.sin(dVar);catch(NumberFormatException exception)out.print(input number letter please!);elseout.print(input number letter please!);%执行结果界面如图9.12

26、、图9.13所示。图9.12 输入值界面图9.13 求取结果界面 习习 题题1JSP程序的运行环境是什么?需要安装和配置哪些软件?JSP程序如何被编译,如何被解释执行?2一个JSP程序文件一般可以完成哪两个功能?3怎样极大地扩充JSP程序的功能?JSP程序的功能主要在哪里完成?4一个由多个JSP页面完成的具体的Web应用程序,其各个页面之间数据的传递有哪些方式?5试着从编写、编译、运行方面比较JSP程序和Servlet程序。6用什么语句可以完成脚本中表达式的同样功能?7和有什么区别?可从翻译、编译和运行结果上来比较分析。8选择题:(1)当Tomcat Web服务器安装配置正确并启动成功之后,在

27、端口(端口未改动,采取默认值)上监听客户端请求。此时我们常通过在客户端浏览器中发一个请求来测试它。在浏览器地址栏中输入的URL正确的是()。A.http:/localhost:8088B.http:/127.0.0.0:8080C.http:/localhost:80D.http:/127.0.0.1:8080(2)下列()类对象存储的信息是在客户端的。A.Session B.CookieC.Application D.PageContext(3)用来在JSP文件被编译时引入一个静态或动态的页面到一个JSP程序文件中的JSP语法形式是()。A.B.jsp:forwardpage=relativ

28、eURL|/C.jsp:include page=relativeURL|flash=true/D.(4)在JSP中()内部对象封装了客户端提交的请求信息,并经常用该对象来获取表单中的数据信息。A.Request B.Response C.Application D.Out(5)()不是JSP中的指令元素。A.page指令 B.include指令 C.plugin指令 D.taglib指令(6)()不是JSP动作。A.B.C.D.(7)JDBC中()类对多个驱动程序进行管理并可创建一个连接。A.Connection B.DriverManager C.Driver D.Statement(8)

29、当客户端浏览器向Tomcat Web服务器发出请求http:/127.0.0.1:8080/login.jsp后,以下说法中错误的是()。A.Tomcat服务器给客户端返回login.jsp文件B.Tomcat服务器首先把login.jsp转化为Servlet Java文件(假设login.jsp文件首次被请求),然后编译、执行,执行的结果通过Http Response消息传回去,传回的结果实质上是个HTML文件,进而浏览器解释执行结果C.Tomcat服务器在编译转化Servlet类文件时,如果没有JDK中的javac工具,将不能完成D.Tomcat服务器在编译转化Servlet类文件时,自动

30、调用JDK中的javac工具完成(9)下面关于指令和动作的区别,论述错误的是()。A.指令只在编译时有效,即告诉编译器,具体来说就是告诉引擎怎样把JSP文件翻译为ServletB.动作是在执行时有效,即告诉容器采取行为,被翻译成了服务行为C.指令和动作可以嵌入脚本中D.指令和动作都属于JSP页面元素(Element)(10)Web Container会根据()配置文件装载Servlet。A.web.xmlB.server.xmlC.不需要配置文件9编程实践题:编程实践题:(1)从网上下载jspSmartUpload组件,使用该组件实现一个功能完善的文件上传模块。(2)使用Java Mail API实现基于Web的带附件的电子邮件收发模块。(3)使用JFreeChart组件可以动态生成各种图片格式的图表。从网上下载该组件(官方网站http:/www.jfree.org/jfreechart/index.html)生成柱形图、饼形图、线图、区域图等,数据可自拟。(4)将第7章的例7.10改写为用JSP实现,并测试。10能力拓展题:能力拓展题:(1)在Linux系统上搭建JSP运行环境,将JSP程序代码部署到Linux系统中,并测试。(2)从网上搜索JSP开源项目、JSP插件等,试着参与一个感兴趣的开源项目,或者将搜索到的一些插件应用到所设计的系统中。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《Web开发技术》课件第9章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|