ImageVerifierCode 换一换
格式:PPT , 页数:115 ,大小:1.28MB ,
文档编号:7273160      下载积分:16 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-7273160.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(hwpkd79526)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

第12章 JSP程序设计.ppt

1、Java语言程序设计(第2版)1第十二章 JSP程序设计郑莉Java语言程序设计(第2版),郑莉,清华大学2目录 12.1 JSP简介 12.2 JSP与JavaBean 12.3 JSP标签库 12.4 JSP与Servlet 12.5 Web服务 12.6 本章小结Java语言程序设计(第2版),郑莉,清华大学312.1 JSP简介 Servlet和JSP(JavaServer Page)已成为开发电子商务等动态网站的首选技术,它们都是运行在服务器上的Java程序 Servlet HTML的编写和维护都比较困难,使用print语句生成HTML并不容易,非Java开发人员很难处理这些HTML

2、 JSP 静态内容的输出都采用标准的HTML,只用java语言编写页面中生成动态内容的代码 提供了对Java编程语言以及针对动态部分的servlet技术的完全访问Java语言程序设计(第2版),郑莉,清华大学412.1.1 什么是JSP程序 JSP 简单的说,就是嵌入了Java代码的HTML,由静态HTML、专用的JSP标签和Java代码组成 服务器端的技术。在后台被自动转换成servlet 仅在修改后的第一次被访问时,才会被转换成servlet并进行编译,创建JSP唯一的一个一实例,并调用_jspInit完成初始化,之后每个用户请求都会创建一个调用JSP实例的_jspService方法的线程

3、。因而多个并发请求会导致多个线程同时调用_jspService Tomcat中,默认目录下的JSP文件被转换生成的servlet文件及编译后生成的class文件被放在install_dir/work/Catalina/localhost/_/org/apache/jsp目录下12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学512.1.1 什么是JSP程序JSP页面被请求后的操作 将将JSP页面页面转换为转换为servlet编译编译servlet将将servlet载载入到服务器入到服务器内存中内存中调用调用jspInit调用调用_jspService页面初次创建页面初次创建请求

4、请求1有有有有有有有有有有请求请求2无无无无无无无无有有服务器重启后服务器重启后请求请求3无无无无有有有有有有请求请求4无无无无无无无无有有页面修改后页面修改后请求请求5有有有有有有有有有有请求请求6无无无无无无无无有有12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学6 JSP文件在服务器的部署 可以和常规的HTML页面放在相同的目录中,并使用和常规HTML相同的URL访问它们 除了不允许将WEB-INF和META-INF作目录名之外,可以使用任何喜欢的目录名 Tomcat中JSP的默认目录是install_dir/webapps/ROOT,我们只要把编写好的JSP文件直接放

5、在此目录下即可 例如install_dir/webapps/ROOT/SomeDirectory/SomeFile.jsp 则对应的URL为http:/host:port/SomeDirectory/SomeFile.jsp12.1 JSP简介12.1.1 什么是JSP程序JSP页面被请求后的操作Java语言程序设计(第2版),郑莉,清华大学7 JSP文件在服务器的部署 可以和常规的HTML页面放在相同的目录中,并使用和常规HTML相同的URL访问它们 除了不允许将WEB-INF和META-INF作目录名之外,可以使用任何喜欢的目录名 Tomcat中JSP的默认目录是install_dir/w

6、ebapps/ROOT,我们只要把编写好的JSP文件直接放在此目录下即可 例如install_dir/webapps/ROOT/SomeDirectory/SomeFile.jsp 则对应的URL为http:/host:port/SomeDirectory/SomeFile.jsp12.1 JSP简介12.1.1 什么是JSP程序NetBeans对JSP的支持Java语言程序设计(第2版),郑莉,清华大学812.1.2 JSP语法概述 除了标准的HTML以外,JSP主要包括三类组件 脚本元素(scripting elements)使你可以向JSP文件产生的servlet文件中插入代码 指令标签

