Java Web程序开发与分析课件:JavaBean与表单处理_第1页
Java Web程序开发与分析课件:JavaBean与表单处理_第2页
Java Web程序开发与分析课件:JavaBean与表单处理_第3页
Java Web程序开发与分析课件:JavaBean与表单处理_第4页
Java Web程序开发与分析课件:JavaBean与表单处理_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb程序设计

——JavaBean与表单处理2主要内容JavaBeanJavaBean的概念JavaBean的使用与生命周期表单处理3应用需求

在开发JSP网页程序时,如果需要的程序功能已经在其他的网页程序中实现了,会考虑将已有程序代码重复使用。解决程序代码重复使用问题的方法有多种,比如:(1)将需要重复使用的代码写成子程序网页,其他的网页来引用这个网页;(2)将重复使用的程序代码保存在文本文件,利用include指令或者include动作元素,将其包含在网页中。4外部文件:xxx.htmxxx.jspxxx.txtaaa.jspbbb.jspccc.jsp引用

主要问题:新的JSP网页引用外部文件,将其嵌入到当前的网页中,使得所使用的外部文件很难保证版本的一致。5(1)什么是JavaBean

JavaBean是一种Java类,它通过封装属性和方法成为具有独立功能、可重复使用的、并且可与其他控件通信的组件对象。按照功能分,JavaBean可分为两类:可视化的JavaBean:能够将接收到的数据信息显示在界面中,一般应用于桌面可视化编程中;非可视化的JavaBean:常用来封装事务逻辑、数据库操作等,通常为Web系统中的JavaBean。6useBean.classuseBean.classuseBean.class引用JavaBean的原始程序代码useBean.java编译为Java的类文件:useBean.classaaa.jspbbb.jspccc.jsp7JavaBean的应用特点:(1)通常用户并不需要知道JavaBean内部是如何实现的,而只需要知道提供了哪些方法和属性;(2)规模较大的JSP应用系统非常依赖JavaBean组件,采用它们封装所有包含运算逻辑的程序代码,而页面数据的输出和显示则由网页程序来处理;(3)当JSP页面需要JavaBean时,只需要对该组件直接引用,以达到程序代码的重复使用、程序结构简化的目的。8JSP+JavaBeanWeb应用开发模式1)Model1模式(非MVC模式)在Model1开发模式中,JSP+JavaBean技术所组成的应用程序,JSP页面不仅负责表示逻辑,也负责控制逻辑,而业务逻辑由JavaBean实现。该应用模式如下图所示:9JSP+JavaBean的Model1模式客户端(浏览器)JSP页面JavaBean数据库服务器请求响应10

在Model1模式中,将表现逻辑和控制逻辑全部耦合在了JSP页面中,这种处理方式对于规模较小的Web工程项目是比较合适的。但是在开发规模较大的Web项目时,程序的流向是由一些能够互相感知的页面所决定。这样,当页面比较多时,很难把握清楚程序的流向;而且修改某一个页面可能会影响到相关的其他页面,使得程序的可伸缩性和健壮性不好。112)Model2模式(MVC模式)由于Model1开发模式的局限性,引入了三层模型,即Model2模式,也称为MVC模式(Model-View-Controller)。该应用模式如下图所示:12JSP+JavaBean的Model2模式客户端(浏览器)视图(JSP)数据库服务器请求响应控制器(Servlet)Model(JavaBean)实例化13

在Model2模式中,包括三个部分:控制器(Control)、视图(view)、模型(model)。其中,控制器负责程序的控制逻辑,一般由Servlet实现;视图负责表示逻辑,即数据的显示,由JSP页面实现;模型部分实现业务逻辑,一般由JavaBean实现。

Model2模式是一种比较理想的开发模式,目前,Strutsframework对该模式做了支持和实现。14

标准的JavaBean类需要满足以下3个条件:(1)JavaBean类必须包含无参的构造函数。例如,一个JavaBean类:UseBean,则这个类必须包含publicUseBean()构造函数;(2)JavaBean类需要实现java.io.serializable接口。实现该接口的类的对象可以转换为字节序列存储在磁盘上,不需要特殊声明implementSerializable,已经默认实现了序列化;(2)JavaBean类15

