JSP教程 课件 第5章 JSP 与Java bean_第1页
JSP教程 课件 第5章 JSP 与Java bean_第2页
JSP教程 课件 第5章 JSP 与Java bean_第3页
JSP教程 课件 第5章 JSP 与Java bean_第4页
JSP教程 课件 第5章 JSP 与Java bean_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章JSP与Javabean主要内容编写Javabean和使用Javabean获取和修改bean的属性

Bean的辅助类JSP与bean结合的简单例子难点获取和修改bean的属性关键实践记忆测试5.1编写Javabean和使用JavabeanJSP页面可以将数据的处理过程指派给一个或几个bean来完成,即JSP页面调用这些bean完成数据的处理,并将有关处理结果存放到bean中,然后JSP页面负责显示bean中的数据。5.1.1编写Javabean编写Javabean就是编写一个Java的类,所以只要会写类就能编写一个Javabean。这个类创建的一个对象称为一个Javabean,简称bean,分配给bean的变量(成员变量),也称bean的属性。为了能让使用bean的应用程序构建工具(比如Tomcat服务器)使用JSP动作标记知道bean的属性和方法,只须在类的方法命名上遵守以下规则:(1)如果类的成员变量,也称bean的属性的名字是xxx,那么为了获取或更改bean的属性的值,类中必须提供两个方法:getXxx(),用来获取属性xxx。setXxx(),用来修改属性xxx.。也就是方法的名字用get或set为前缀,后缀是将属性(成员变量)名字的首字母大写的字符序列。(2)类中定义的方法的访问权限都必须是public的。(3)类中定义的构造方法必须是public、无参数的。5.1编写Javabean和使用Javabean本章在webapps目录下新建一个Web服务目录ch5,因此,除非特别约定,本章例子中涉及的JSP页面均保存在ch5中。创建bean的类的字节码文件需要按要求存放,因此需要在ch5下建立如下的目录结构(目录名字WEB-INF中的字母大写):\ch5\WEB-INF\classes5.1.2保存bean的字节码■ch5\WEB-INF\classes目录下,根据包名对应的路径,在classes下再建立相应的子目录。比如,包名tom.jiafei对应的路径是tom\jiafei,那么在classes下建立子目录结构:tom\jiafei。■将创建bean的字节码文件,比如Circle.class,复制到\WEB-INF\classes\tom\jiafei★为了调试程序方便,可以直接按照bean的包名将bean的源文件,比如Circle.java,保存在\WEB-INF\classes\tom\jiafei目录中,然后用命令行进入tom\jiafei的父目录classes(不要进入tom或jiafei目录)编译Circle.java:classes>javactom\jiafei\Circle.javaCircle.java5.1编写Javabean和使用Javabean5.1.3创建与使用bean使用JSP动作标记useBean加载使用bean,语法格式是:<jsp:useBeanid="bean的名字"class="创建bean的类"scope="bean有效范围"/>或<jsp:useBeanid="bean的名字"class="创建bean的类"scope="bean有效范围"></jsp:useBean>例如:<jsp:useBeanid="circle"class="tom.jiafei.Circle"scope="page"/>需要特别注意的是,其中的“创建bean的类”要带有包名,比如:

class="tom.jiafei.Circle"1.使用bean5.1编写Javabean和使用Javabean5.1.3创建与使用beanTomcat服务器首先在Tomcat服务器管理的pageContent内置对象中查找是否含有这样的bean。如果这样的bean存在,Tomcat服务器就分配这样的bean给用户,如果在pageContent中没有查找到JSP动作标记要求的bean,就根据class指定的类创建一个bean,并将所创建的bean添加到pageContent中。通过Tomcat服务器创建bean的过程可以看出,首次创建一个新的bean需要用相应类的字节码文件创建对象,当某些JSP页面再需要同样的bean时,Tomcat服务器直接将pageContent中已经有的bean分配给JSP页面,提高了JSP使用bean的效率。2.bean的加载原理如果修改了字节码文件,必须重新启动Tomcat服务器才能使用新的字节码文件。5.1编写Javabean和使用Javabean5.1.3创建与使用bean●pagebeanscope取值为page的bean称为pagebean.<jsp:useBeanid="circle"class="tom.jiafei.Circle"scope="page"/>■pagebean的有效范围是用户访问的当前页面,存活时间直到当前页面执行完毕。■不同用户(浏览器)的pagebean是互不相同的。也就是说,当两个用户同时访问一个JSP页面时,一个用户对自己pagebean的属性的改变,不会影响到另一个用户。3.bean的有效范围和生命周期5.1编写Javabean和使用Javabean●sessionbean<jsp:useBeanid="circle"class="tom.jiafei.Circle"scope="session"/>■sessionbean的有效范围是用户访问的Web服务目录下的各个页面,存活时间是用户的会话期(session)间。■如果用户访问Web服务目录多个页面,那么每个页面id相同的sessionbean是同一个bean。■不同用户(浏览器)的sessionbean是互不相同的.3.bean的有效范围和生命周期●requestbean<jsp:useBeanid="circle"class="tom.jiafei.Circle"scope="request"/>■bean的有效范围是用户请求的当前页面,存活时间是从用户的请求到请求结束。requestbean存活时间略长于pagebean的存活时间,原因是Tomcat服务器认为页面执行完毕后,响应才算结束。■不同用户的requestbean的也是互不相同的。也就是说,当两个用户同时请求一个JSP页面时,一个用户对自己requestbean的属性的改变,不会影响到另一个用户。5.1编写Javabean和使用Javabean3.bean的有效范围和生命周期●applicationbean<jsp:useBeanid="circle"class="tom.jiafei.Circle"scope="application"/>■applicationbean的有效范围是当前Web服务目录下的各个页面,存活时间直到Tomcat服务器关闭。■Tomcat服务器为访问Web服务目录的所有用户分配一个共享的bean,即不同用户的applicationbean也都是相同的一个。也就是说,任何一个用户对自己applicationbean的属性的改变,都会影响到其他的用户(不同Web服务目录的applicationbean互不相同)。有效范围示意图5.1编写Javabean和使用Javabean5.1.3创建与使用bean例子5_1中负责创建pagebean的类是Circle类,pagebean的名字是circle。Circle.javaexample5_1.jsp例子5_15.1编写Javabean和使用Javabean5.1.3创建与使用bean例子5_2使用id为girl的sessionbean,创建sessionbean的类仍然是Circle。在例子5_2的example5_2_a.jsp页面中,sessionbean的半径radius的值是1,然后链接到example5_2_b.jsp页面,显示sessionbean的半径radius的值,然后将sessionbean的半径radius的值更改为1.618。用户再刷新example5_2_a.jsp或example5_2_b.jsp时看到的sessionbean的radius的值就都是1.618了。Circle.javaexample5_2_a.jspexample5_2_b.jsp例子5_25.1编写Javabean和使用Javabean5.1.3创建与使用bean例子5_3中使用了id为boy的applicationbean。当第一个用户访问这个页面时,显示applicationbean的radius的值,然后把applicationbean的radius的值更改为2.718。当其他用户访问这个页面时,看到的applicationbean的radius的值都是2.718。Circle.javaexample5_3.jsp例子5_35.2获取和修改bean的属性5.2.1getProperty动作标记使用useBean动作标记获得一个bean后,在Java程序片或表达式中bean就可以调用方法产生行为,如前面的例子5_1~5_3所示,这种情况下,不要求创建bean的类准守setXxx和getXxx等规则(见5.1.1)。使用getProperty动作标记可以获得bean的属性值,并将这个值用串的形式发送给用户的浏览器。<jsp:getPropertyname="bean的id"property="bean的属性"/>或<jsp:getPropertyname="bean的id"property="bean的属性"></jsp:getProperty>其中,name取值是bean的id,用来指定要获取哪个bean的属性的值,property取值是该bean的一个属性的名字。当JSP页面使用getProperty标记获取属性xxx的值时,必须保证bean有相应的getXxx方法,即对方法的名字的命名有特殊的要求。让request调用setCharacterEncoding方法设置编码为utf-8,以避免显示bean的属性值出现乱码现象5.2获取和修改bean的属性5.2.2setProperty动作标记(1)将bean属性的值设置为一个表达式的值或字符序列。<jsp:setPropertyname="bean的id"property="bean的属性"