7、(directives)将影响由JSP页产生的servlet的总体结构 动作标签(actions)影响JSP运行时的功能12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学9 脚本元素向JSP文件产生的servlet文件中插入代码,主要有三种形式 表达式%和=之间不能有空格。expression必须能求值,服务器计算出值后以字符串形式发送到客户端显示 程序片 一个JSP页面可以有许多,它们将被插入到生成的servlet文件的_jspService方法中 每次客户端请求都会新开一个线程,调用servlet的service方法,service方法再调用_jspService方法12.

8、1.2 JSP语法概述脚本元素12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学10 声明语句 声明的内容包括变量和方法,将被插入到生成servlet的类体中,在_jspService方法之外,成为类变量和类方法,直到服务器关闭才被释放 当多个客户请求一个JSP页面时,多个线程将共享这些变量和方法,因而任何一个用户对这些变量操作的结果,都会影响到其他用户12.1.2 JSP语法概述脚本元素12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学11 指令标签 将影响由JSP页产生的servlet的总体结构 其格式为 directive代表指令名称 attribute代

9、表该指令中可选的属性名称 value代表属性值并且总是用单引号或双引号括起来,要想在属性值value中输出引号,可在该引号前用一个反斜杠“”在JSP中,有三种类型的指令 page include taglib12.1.2 JSP语法概述指令标签12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学12 page指令 可放在文档内的任何位置,该指令对整个页面有效 可以定义一个或多个大小写敏感的属性,包括import、contentType、isThreadSafe、Session、buffer等 import属性 为JSP页面引入Java核心包中的类,这样就可以在脚本部分使用这些类,

10、如:可以为import属性指定多个值,这些值用逗号分割,这样就可以引入若干个包或类,如:JSP页面默认import属性已经有如下的值:java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*“除import属性外,Page指令的其它属性只能指定一个值12.1.2 JSP语法概述指令标签/page指令12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学13 contentType属性 定义JSP页面相应的MIME(Multipurpose Internet Mail Extension,多用途Inter

11、net 邮件扩展)类型和JSP页面字符编码 其属性使用以下两种格式之一 或者 例如 其属性默认值为12.1.2 JSP语法概述指令标签/page指令12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学14 isThreadSafe属性 用来设置JSP页面是否可多线程访问 设为true时,JSP页面能同时响应多个客户的请求 设为false时,同一时刻只能处理一个客户的请求,其它客户须等待 其默认值为true session属性 表示当前的JSP页面是否参与HTTP会话 设为true时,可以使用内置的javax.Servlet.HttpSession类型的一个名为session的对象

12、 设为false时,则该对象不被创建 默认值为true12.1.2 JSP语法概述指令标签/page指令12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学15 buffer属性 指定jsp内置输出流out变量使用的缓冲区的尺寸,如果设置为none,则不使用缓冲区 默认值是8kb out变量是JspWriter类型的,JspWriter是java.io.Writer类的子类。累计输出内容超过了这里设定的大小、完成了此页、或者输出被明确清除(如使用response.flushBuffer),文档才被发送给客户显示 例如 autoflush属性 控制out的缓冲区在装满时的处理,默认

13、为true 设为true时,装满时则自动清除缓冲区 设为false时,装满后则会出现异常 buffer的值是none时将autoflush设为false是不合法的12.1.2 JSP语法概述指令标签/page指令12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学16 info属性 定义了一个通过getServletInfo方法可从servlet中检索到的串 格式为 isErrorPage属性 指明当前页是否能充当其它JSP页面的错误页。采用以下两种格式之一或者。errorPage属性 指定一个处理当前页未被捕获的任何异常的页面 格式为 这个URL指定的错误页的isErrorPa