(3)JavaBean类中必须有属性接口,因为其属性被定义为私有的,每个属性都要有get()和set()的属性操作方法。例如:

publicclassuseBean{privateStringuserName;publicStringgetuserName(){returnuserName;}publicvoidsetuserName(StringuserName){this.userName=userName;}}16创建示例(Eclipse):

(1)在Eclipse开发环境中,可以为一个Web项目直接创建一个JavaBean类,如:17(2)在Eclipse开发环境中,可以直接选择:

Source->GenerateGettersandSetters

创建JavaBean类的方法。18publicclassUseBean{privateStringuserName;privateStringname;PublicUseBean(){}publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){=name;}}Eclipse创建的方法19主要内容JavaBeanJavaBean的概念JavaBean的使用与生命周期表单处理20

在JSP中,有3个与JavaBean操作相关的动作元素:(1)调用JavaBean:<jsp:useBean><jsp:useBean>可以定义一个具有生存范围,和具有唯一ID的JavaBean的实例:

<jsp:useBeanid=“name”class=“classname”scope=“page|request|session|application”/>

在执行过程中,该动作元素首先会尝试寻找在Scope范围内具有相同ID的实例,如果没有就会自动创建一个新的JavaBean实例。21(2)访问JavaBean的属性:<jsp:getProperty>

<jsp:getProperty>可以获取JavaBean的属性值,并将其转换为String类型。

<jsp:getPropertyname=“ID”

property=“propertyname”/>name代表已经存在于一定范围的JavaBean的实例,为通过<jsp:useBean>设定的ID值;

property为所具有的属性。22(3)设置JavaBean的属性:<jsp:setProperty>

<jsp:setProperty>用来对JavaBean设置一个或多个属性值:

<jsp:setPropertyname=“ID”

last_syntax/>name代表已经存在于一定范围的JavaBean的实例,为通过<jsp:useBean>设定的ID值;

last_syntax代表3种不同的语法形式:

23①property=“*”

表示所有和Bean属性名匹配的请求参数将被传递给相应属性的set方法;②property=“propertyName”[param=“parameterName”]

指定采用某个请求参数作为Bean属性的值;③property=“propertyName”

[value=“{string|<%=expression%>}]”

直接为Bean的属性指定一个值;24

在C、C++、Java等程序设计语言中,所声明的变量都是具有生命周期的,如在某一固定区域内的“局部变量”,存在于程序的整个执行周期中的“全局变量”。

JavaBean也是具有生命周期的,由于是运行在B/S结构的Web应用程序中,其生命周期由<jsp:useBean>中的scope来设定:

page,request,session,applicationJavaBean的生命周期25page范围的JavaBean的生命周期是最短的。该范围的JavaBean实例存在于JSP页面的运行期间,当页面中的JSP程序代码执行完成,并把结果网页传送给客户端后,则page范围的JavaBean实例将会被清除。

例:创建一个具有计算访问人数功能的JavaBean类Counter,并将其以page范围应用在JSP程序中。(1)page范围26packageBean;publicclassCounter{privateintCounter=0;publicvoidsetCounter(intcount){Counter=count;}publicintgetCounter(){return++Counter;}}JavaBean:Counter类所在包名JavaBean的属性27<body><jsp:useBeanid="count"scope="page"class="Bean.Counter"/><fontcolor="red">演示:page</font><br><br>您是本站第

<fontcolor=blue>

<jsp:getPropertyname="count"property="counter"/></font>位参观者</body></html>JSP文件:usingCounter.jsp调用JavaBean访问JavaBean的属性28运行结果(刷新和重新打开浏览器,计数都不会增加):29(2)request范围request范围的JavaBean的生命周期与JSP程序中的request对象同步。例如:除了该网页外,当程序通过forward动作元素将request对象传送到下一个JSP程序时,JavaBean也将会随着request对象送出。因此,由forward操作所串联起来的JSP程序可以共享相同的JavaBean。(include动作元素包含的页面也可共享JavaBean)例:request范围的JavaBean的运行情况30<body><jsp:useBeanid="count"scope="request"class="Bean.Counter"/><fontcolor="red">request范围的JavaBean:Counter</font><br>

