第7章JavaBean在JSP中的应用本章主要内容:7.1JavaBean概述——了解7.2在JSP中使用JavaBean——重点7.3JSP动作与JavaBean的生命周期——重点7.4封装数据的JavaBean——重点7.5封装业务逻辑的JavaBean——难点7.6JavaBean的其他应用——了解JavaBean组件:是一些可移植、可重用,并可以组装到应用程序中的Java类。作用:将JavaBean与JSP语言元素一起使用,可以很好地实现后台业务逻辑和前台表示逻辑的分离,使得JSP页面更加可读、易维护。7.1JavaBean组件概述符合下面的设计规则任何Java类都是一个JavaBean:(1)对于类的每个可读属性,Bean必须有下面签名的一个方法:public类型getProperty(){…}(2)对于类的每个可写属性,Bean必须有下面签名的一个方法:publicvoidsetProperty(proptypex){…}(3)定义一个不带任何参数的构造函数。JavaBean的代码结构一个简单的JavaBean举例Student.javapublicclassStudent{privatlongclassno;privatStringname;…}说明:类的定义中必须包含:①无参数的构造函数;②所有属性的set方法和get方法。添加JavaBean成员变量读写方法经过分析发现:用户使用浏览器对网页进行浏览等操作,本质上是对数据的操纵或执行某种业务逻辑。因此,在编写JSP程序之前,应该首先进行实体的抽象,对实体的抽象,其实就是设计JavaBean(类)。7.2在JSP中使用JavaBean举例说明JavaBean在JSP中的应用例:7-2定义User类,在7-2-1.jsp中创建类的对象,并调用相关方法输出成员变量的值。在7-2-2.jsp及7-2-3.jsp中演示了User类作为一个被绑定的session的用法。程序如下:①User.java②7-2-1.jsp③7-2-2.jsp④7-2-3.jspJSP页面中与JavaBean有关的动作元素有3个:①jsp:useBean②jsp:setProperty③jsp:getProperty7.3JSP动作元素与JavaBean生命周期jsp:useBean:声明一个具有一定生存范围及一个唯一id的JavaBean的实例,JSP页面通过id来识别JavaBean,并可通过id.method类似的语句来操作JavaBean。例如,下面的标记在应用程序作用域中,声明了类型Student、id为s1的bean:jsp:useBeanid=s1class=Studentscope=application/jsp:getProperty:用来返回一个已被创建的bean组件的属性值。用法如下:jsp:getPropertyname=“s1property=“classno/jsp:setProperty:用来设定一个已被创建的bean组件的属性值,用法如下:jsp:setPropertyname=“s1property=“classnovalue=“111701/除了利用jsp:setProperty标记和直接调用JavaBean对象的方法来设置JavaBean属性外,还可以利用request对象中的参数值来设置JavaBean属性。语法如下:JSP:setPropertyname=“s1property=“classnoparam=paramName/注意,如果参数值为空值,那么对应的属性值不会被设定。另外,不能在同一个“JSP:setProperty”中同时使用param和value参数。每个JavaBean都有一个生存范围,Bean只有在它定义的范围里才能使用,在它的活动范围外将无法访问到它。jsp:useBean利用Scope属性来声明JavaBean的生存范围。JSP为它设定的范围有:pagerequestSessionapplicationpage:Bean的缺省使用范围。Scope值为page的Bean能在包含“jsp:useBean”元素的JSP文件及此文件中的所有静态包含文件中使用,直到页面执行完毕向客户端发回响应或转到另一个文件为止。request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如重定向、链接等方式)转到另一个文件为止。还可通过使用request对象访问bean,如:request.getAttribute(beanName)。session:从创建Bean开始,就能在任何使用相同session的JSP文件中使用这个Bean。这个Bean存在于整个session生存周期内,任何分享此session的JSP文件都能使用同一Bean。在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的任意page、任意request对此bean的调用。前提是必须在创建此Bean的文件里事先用page指令指定了session=true。application:作用于整个application的生存周期内,从创建Bean开始,就能在任何使用相同application的JSP文件中使用Bean。这个Bean存在于整个application生存周期内,任何在分享此application的JSP文件都能使用同一Bean。在application周期内,对此bean属性的任何改动,都会影响到此application内另一page、另一request及另一session里对此bean的调用。题目:修改7-2的代码,使用jsp:useBean、jsp:setProperty、jsp:getProperty标记在一个JSP页面上实例化User类对象,同时设置并显示该对象的信息。举例:7-37.4封装数据的JavaBeanJavaBean本质上就是一个Java类,封装数据的JavaBean就是一个包含了若干个属性的Java类。可以将表单中输入的值写入JavaBean中的对应属性里。详见例7-4及例7-5.7.5封装业务逻辑的JavaBean狭义上的JavaBean用于封装数据,广义上的JavaBean用于封装业务逻辑,即处理过程,调用一个JavaBean,相当于完成了一次业务处理(功能任务)。详见例7-6.举例7-6题目:计算器Calculator的JavaBean,封装了加、减、乘、除4种操作,并在JSP中进行调用,实现两个数的任务一种操作。7-6.jsp例7-6:运行界面举例:7-7题目:创建一个JavaBean类,用于封装查询pubs数据库中employee表全部记录数据的数据访问操作。7.6JavaBean的其他应用1.使用JavaBean实现数据分页显示2.基于JavaMail的邮件发送JavaBean3.基于JSPSmartUpload的文件上传JavaBean4.基于JGraph的验证码JavaBean1.使用JavaBean实现数据分页显示在对数据库进行查询的过程中,查询结果比较多时,经常会用到分页显示技术。常用的分页方法有两个:①一次性将所有数据查询出来放在缓存中,后面根据用户的请求加载指定页面;②在用户发出查看页面请求时查询某个指定页面。分页时结果集ResultSet常用的方法分页显示常用的记录结果集方法:next():移动到下一条absolute(intn):移动到指定行。分页显示举例:例7-10:设计一个JavaBean,用于封装分页算法业务逻辑,然后在JSP页面中使用该JavaBean实现分页显示功能。2.基于JavaMail的邮件发送JavaBeanJavaMail是Sun公司发布的处理电子邮件的应用程序接口(编程类库API),包含在JavaMail.jar包中。在编写JavaMail程序时,需要首先将JavaMail.jar包下载下来,并导入到项目中。JavaMail编程API核心JavaMailAPI可以分为两部分,一部分由七个主要对象组成:Session、Message、Address、Authenticator、Transport、Store和Folder,利用这些对象可以完成包括发送消息、检索消息、删除消息、认证、回复消息、转发消息、管理附件、处理基于HTML文件格式的消息及搜索或过滤邮件列表等任务核心JavaMailAPI的另一部分为主要接口和类:Part、Message、Bodypart、Multipart、MimePart、MimeMessage、MimiBodypart和MimeMultipart,可以用这些类和接口完成电子邮件的阅读、撰写等任务。JavaMailAPI七大核心对象1)javax.mail.SessionSession对象用java.util.Properties对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其他信息。2)javax.mail.Message一旦获得Session对象,就要使用Message或其子类MimeMessage来创建要发送的消息对象。3)javax.mail.Address创建了Session和Message,就可以使用Address类确定信件的地址,经常使用其子类InternetAddress类。4)java.mail.Authenticator可以使用该类对进行了密码保护的SMTP服务器的资源访问。5)java.mail.Transport用于消息的发送,最重要的发法是send().6)javax.mail.Store实现特定邮件协议上的读、写、监视、查找等操作。7)javax.mail.Folder用于分级组织邮件,并提供按照javax.mail.Message格式访问E-mail的能力。JavaMail编程举例例7-9:Email.java:发送邮件的JavaBeanEmail.jsp:使用JavaBean的jsp界面。3.基于JSPSmartUpload的文件上传JavaBeanJSPSmartUpload是由网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点:1、使用简单。在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载,方便。下来。2、能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等),方便存取。3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。4、下载灵活。仅写两行代码,就能把Web服务器变成文件服务器。不管文件在Web服务器的目录下或在其它任何目录下,都可以利用jspSmartUpload进行下载。5、能将文件上传到数据库中,也能将数据库中的数据下载.JSPSmartUpload的文件上传举例:例7-11下载的com.jspsmart.upload包Upload.jsp4.基于JGraph的验证码JavaBeanJGraph需要jgraph.jar包,可以在网站上下载;JGraph将图元定义为一个一个的cell,每个cell可以是一个顶点(Vertex)、边(Edge)或者节点(Port)中的一种。顶点可以有邻接的顶点,他们通过边相联系,边联接的两个端点称为目标和源,每个目标或者源是一个节点。节点是顶点的孩子。每个cell都可以有自己的孩子。本章小结本章主要内容:7.1JavaBean概述——了解7.2在JSP中使用JavaBean——重点7.3JSP动作与JavaBean的生命周期——重点7.4封装数据的JavaBean——重