14、ge属性必须被设为true方可使用12.1.2 JSP语法概述指令标签/page指令12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学17 include指令 与page指令不同,该指令应该放在你想要将外部文件插入的位置,它可以将文件整体插入到该处 其格式为 Jsp文件被转换成servlet文件时,外部文件就被插入了,然后统一进行编译 当外部文件发生改变时,当前页面无法得到通知,要想得知外部文件的任何改变,当前页面必须重新编译,由上一节jsp的操作过程可知,必须重新保存该jsp文件12.1.2 JSP语法概述指令标签/include指令12.1 JSP简介Java语言程序设计(

15、第2版),郑莉,清华大学18 taglib指令 JSP1.1规范中新增的 指定一个标记库,用于扩充标准的JSP标记集 完成三个任务 首先,它通知JSP服务器,页面使用一个标记库 其次,它指定包含标记库标识符的特殊jar文件的位置 最后,它指定一个用于唯一区分这些新标记的标记前缀 格式为:uri属性:一个引用标记库描述符文件(后缀名为TLD:Tag Library Descriptor)的绝对或相对URL prefix属性:指定一个将要在TLD文件定义的标记名前面使用的前缀 如果TLD文件定义了一个名为tag1的标记,并且prefix属性的值设为test,那么实际的标记名将为test:tag11

16、2.1.2 JSP语法概述指令标签/taglib指令12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学19 动作标签 一种特殊的标签,影响JSP运行时的功能 格式为 action_name代表动作名称 attribute代表属性名称 value代表属性值 分为两类 Resource动作 JavaBean动作12.1.2 JSP语法概述动作标签12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学20 Resource动作 include动作标签 告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入,例如:如果包含的是普通的文本文件,就将文件的内容发送到客户

17、端,由客户端负责显示 如果包含的是JSP文件,JSP引擎就执行这个文件,然后将执行的结果发送到客户端显示 如果修改了被包含的文件,那么运行时将看到修改后的结果,这一点和include指令不同 可结合param指令,向要包含的文件传送信息,被包含的文件通过JSP的内置对象request调用getParameter方法获得参数值。格式为:12.1.2 JSP语法概述动作标签/Resource动作12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学21 forward动作标签 告诉JSP页面从该指令处停止当前页面的继续执行,而转向其他的一个页面,当前页面后边的内容将不被执行,例如:该标

18、签也可结合param指令,向要转到的页面传送信息,格式同include标签12.1.2 JSP语法概述动作标签/Resource动作12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学22 plugin动作标签 用于插入Applet或JavaBean到JSP页面,组件必须被下载到浏览器并且在客户端执行 param元素可以用于发送参数到Applet或JavaBean(一个可重复使用的软件组件,实际上就是一个Java类)如:prompt message 当客户访问含该段代码的JSP文件时,如果客户端不支持applet,将导致下载Java plug插件,出现客户选择是否下载插件的界面。

19、用户下载安装后,就可以使用Java虚拟机加载执行Java applet小应用程序A.class了 fallback元素可用于指定组件失败时发送到客户端的错误信息字符串12.1 JSP简介12.1.2 JSP语法概述动作标签/Resource动作Java语言程序设计(第2版),郑莉,清华大学23 JavaBean动作 useBean动作标签 格式为或者 服务器将加载该bean类的一个对象 setProperty动作标签 设置bean的属性 getProperty动作标签 获取bean属性的值并输出12.1 JSP简介12.1.2 JSP语法概述动作标签/JavaBean动作Java语言程序设计(

20、第2版),郑莉,清华大学2412.1.3 JSP内置对象 JSP的内置对象 在JSP页面的脚本元素中,有些不用声明就可以使用的对象 包括out、request、response、session、application等 out对象对象 是javax.servlet.jsp.JspWriter类的实例,JspWriter包含的方法大多数与java.io.PrintWriter类一样 这个输出流对象用来向客户端输出数据,其可调用的方法如下表12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学2512.1.3 JSP内置对象(续)out对象可使用的方法名称名称解释解释print(Boo

21、lean b)输出一个布尔值输出一个布尔值print(char c)输出一个字符输出一个字符print(double d)输出一个双精度的浮点数输出一个双精度的浮点数print(float f)输出一个单精度的浮点数输出一个单精度的浮点数print(long l)输出一个长整型数据输出一个长整型数据print(String s)输出一个字符串输出一个字符串newLine()输出一个换行符输出一个换行符flush()输出缓冲区里的内容输出缓冲区里的内容close()关闭流关闭流12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学26 request对象 是javax.servlet