value="<%=expression%>"/><jsp:setPropertyname="bean的id"property="bean的属性"

value="字符序列"/>value给出的值的类型要和bean的属性的类型一致。5.2获取和修改bean的属性5.2.2setProperty动作标记(2)通过HTTP表单的参数的值来设置bean的相应属性的值。●用form表单的所有参数的值设置bean相对应的属性值的使用格式如下:<jsp:setPropertyname="bean的id的名字"property="*"/>在setProperty标记的上述用法中不具体指定bean属性的值将对应form表单中哪个参数指定的值,系统会自动根据名字进行匹配对应,但要求bean属性的名字必须在form表单中有名称相同的参数名字相对应,Tomcat服务器会自动将参数的字符串值转换为bean相对应的属性的值●用form表单的某个参数的值设置bean的某个属性值的使用格式如下:<jsp:setPropertyname="bean的名字"property="属性名"param="参数名"/>setProperty标记的上述用法具体指定了bean属性的值将对应表单中哪个参数名(param)指定的值,这种设置bean的属性值的方法,不要求property给出的bean属性的名字和param给出的参数名一致,即不要求bean属性的名字必须和表单中某个参数。注

用form表单设置bean的属性值时,只有提交了表单,对应的setProperty标记才会被执行。5.2获取和修改bean的属性例子5_4使用Goods类创建requestbean。example4_5_a.jsp通过form表单指定example4_5_a.jsp和example4_5_b.jsp中的requestbean的name和price属性的值。example4_5_a.jsp和example4_5_b.jsp使用getProperty动作标记以及bean调用方法两种方式显示requestbean的name和price属性的值。●Javabean例子5_4Goods.java(负责创建bean)将Goods.java保存在\ch5\WEB-INF\classes\tom\jiafei中,用命令行进入tom\jiafei的父录classes,如下格式编译Goods.java:classes>javactom\jiafei\Goods.java●JSP页面example5_4_a.jspexample5_4_b.jsp5.3bean的辅助类写一个创建bean的类时,除了需要用import语句引入JDK提供的类,可能还需要自己编写一些其他的类,只要将这样类的包名和bean类的包名一致即可(也可以和创建bean的类写在一个Java源文件中)。例子4_6中,使用一个bean列出Tomcat服务器驻留的计算机上某目录中特定扩展名的文件。创建bean的ListFile类,需要一个实现FilenameFilter接口的辅助类FileExtendName,该类可以帮助bean列出指定扩展名的文件。例子5_5●JavabeanListFile.java(负责创建bean)用命令行进入tom\jiafei的父目录classes,编译ListFile.java(约定见5.1.2):classes>javactom\jiafei\ListFile.java●JSP页面example5_5.jsp5.4JSP与bean结合的简单例子JSP页面中调用bean可以将数据的处理从页面中分离出来,实现代码复用,以便更有效地维护一个Web应用。在本节中,创建bean的类的包名都是red.star,使用的Web服务目录仍然是ch5,因此,需要在ch5下建立如下的目录结构:ch5\WEB-INF\classes\red\star创建bean的字节码文件都需要保存在上述目录中。为了调试程序方便,可以直接按照创建bean的类的包名将相应的Java源文件保存在Web服务目录的相应目录中,比如将Java源文件保存在Web服务目录ch5的WEB-INF\classes\red\star目录中,然后使用MS-DOS命令行进入\red\star的父目录classes,如下编译Java源文件:classes>javacred\star\源文件名5.4JSP与bean结合的简单例子●Javabean例子5_6Triangle.java(负责创建requestbean)例子5_6使用requestbean(Triangle类负责创建)完成三角形的有关数据的处理。例子中的JSP页面提供一个form表单,用户可以通过form表单将三角形三边的长度提交给该页面。用户提交form表单后,JSP页面将计算三角形面积的任务交给一个requestbean去完成。●JSP页面example5_6.jsp5.4.1三角形bean5.4JSP与bean结合的简单例子●Javabean例子5_7ComputerBean.java(负责创建requestbean)例子5_7使用sessionbean(CompuerBean类负责创建)完成四则运算。例子中的JSP页面提供一个form表单,用户可以通过form表单输入两个数,选择四则运算符号提交给该

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论