版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP开发案例教程JSP开发案例教程第5章JavaBean应用5.4案例ch5.4_guessNumber(猜数游戏)JavaBean概述01JavaBean在JSP中的应用03案例ch5.4_guessNumber:猜数游戏04本章内容JavaBean类的构成02JSP开发案例教程5.4案例ch5.4_guessNumber
(猜数游戏)案例ch5.4_guessNumber本案例创建了3组功能相同的页面,每组包含2个页面:猜数页index.jsp和结论页guess.jsp。3组页面虽然功能相同,但引用JavaBean、为JavaBean的属性设值和从JavaBean属性读取值的实现方式有变化。第1组网页的测试效果如图5-1至5-3所示。项目的文件列表如图5-4所示,其中的Student.java是本章5.2节的示例JavaBean的类文件。案例:应用JavaBean技术实现了一个猜数游戏。图5-1猜数页图5-2结论页(没猜对)图5-3结论页(猜对了)图5-4项目文件列表5.4.1JavaBean类GuessNumber在项目的文件列表中的“src/main/java”包上单击鼠标右键,在弹出的快捷菜单中选择“New”→“Package”命令,在打开的“NewJavaPackage”窗口的“Name”文本框中输入包的名称“com”,单击“Finish”按钮完成com包的创建。(com是单词component的缩写,意为组件。)包的作用与文件夹的作用类似,可以有多层,用于存放Java类、属性文件和配置文件。包的名字通常都由小写字母组成。先创建好Web项目ch5.4_guessNumber,将素材中的文件复制到src/main/webapp目录。然后,根据以下操作,在包src/main/java中创建JavaBean类GuessNumber。操作1:创建包com在com包上单击鼠标右键,在弹出的快捷菜单中选择“New”→“Class”命令,打开“NewJavaClass”窗口,在窗口的“Name”文本框中,输入类的名称“GuessNumber”,将全部复选框取消勾选,如图5-5所示,单击“Finish”按钮完成类GuessNumber的创建。在src/main/java/com包中能看到类文件GuessNumber.java。类名通常以大写字母开头。图5-5创建类GuessNumber
操作2:创建JavaBean类GuessNumber5.4.1JavaBean类GuessNumber在GuessNumber类中添加5个变量(可从素材文件中复制过来),如第5~9行代码所示。将光标定位在第10行(空白行),单击鼠标右键,在弹出的快捷菜单中选择“Source”→“GenerateGettersandSetters”命令,在打开的“GenerateGettersandSetters”窗口中单击“SelectAll”按钮,勾选所有变量的复选框。然后单击“Generate”按钮完成getter和setter方法的添加。也可以在菜单栏中选择“Source”→“GenerateGettersandSetters”命令来添加getter和setter方法。对代码进行整理,将setAnswerRand()和setNumberInput()这两个方法移到其他getter、setter方法的前面,如下第11~17行代码所示。操作3:添加属性(类成员变量)及其getter、setter方法5.4.1JavaBean类GuessNumber在调用方法setAnswerRand()设置答案时,将随机生成一个2~20内的整数,然后输出此随机数(即答案)到控制台供查看,最后将此JavaBean的其他4个属性的值重置。在调用方法setNumberInput()设置猜测的数时,将参数中用户猜测的数numberInput与随机数(即答案)answerRand进行比对,根据比对结果给出相应的结论,并将用户猜测的总次数countGuessed加1。JavaBean的GuessNumber类编写完成后,项目中其他的类或页面都可以引用。这提高了代码的重用性,也便于后期的修改、升级。操作4:完善两个setter方法为setAnswerRand()和setNumberInput()这两个方法补充代码,代码如下:5.4.1JavaBean类GuessNumber5.4.2猜数页index.jsp此代码用于添加表单和控件,声明一个ID为guess的JavaBean实例,并设置其属性property的值为answerRand,用于生成答案。打开网页index.jsp,主要代码如下。此代码用于添加表单和控件,声明一个ID为guess的JavaBean实例,并设置其属性property的值为answerRand,用于生成答案。打开网页index.jsp,主要代码如下。5.4.2猜数页index.jsp图5-1猜数页代码的第13行声明一个ID为guess的JavaBean实例,其类是在com包中定义的GuessNumber类,其生命周期是session。如果此JavaBean实例已存在就引用它,如果不存在则服务器会自动新建一个。5.4.2猜数页index.jsp第15行代码将ID是guess的JavaBean对象的属性answerRand的值设置为0。它调用com.GuessNumber类中的setAnswerRand()方法实现赋值。只不过,方法setAnswerRand()随机生成一个2~20内的整数,并将其赋给属性property,由页面传递的参数值0并没有被真正使用。但在此一定要为其赋值,且值为整数,否则调用方法setAnswerRand()时系统将报参数错误。5.4.2猜数页index.jsp5.4.3结论页guess.jsp在结论页guess.jsp中,仍然需要声明JavaBean对象和添加表单及控件,所以guess.jsp页的代码与猜数页index.jsp中的部分代码相同。打开guess.jsp并修改代码,主要代码如下guess.jsp的第13行代码与index.jsp的第13行代码完全一样,引用的是同一个JavaBean实例guess对象。5.4.3结论页guess.jsp第15行代码为属性numberInput设置值时使用了param="numberInputNew",它表示该属性的值等于request对象中numberInputNew的值,即在文本框numberInputNew中输入的值。这与index.jsp的第15行代码中设置默认值的方式(value="0")有所不同。5.4.3结论页guess.jsp第17行代码表单form的action属性值为空字符串,或没有action属性时,系统为表单提供的action的默认值就是前页面guess.jsp。5.4.3结论页guess.jsp第19、33、35行代码使用<jsp:getPropertyname="guess"property="***"/>的方式,从JavaBean实例guess对象中获取对应属性的值,相当于调用对应属性的getter方法。5.4.3结论页guess.jsp第21行代码中的guess.isResultBool()采用“对象名.方法名”方式,以另外一种方式获取JavaBean实例guess对象的属性resultBool的值,即调用guess对象中的isResultBool()方法,得到表示是否猜对的布尔值(true或false)。5.4.3结论页guess.jsp测试效果如图5-2、图5-3所示。图5-2结论页(没猜对)图5-3结论页(猜对了)测试此网页时,可输入大小不同的数,然后查看是否猜对,正确的答案可在控制台查看。如果输入的不是整数,则会报参数错误,为什么呢?因为第15行的代码相当于调用了JavaBean对象的setNumberInput(intnumberInput)方法,其参数是整数,如果输入的不是整数,例如小数或字母,则系统无法自动将其转换为整数,无法满足参数的数据类型要求,从而报错。
5.4.3结论页guess.jsp5.4.4属性的赋值和获取值在Java代码片段中的实现引用或创建ID为guess的JavaBean对象可使用如:<jsp:useBeanid="guess"class="com.GuessNumber"scope="session"/>的标签。设置其属性值可使用如:<jsp:setPropertyname="guess"property="answerRand"value="0"/>,或<jsp:setPropertyname="guess"property="numberInput"param="numberInputNew"/>的标签。读取其属性值可使用如<jsp:getPropertyname="guess"property="countGuessed"/>的标签,或使用如guess.isResultBool()的语句。在网页代码中,设置和读取JavaBean对象的属性值可以在Java代码中调用guess.setXxx()和guess.getXxx()方法来实现。下面在index2.jsp和guess2.jsp中采用这种方式来设置和读取属性值。操作1:将index.jsp另存为index2.jsp将猜数页index.jsp另存为index2.jsp。将index2.jsp的网页标题和其中的h3标题都更改为“猜数2”。将第17行代码中的guess.jsp更改为guess2.jsp。将index2.jsp中第15~16行的代码更改成如下15~19行的代码。可手动输入注释字符“<%--”和“--%>”,也可将光标置于第15行,在菜单栏中选择“Source”→“ToggleCommend”命令,将第15行代码注释掉。第18行的语句为属性answerRand赋值,与第15行代码的赋值语句的效果一样。5.4.4属性的赋值和获取值在Java代码片段中的实现将结论页guess.jsp,另存为guess2.jsp。将guess2.jsp的网页标题和其中的h3标题都更改为“结论2”。修改guess2.jsp的代码,主要代码如下:操作2:将guess.jsp另存为guess2.jsp5.4.4属性的赋值和获取值在Java代码片段中的实现第18~29行代码,实现了获取所输入的值numberInputNew,并将字符串类型的值转换为整数赋值给numberInput。5.4.4属性的赋值和获取值在Java代码片段中的实现第15行被注释掉了,设置属性值在代码第31行用语句予以实现,二者的功能相同。在第33~35行,分别使用guess.getXxx()方法获取属性值赋值给变量,在第38、51、52行分别输出变量值。5.4.4属性的赋值和获取值在Java代码片段中的实现5.4.5JavaBean对象的引用或创建在Java代码片段中的实现设置或获取JavaBean对象的属性值:用JSP动作元素标签在Java代码中调用方法效果相同Java代码片段里采用创建对象的方法来引用或创建JavaBean对象的步骤:操作1:将index2.jsp另存为index3.jsp操作2:将guess2.jsp另存为guess3.jsp操作1:将index2.jsp另存为index3.jsp将猜数页index2.jsp另存为index3.jsp,将index3.jsp的网页标题和其中的h3标题都更改为“猜数3”,将第21行代码的guess2.jsp更改为guess3.jsp。将第13行代码注释掉。在第18行代码插入代码,得到如下代码。在输入“GuessNumber”之后,按快捷键“Alt+/”,在弹出的类列表中选择“GuessNumber-com”选项,在网页的第一行引入此JavaBean类com.GuessNumber。代码的第19行用Java语句创建对象guess,第20行代码设置属性值,第21行代码将对象guess保存到键名为guess的session对象中,这与使用标签创建的JavaBean实例guess对象(原第13行被注释掉的代码)的功能类似。5.4.5JavaBean对象的引用或创建在Java代码片段中的实现操作2:将guess2.jsp另存为guess3.jsp将结论页guess2.jsp另存为guess3.jsp,将guess3.jsp的网页标题和其中的h3标题都更改为“结论3”。将第13行代码注释掉。在第18行代码之前插入以下几行代码。其中,在输入“GuessNumber”后也需引入类com.GuessNumber。代码的第19行从session对象中获取键名为guess的对象并将其强制转换为GuessNumber类型对象,如果该对象为null(即该session对象不存在或已失效),则跳转到页面index3.jsp(第22行代码),以重新创建JavaBean对象guess。5.4.5JavaBean对象的引用或创建在Java代码片段中的实现测试网页index3.jsp和guess3.jsp,如下所示,其操作的形式和得到的结论与index.jsp和guess.jsp一致。从本案例的3组页面可知,通过标签应用JavaBean对象与在代码片段中应用JavaBean对象,得到的效果一致。通过标签应用JavaBean对象的代码更简洁,而通过Java代码片段应用JavaBean对象更灵活、容错性更好、功能更强大、通用性更强。案例练习:
ch5.4ex_score(成绩分析)要求:创建Web项目ch5.4ex_score,将素材文件index.jsp复制到文件夹src/main/webapp,将Score.java复制到包src/main/java/com。本案例只有一个页面index.jsp。JavaBean对象的创建、为属性设置值和获取属性值,都采用JSP动作元素标签<jsp:……/>来进行。在Score.java的方法setScore(Stringscore)中,需将输入的成绩score(String类型)转换为float类型,然后再计算(提示:类型转换可用floata=0;try{a=Float.parseFloat(score);}catch(){})。未输入成绩,或将输入的成绩转换为float类型时失败,或成绩范围超出0~100,则忽略此次输入的成绩,并给出提示信息。有兴趣的同学实现输出:优秀率(优秀要求成绩大于或等于90分)、及格率。(提示:在优秀成绩个数除以总成绩个数之前,需先强制转换为float类型,即rateA=((float)countA/count)*100。否则,商会被自动强制转换为整数,如果商为小于1,将得到0。)有兴趣的同学通过Java代码应用JavaBean,同样实现对成绩的分析。5.4.6练习案例ch5.4ex_score页面的测试效果如图5-6至5-7所示:图5-6初始界面图5-7成绩分析界面案例练习:
ch5.4ex_score(成绩分析)5.4.6练习案例ch5.4ex_scoreJSP开发案例教程5.5小结与练习本章小结:介绍了JavaBean的创建和使用。JavaBean类在创建之后,可做为实体类组件使用,既能简化应用层的代码,又能提高代码的重用性。应用JavaBean时,能以JSP动作元素声明的方式来创建对象、给属性赋值和读取属性值,也能在Java代码片段中以常规的方式创建对象、给属性赋值和读取属性值。在本章的案例ch5.4_guessNumber(猜数游戏)中,分别用以上2种方式实现了JavaBean对象的创建、给属性赋值和读取属性值。5.5小结与练习填空题:(1)JavaBean类的类型必须是
类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生院基本公卫培训
- 手拉葫芦基础培训
- 《框民事权利知多少》课件
- 百度少儿国画课件
- 《高级管理会计》课件
- 有害生物防治合同协议书范本
- 服装交易合同范本
- 演出服务合同版
- 香蒲创意美术课件
- 立体说课培训
- 《饮料对人体的危害》课件
- 2024-2030年中国腐乳行业发展趋势及营销模式分析报告
- 手术室专科习题及答案
- 专题04 任务型阅读10道
- 2024年山东省公务员考试《行测》真题及答案解析
- 期中测试卷(1~4单元)(试题)2024-2025学年五年级上册数学北师大版
- 教师课题结题资料汇编培训
- 北师大版六年级上册数学期末考试试卷带答案
- 餐饮服务课件 学习任务3 餐巾折花技能(4)-餐巾折花综合实训
- 22秋军事理论学习通超星期末考试答案章节答案2024年
- 环保设备智能监控系统开发合同
评论
0/150
提交评论