22、.http.HttpServletRequest的实例 客户每次请求页面时,JSP引擎创建一个request对象代表该请求 封装了用户提交的信息,这些信息包括 HTTP请求的请求行 HTTP头 信息体 调用相应的方法可以获取封装的信息,最常用的方法是request.getParameter(param_name)12.1 JSP简介12.1.3 JSP内置对象(续)request对象Java语言程序设计(第2版),郑莉,清华大学27名称名称解释解释getProtocal()获取客户向服务器提交信息使用的通讯协议获取客户向服务器提交信息使用的通讯协议getServletPath()获取获取JSP

23、文件的目录文件的目录getContentLength()获取提交信息的长度获取提交信息的长度getMethod()获取客户提交信息的方式,例如获取客户提交信息的方式,例如post或或getgetHeaderNames()获取头名字的一个枚举获取头名字的一个枚举getHeader(String s)获取获取HTTP头文件中由头文件中由s指定的属性的值,例如指定的属性的值,例如“content-type”,“cookie”等等getRemoteHost()获取客户机的名称获取客户机的名称getRemoteAddr()获取客户机的获取客户机的IP地址地址getServerName()获取服务器的名称

24、获取服务器的名称getServerPort()获取服务器的端口号获取服务器的端口号getParameterNames()获取客户提交的信息体部分中所有参数的名字获取客户提交的信息体部分中所有参数的名字getParameter(String_name)获取指定参数名字的参数值获取指定参数名字的参数值12.1 JSP简介12.1.3 JSP内置对象(续)request对象的常用方法Java语言程序设计(第2版),郑莉,清华大学28 response对象对象 javax.servlet.http.httpServletResponse的实例 与request对象相对应,我们可以用response对象

25、对客户的请求做出动态响应,向客户端发送数据。类似于HTTP请求,HTTP响应也由三个基本部分组成 状态行:包括使用的协议以及状态代码,表示请求是否成功 头:包含关于服务器和返回的文档的消息,例如服务器名称和文档类型等 信息体 使用这个对象的一些方法可以完成如下任务 动态设置contentType属性 页面重定向 设置返回状态码等12.1 JSP简介12.1.3 JSP内置对象(续)response对象Java语言程序设计(第2版),郑莉,清华大学29名称名称解释解释setStatus(int sc)设置返回状态码设置返回状态码setContentType(String type)设置被发送文档

26、的设置被发送文档的MIME类型类型setHeader(String name,String value)设置头中指定属性设置头中指定属性name为指定值为指定值valuesetRedirect(String location)重定向到指定重定向到指定URL 12.1 JSP简介12.1.3 JSP内置对象(续)response对象的常用方法Java语言程序设计(第2版),郑莉,清华大学30 会话的概念 从一个客户打开浏览器连接到服务器的某个服务目录,到客户关闭浏览器离开该服务目录称为一个会话 每个会话只对应于一个客户,并且可以跨多个页面 session对象 javax.servlet.http

27、.HttpSession的实例,对应于会话的概念 用于在使用无状态连接协议(如HTTP)的情况下跟踪关于某个客户的信息,对识别客户是非常重要的 在客户首次访问某服务目录中的任何一个JSP页面时创立,并且具有一个独一无二的Id号,直到客户关闭浏览器或这个session对象达到了最大生存时间,服务器端该客户的session对象才被取消 调用相应的方法可以存储客户在访问各个页面期间提交的各种信息,比如姓名、编号等12.1 JSP简介12.1.3 JSP内置对象(续)session对象Java语言程序设计(第2版),郑莉,清华大学31名称名称解释解释int getMaxInactiveInterval

28、()返回会话过期前需要经过的秒数返回会话过期前需要经过的秒数void setMaxInactiveInterval(int interval)设置某个会话的生命期设置某个会话的生命期long getCreationTime()返回创建会话的时间返回创建会话的时间long getLastAccessedTime()返回上次使用此会话的时间返回上次使用此会话的时间void invalidate()使得使得session对象无效对象无效boolean isNew()判断是否是个新会话判断是否是个新会话String getId()返回识别客户的独一无二的字符串返回识别客户的独一无二的字符串Enumer