您是本站(setRequest.jsp)第<fontcolor=blue>

<jsp:getPropertyname="count"property="counter"/></font>位参观者

<jsp:includepage="request.jsp"/></body></html>JavaBean:Counter类(同上例)

“setRequest.jsp”文件:Include动作元素31“request.jsp”文件:<body><jsp:useBeanid="count"scope="request"class="Bean.Counter"/>

您是request.jsp网页的第<fontcolor=blue><jsp:getPropertyname="count"property="counter"/></font>位参观者<br><%out.println("这是request.jsp网页的计数器!!");%></body></html>32运行结果:33(3)session范围session范围的JavaBean的生命周期存在于一个使用者的会话期间。

例如:创建CounterSession.jsp,该页面在usingCounter.jsp的基础上将scope改为:session34“CounterSession.jsp”文件:<body><jsp:useBeanid="count"scope="session"class="Bean.Counter"/><fontcolor="red">演示:page</font><br><br>您是本站第

<fontcolor=blue><jsp:getPropertyname="count"property="counter"/></font>位参观者</body></html>35运行结果(刷新页面,则计数不断增加):36运行结果(重新打开新的浏览器,则计数从头开始):37application范围的JavaBean的生命周期是最长的,它的生命周期是与整个网站服务器的运行是相当的,除非特意将它删除。因此,只要有一个JSP页面将JavaBean设置为application范围,则在同一应用系统下的程序都可以通过这个JavaBean来交换信息。(4)application范围38

例:将usingCounter.jsp页面中的JavaBean的范围改为:application.

<body><jsp:useBeanid="count"scope=“application"class="Bean.Counter"/><fontcolor="red">演示:page</font><br><br>您是本站第

<fontcolor=blue><jsp:getPropertyname="count"property="counter"/></font>位参观者</body></html>39运行结果:刷新页面,则计数不断增加;重新打开一个浏览器,计数继续增加40主要内容JavaBeanJavaBean的概念JavaBean的使用与生命周期表单处理41HTML表单与JSP

通常在Web程序中,采用标签<form>构成表单区块,以获取用户输入的数据,并进行数据的处理,其过程如下所示:

42客户端浏览器表单1表单2表单1表单2结果显示用户输入数据XXX.jsp服务器端JSP程序处理用户输入的数据获取表单数据发送处理结果XXX.jsp页面43

在整个处理过程中,原始数据网页、处理数据网页和结果输出网页,可以是同一个JSP网页文件或是不同的JSP文件,这要依据设计而定。(1)request与response对象在进行表单数据的处理过程中,经常会用到request对象和response对象,进行数据的接收和发送。(2)Post和Get方法的差异前面介绍表单内容的时候,经常会用到标签<form>的Method属性,该属性有两种可能值:Get,Post.44

这两种方式的差异主要在于数据的传送方式上:

post是将所要传送的数据包含在HTTP的头文件中;

get是将数据直接串接在网站栏地址的后面;两者都可以用Getparameter()方法取得传送的数据;因此,如果不想让数据在传送的过程中显示出来的话,则可以选择post方式。45例:使用JSP+JavaBean处理表单

showInfo.jsp页面让用户输入数据,

JavaBean:show.java封装数据的处理

showInfo.jsp<body><jsp:useBeanid="user"scope="session"class="Bean.show"/><jsp:setPropertyname="user"property="*"/><%if(request.getParameter("name")==null){%><formname="form1"

method="post"action="showInfo.jsp"><p>姓名:<inputtype="text"name="name"size="15"maxlength="15"></p><p>密码:<inputtype="password"name="password"size="15"maxlength="15"></p>

温馨提示

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

最新文档

评论

0/150

提交评论