29、ation getIds()返回一个包含当前所有会话返回一个包含当前所有会话Id的枚举值的枚举值void setAttribute(String key,Object value)在在session对象中添加对象中添加obj,并指定索引关键,并指定索引关键字为字为keyObject getAttribute(String name)从从session对象获取关键字为对象获取关键字为key的对象的对象void removeAttribute(String name)从从session中删除指定索引关键字的对象中删除指定索引关键字的对象Enumeration getAttributeName()获

30、取获取session对象存储的所有键名对象存储的所有键名12.1 JSP简介12.1.3 JSP内置对象(续)session对象的常用方法Java语言程序设计(第2版),郑莉,清华大学32 application对象 javax.servlet.ServletContext的实例。比session对象的生存时期更长。服务器启动后,就产生了这个application对象,直到服务器关闭,该对象才被取消 所有客户共享这个内置的application对象,所以任何客户对该对象中存储的数据的改变都会影响到其他客户,因此,在某些情况下,对该对象的操作需要同步处理 12.1 JSP简介12.1.3 JSP

31、内置对象(续)application对象Java语言程序设计(第2版),郑莉,清华大学33名称名称解释解释void setAttribute(String key,Object obj)将将obj对象添加到对象添加到application对象中,对象中,并为并为obj指定一个索引关键字指定一个索引关键字key。Object getAttribute(String key)获取获取application对象中指定关键字的对对象中指定关键字的对象象Enumeration getAttributeNames()返回返回application对象的所有索引关键字对象的所有索引关键字void remov

32、eAttribute(String key)删除指定索引的对象删除指定索引的对象12.1 JSP简介12.1.3 JSP内置对象(续)application对象的常用方法Java语言程序设计(第2版),郑莉,清华大学34 在表单中输入一个自然数,计算从1到该数的累加和%!int continuousSum(int n)int sum=0;for(int i=1;i12.1 JSP简介12.1.4 一个简单的JSP程序例12-1Java语言程序设计(第2版),郑莉,清华大学3512.1.4 一个简单的JSP程序(续)计算连续和 请输入一个自然数 input type=text name=numb

33、er value=的连续和是12.1 JSP简介Java语言程序设计(第2版),郑莉,清华大学3612.1 JSP简介12.1.4 一个简单的JSP程序例12-1运行结果Java语言程序设计(第2版),郑莉,清华大学3712.2 JSP与JavaBean 指令标签和动作标签 都可以嵌入代码。前者实际上是将代码插入行内,后者是将另一个页面的输出插入原来的页面 这些方法无助于分离表示逻辑和业务逻辑,它们都造成了显著的可伸缩性问题,不利于开发人员分工合作 JavaBean 解决了这个问题,它将一系列相关的属性和方法组合在一个Java类中,构成了一个组件 在JSP程序中,只要使用JavaBean动作标

34、签调用该组件就可以了Java语言程序设计(第2版),郑莉,清华大学3812.2.1 JavaBean简介 JavaBean 其实就是Java类 必须使用一组相当简单而又标准的设计和命名约定,因而调用它们的应用程序无须理解其内部工作原理,就可以很容易的使用JavaBean的方法 JavaBean类的一个实例叫做一个bean 通常我们将JavaBean文件取名为XxxBean12.2 JSP与JavaBeanJava语言程序设计(第2版),郑莉,清华大学3912.2.1 JavaBean简介(续)JavaBean的设计要求 对于JSP中使用的JavaBean,有三个设计要求 必须拥有一个默认(无参

35、数)的构造方法 如果未声明任何构造方法,默认的构造方法会被自动创建 JSP元素创建bean时,会调用默认构造方法 类中不应该有公开的属性 对于类内的属性,通常应该提供设置和获取其值的方法 public void setXxx(Objec_type value)方法进行设置 public Object_type getXxx()方法进行获取,如果该属性是布尔类型的,允许使用public boolean isXxx()获取属性值 如果某个属性只有getXxx或isXxx方法,叫做只读属性12.2 JSP与JavaBeanJava语言程序设计(第2版),郑莉,清华大学40 可以使用JSP脚本元素访问

36、类的任意方法 访问bean的标准JSP动作只能使用那些遵循getXxx/setXxx或isXxx/setXxx命名约定的方法12.2 JSP与JavaBean12.2.1 JavaBean简介(续)JSP对JavaBean的访问Java语言程序设计(第2版),郑莉,清华大学41 设计一个描述员工信息的JavaBean类。包括编号、姓名、性别、工资、职务属性package myBeans;public class EmployeeBean private int id=0,salary=0;private String name=none,occupation=none;private bool

37、ean male=true;public int getId()return id;public void setId(int id)this.id=id;public String getName()return name;public void setName(String name)this.name=name;public boolean isMale()return male;public void setMale(boolean male)this.male=male;public int getSalary()return salary;public void setSalary

38、(int salary)this.salary=salary;public String getOccupation()return occupation;public void setOccupation(String occupation)this.occupation=occupation;12.2 JSP与JavaBean12.2.1 JavaBean简介(续)例12-2Java语言程序设计(第2版),郑莉,清华大学42 EmployeeBean类满足成为JavaBean的条件 没有公开的实例变量 没有声明任何显式的构造函数,从而也就拥有了一个默认的无参数的构造函数 它的属性的设置和获

39、得都使用了标准的形式12.2 JSP与JavaBean12.2.1 JavaBean简介(续)例12-2说明Java语言程序设计(第2版),郑莉,清华大学43 JavaBean类在Web应用中的部署 不能放在含有JSP文件的目录中,而应该放在安装servlet的目录中,且一定要使用包 单个JavaBean类的字节码文件的正确位置是webAppDir/WEB-INF/classes/PackageName/含有bean类的JAR文件应该放在webAppDir/WEB-INF/lib/目录中 在JSP页面中,可以使用三种JavaBean动作标签构建和操作JavaBean组件 useBean动作标签

40、 setProperty动作标签 getProperty动作标签12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBeanJava语言程序设计(第2版),郑莉,清华大学44 表示建立一个bean类的对象 class指定的bean类的类名 id指定该实例的名字 scope属性表示bean的有效范围,有4个可选值 Page Request Session Application 如果已经存在scope和id相同的实例,则访问现存的实例12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)建立JavaBeanJava语言程序设计(第2版),郑

41、莉,清华大学45 Page 默认值,有效范围是当前请求访问的JSP页面 表示每次请求访问JSP页面时都会创建新的bean,并将其放在PageContext对象中 servlet可以通过预定义变量pageContext的getAttribute方法访问它 Request 有效范围是当前的请求 将bean放在HttpServletRequest对象中,如果已经存在,则调用之,可通过getAttribute方法访问 在使用jsp:include,jsp:forward,或者RequestDispatcher的include或forward方法时,两个JSP页面,或JSP页面和servlet将会共享该

42、bean12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)建立JavaBeanJava语言程序设计(第2版),郑莉,清华大学46 Session 有效范围是客户的会话期间 表示要将bean实例存储到与当前请求相关的HttpSession对象中 如果这个客户在多个页面中相互链接,每个页面都包含有一个useBean标签,这些useBean标签中id的值相同,并且scope的值都是session,那么该客户在这些页面得到的bean是相同的一个 Application 表示要将bean实例存储在ServletContext中,ServletContext由Web应

43、用中多个servlet和JSP页面共享 所有客户共享这个bean,如果一个客户改变这个bean的某个属性的值,那么所有客户的这个bean的属性值都发生了变化 这个bean直到服务器关闭才被取消12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)建立JavaBeanJava语言程序设计(第2版),郑莉,清华大学47 表示读取bean属性的值 bean的名称由name项指定,与useBean标签的id项对应 property项指定属性名称 该语法只能读取在JavaBean类文件中有getXxx方法的属性 也可用JSP脚本元素得到相同的结果12.2 JSP与Jav

44、aBean12.2.2 在JSP程序中使用JavaBean(续)取得Bean的属性值Java语言程序设计(第2版),郑莉,清华大学48 表示设置bean的属性值 name项指定bean的名称,与useBean标签的id相对应 property项指定属性名称 value项指定属性的值 该语法只能设置JavaBean类文件中有setXxx方法的属性 也可以用JSP脚本元素得到相同的结果12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)设置Bean的属性值Java语言程序设计(第2版),郑莉,清华大学49 建立JSP文件Ex12-3.jsp使用上节建立的Empl

45、oyeeBean使用JavaBean 初始值:名字是:编号是:是否男性?工资是:元 职务是:修改后:名字是:编号是:是否男性?工资是:元 职务是:12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)例12-3Java语言程序设计(第2版),郑莉,清华大学50 首先显示初始值,修改后,显示新值12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)例12-3运行结果Java语言程序设计(第2版),郑莉,清华大学51 通过表单使用上节建立的EmployeeBean使用JavaBean 姓名:性别:男 女 编号:职务:工资:名字是:

46、编号是:是否男性?工资是:元 职务是:12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)例12-4Java语言程序设计(第2版),郑莉,清华大学52 在表单中填入信息后,将显示填入的信息12.2 JSP与JavaBean12.2.2 在JSP程序中使用JavaBean(续)例12-4运行结果Java语言程序设计(第2版),郑莉,清华大学5312.3 JSP标签库 JSP标签库 除了使用JavaBean,JSP还可以使用定制的标记,便于Web开发人员实现内容和功能的分离 相对于使用JavaBean,用户自定义的标签库有如下优点 beans不可以操纵JSP的内

47、容,但标签库可以 使用标签比bean可以用更加简单的形式完成复杂的功能,JSP通过指令标签中的taglib指令使用标签库Java语言程序设计(第2版),郑莉,清华大学5412.3 JSP标签库(续)使用自定义标签比使用bean要复杂一些,它需要3个部分 实现标签行为的标签处理类 将XML元素名称映射到标签实现上的标签库描述文件(后缀名为tld)使用标签的JSP程序Java语言程序设计(第2版),郑莉,清华大学5512.3.1 标签处理类 标签处理类 是一个Java类,用来告诉系统在JSP程序中遇到标签后应该做些什么 必须实现javax.servlet.jsp.tagext.Tag接口 通常通过

48、扩展如下两类来实现 javax.servlet.jsp.tagext.TagSupport javax.servlet.jsp.tagext.BodyTagSupport12.3 JSP标签库Java语言程序设计(第2版),郑莉,清华大学5612.3.1 标签处理类(续)TagSupport类及其doStartTag方法 如果在taglib指令标签中没有属性或标签体,即标签的引用形式为,这样的标签类应该扩展TagSupport类 该类实现Tag接口并包含基本标签所需的大量标准功能。只须重载改该类的doStartTag方法,这个方法中的代码将在页面请求时期遇到标签头时执行 为了产生输出,doSt

49、artTag方法应该调用pageContext类变量的getOut方法获得JspWriter对象 除此之外,调用pageContext的别的一些方法,还可以获得和请求相关的别的数据结构:例如getRequest、getResponse、getServletContext、getSession 如果标签没有体,doStartTag方法应该返回SKIP_BODY常量,这将告诉系统忽略标签起始和结束之间的内容12.3 JSP标签库Java语言程序设计(第2版),郑莉,清华大学57 实现一个标签处理类,当JSP程序遇到相应标签,可插入一个100以内的随机整数和一行文本package tags;impo

50、rt javax.servlet.jsp.*;import javax.servlet.jsp.tagext.*;import java.io.*;public class ExampleTag extends TagSupportpublic int doStartTag()try JspWriter out=pageContext.getOut();out.print(int)(Math.random()*100);out.print(My first tag test!);catch(IOException ioe)System.out.println(Error in ExampleT

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

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


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