JavaBean和表单处理.ppt
《JavaBean和表单处理.ppt》由会员分享,可在线阅读,更多相关《JavaBean和表单处理.ppt(96页珍藏版)》请在三一办公上搜索。
1、1,第七章 JavaBean与表单处理,2,JSP程序开发模式,单纯的JSP页面编程在单纯的JSP编程模式下,通过应用JSP中的脚本标志,可直接在JSP页面中实现各种功能。这种模式很容易实现。缺点:因为将大部分的Java代码与HTML代码混淆在一起,会给程序的维护和调试带来很多的困难,而且对于整个程序的结构更是无从谈起。单纯的JSP页面编程模式是无法应用到大型、中型甚至小型的JSP Web应用程序开发中。,3,在当今各类JSP网站开发标准中,有两种使用JSP的方式,他们分别被称为模式一和模式二。模式一是JSP+JavaBean的结合模式二是JSP+JavaBeanServlet的结合。这两种模
2、式是当今大中型应用程序的基础,这两种模式中最重要的就是JavaBean的开发,JavaBean用来封装业务逻辑。,4,JSP程序开发模式,JSP+JavaBean编程该模式是JSP程序开发经典设计模式之一,适合小型或中型网站的开发。利用JavaBean技术,可以很容易地完成一些业务逻辑上的操作,例如数据库的连接、用户登录与注销等。JavaBean是一个遵循了一定规则的Java类,在程序的开发中,将要进行的业务逻辑封装到这个类中,在JSP页面中通过动作标签来调用这个类,从而执行这个业务逻辑。此时的JSP除了负责部分流程的控制外,大部分用来显示页面,而JavaBean则负责业务逻辑的处理。下面将通
3、过一个流程图说明该模式对客户端的请求进行处理的过程。,5,JSP+JavaBean编程,客户端,带有JSP引擎的Web服务器,用户通过客户端浏览器请求服务器,服务器将最终的结果返回给客户端浏览器进行显示,JSP页面,JavaBean,业务逻辑,数据库,在JavaBean中连接及操作数据库,或实现其他业务逻辑,在JSP页面中调用JavaBean,服务器接收用户请求后调用JSP页,JavaBean将执行的结果返回JSP页面,服务器读取JSP页面中的内容(将页面中的静态与动态内容相结合),6,优点:纯净的JSP页面因为业务逻辑和数据库操作已经从JSP页面中剥离出来,JSP页面中只需嵌入少量的Java
4、代码甚至不使用Java代码。可重用的组件设计良好的JavaBean可以重用,甚至可以作为产品销售,在团队协作的项目中,可重用的JavaBean将会大大减少开发人员的工作量,加快开发进度。方便进行调试复杂的操作都封装在一个或者数个JavaBean中,错误比较容易定位。易维护易扩展系统的升级或者更改往往集中在一组JavaBean中,而不用编辑所有的JSP页面。,7,应用范围Model 1模式的表现逻辑和控制逻辑全部逻辑耦合在页面中,这种处理方式对一些规模很小只有几个简单页面的项目比较适用,8,设计模式为软件设计问题提供标准的解决方案,Model 2 是一种设计模式,MVC 将交互式应用程序组织成三
5、个独立的模块:,应用程序模块,用于表示数据和业务逻辑,数据表示,控制器,用于发送请求和控制应用程序的流程,9,Model 2 体系结构,MVC 体系结构的各种对象包括:,MVC 对象,控制器,模型,视图,10,Model 2 体系结构,Model 2(MVC)体系结构的优点:,可以很灵活地设计和实现模型对象,使用同一模型处理多个请求,增加新客户端更容易,MVC 的优点,11,Model 模型(封装数据)代表了某应用程序的核心功能,负责处理用户的数据,实现业务逻辑。同时,模型还为视图的显示提供数据,并可被多个视图所共享。,模型对象 表示 Web 应用程序的数据元素,用户可与这些数据元素进行交互,
6、12,View 视图(显示数据,收集数据)和用户打交道。主要指与用户交互的界面,即应用程序的外观。它只负责将数据转交给控制器;同时还负责展示模型传递给用户的数据,当后台模型更新数据时,视图也应随之更新。Controller 控制器(改变数据,改变模型的状态)负责接收用户的请求和数据,然后做出判断将请求和数据交到哪一个模型来处理,最后调用视图来显示模型返回的数据。,视图对象 提供模型组件以开发用户界面,控制器对象 充当应用程序视图对象和模型对象之间的中间对象,13,JSP程序开发模式,JSP+Servlet+JavaBean编程在JSP+JavaBean设计模式的基础上加入Servlet来实现程
7、序中的控制层。在这种模式中,由Servlet来执行业务逻辑并负责程序的流程控制,JavaBean组件实现业务逻辑,充当着模型的角色,JSP用于页面的显示。可以看出这种模式使得程序中的层次关系更明显,各组件的分工也非常明确。下面将通过一个流程图说明该模式对客户端的请求进行处理的过程。,14,JSP程序开发模式,MVC模式MVC(Model-View-Controller,模型视图控制器)是一种程序设计概念,它同时适用于简单的和复杂的程序。使用该模式可将待开发的应用程序分解为3个独立的部分:模型、视图和控制器。,15,Model 2 体系结构,Model 2 体系结构的各种对象包括:,Model(
8、JavaBean)封装应用程序状态处理业务逻辑通知视图的更新,View(JSP)向控制器发送用户请求显示模型状态接收来自模型的更新,Controller(Servlet)定义应用程序行为映射用户请求到模型选择相应的视图,状态查询,通知更新,请求业务处理,选择视图,16,JSP+Servlet+JavaBean编程对客户端的请求进行处理的过程,客户端,带有JSP引擎的Web服务器,用户通过客户端浏览器请求服务器,服务器将最终的结果返回给客户端浏览器进行显示,JSP页面,JavaBean,业务逻辑,数据库,在JavaBean中连接及操作数据库,或实现其他业务逻辑,服务器接收用户请求后调用Servl
9、et,Servlet根据用户请求调用JavaBean处理业务,服务器读取JSP页面中的内容(将页面中的静态与动态的内容相结合),请求,响应,Servlet,调用,转发,由Servlet转发请求到JSP页面,JavaBean将结果返回Servlet,在Servlet中将结果保存到请求对象中,17,7.3 剖析JavaBean,什么是组件?独立的模块外界不了解其内部实现外界通过其提供的接口对组件进行访问可以重用目前有代表性的组件技术COM、COM+、JavaBeans、EJB等,18,JavaBean 组件和企业级EJB(Enterprise JavaBean)组件EJB是J2EE的核心技术,它为
10、开发服务器端应用程序组件提供了一个模型,利用这个模型来创建可移植性与分布式企业应用程序服务器或组件。EJB定义了一个用于开发基于组件的企业多重应用程序的标准。EJB是一个用来创建分布式、服务器端以及基于Java的企业应用程序组件的功能强大的组件模型。,19,20,7.3.1 什么是JavaBean,JavaBean是Java的可重用组件技术,实质是一种符合某些命名和设计规范的Java类JavaBean通常封装成为具有特定功能或者处理某个业务(如连接数据库,访问数据库)应用:JSP页面内可以访问JavaBean的对象以及它的方法。在JSP的Web应用中集成JavaBean组件,由JavaBean
11、中处理业务逻辑,然后在JSP中调用,而JSP页面着重网页界面的设计,可以实现业务逻辑和前台显示的部分分离。,21,使用JavaBean的好处:可以使得JSP页面变得清晰;节省软件开发时间(可以直接使用已经测试和可信的已有组件,避免了重复开发);降低系统维护的难度JavaBean的分类可视的JavaBean:传统的JavaBean应用于可视化界面(如java图形界面中使用的按钮、文本框或列表框等等)。非可视化的JavaBean:封装逻辑、封装数据,与JSP搭配使用。,创建一个标准JavaBean的基本语法如下。(1)定义JavaBean类 JavaBean类定义的语法结构如下:public cl
12、ass 类名称/类成员的定义/类方法的定义。/类属性的定义。,如何创建JavaBean,其中需要强调的是,类名称与保存的文件名称必须一致,否则就会出现编译错误。同时,类必须声明为公有类,即public。如:public class CarBean private String maker;.,(2)定义JavaBean类的构造函数JavaBean是Jave类,JavaBean就有自己的构造函数,并 且构造函数的名称必须与JavaBean类的名称一致。构造函数的主要作用是用来初始化,而且构造函数无参数输入,其语法结构如下:public JavaBean类名称()/初始化.例如:public Ca
13、rBean(),(3)定义JavaBean属性JavaBean是Jave类,那么它不但有自己的构造函数,还有自己的属性。JavaBean属性的定义的语法结构如下:private 数据类型 属性名称;例如:private String maker;,(4)设定JavaBean属性值的方法定义了JavaBean属性之后,还要对其属性值进行设定,其属性值设定的语法结构如下:public void set设定方法名称(数据类型 参数)this.变量=参数;例如:public void setMaker(String maker)this.maker=Benz;值得注意的是:JavaBean属性值的设定
14、方法名称一般以set三个字母开头,后面跟上属性设定方法名称。,JavaBean的属性简介,1.JavaBean的属性与普通Java类的属性的概念不一样,JavaBean的属性是以方法定义的形式出现的。2.用于对属性赋值的方法称为属性修改器或setter方法,用于读取属性值的方法称为属性访问器或getter方法。3.属性修改器必须以小写的set 前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,nickName属性的修改器名称为setNickName,password属性的修改器名称为setPassword。,4.属性访问器通常以小写的get 前缀开始,后跟属性名,且属性名的第一个字母
15、要改为大写,例如,nickName属性的访问器名称为getNickName,password属性的访问器名称为getPassword。5.JavaBean的属性名是根据setter方法与getter方法的名称来生成的,setter方法或getter方法中除去前缀“set”和“get”后的部分即为属性名,但属性名的首字母一般要小写。,(5)读取JavaBean属性值的方法上面讲述了如何设定JavaBean属性值,那么属性值设定好之后,如何读取呢?JavaBean属性值读取的语法结构如下:public 类型 get读取方法名称()return this.变量参数;例如:public 类型 getM
16、aker()return this.maker;,30,7.3.2 JavaBean的特征,通常一个标准的JavaBean有以下特征(编写规范):一定使用了package语句进行打包JavaBean是一个public类型的类有一个无参数的构造方法属性一般是私有的(即用private修饰)对属性值xxx的获取有相应的getXxx()方法,并且此方法是公有的(即用public修饰)若要获取的属性xxx为boolean类型则可以使用isXxx()方法对属性值xxx的设置有相应的setXxx()方法,并且此方法也是公有的(即用public修饰)需要实现接口。实现了Serializable接口的对象可以
17、转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。,31,UserBean.javapackage jsp.test;public class UserBean private String userName;/用户名private String pwd;/密码private String name;/真实姓名private String gender;/性别private int age;/年龄private String email;/电子邮件private String tel;/固定电话private String mphone;/手机public int getA
18、ge()return age;public void setAge(int age)this.age=age;public String getEmail()return email;public void setEmail(String email)this.email=email;public String getGender()return gender;public void setGender(String gender)this.gender=gender;public String getMphone()return mphone;public void setMphone(St
19、ring mphone)this.mphone=mphone;public String getName()return name;public void setName(String name)this.name=name;,32,public String getPwd()return pwd;public void setPwd(String pwd)this.pwd=pwd;public String getTel()return tel;public void setTel(String tel)this.tel=tel;public String getUserName()retu
20、rn userName;public void setUserName(String userName)this.userName=userName;,33,Eclipse中编写JavaBean,Eclipse 新建Web Project在src文件夹上新建package,如前例中的jsp.test在package上新建类,如前例中的UserBean,34,Eclipse中编写JavaBean,35,36,37,38,39,40,一个JavaBean编写完以后,需要将它编译成“.class”文件,并将此“.class”文件(连同其目录)放到本次应用的WEB-INFclasses目录之下(直接在
21、Apache下使用时)。注意:用Eclipse编写会自动地把.class放到相应的class目录下,使用JavaBean,41,在JSP中使用JavaBean,需要使用以下几个动作元素标签:在网页中创建一个Bean对象标签:用于为Bean对象中的属性赋值标签:用于获取Bean对象中属性的值,42,7.3.1 调用JavaBean,该标签用来在JSP页面中创建一个JavaBean实例。语法如下:其中:id指定该JavaBean的实例变量的名称scope指定该Bean变量的有效范围request指在任何执行相同请求的JSP文件中使用Bean,直到页面执行完毕,session指从创建该Bean开始,
22、在相同session下的JSP页面中可以使用该Bean;application指从创建该Bean开始,在相同application下的JSP页面中可以使用该Bean,43,44,比较在同一个页面输出效果一样使用动作元素可以指定作用域;在脚本段的作用域只限定在当前JSP页面。对于多个页面共享Bean情况,如果使用脚本段,每个页面都要实例化一个新的对象,会增加系统开销,45,补充 JavaBean,该标签用来在JSP页面中创建一个JavaBean实例,并指定它的名字及作用范围。语法如下:,46,id属性,id属性代表JavaBean对象的变量名可为同一 Bean 类指定不同的 id 值,例如:,4
23、7,class 属性,class 属性JavaBean 的类名Count Bean不属于包Count Bean属于test包,48,class属性分两种情况:如果在scope指定的范围内,该JavaBean对象不存在,则创建这个JavaBean对象,相当于执行以下语句Count id1=new Count();Count id2=new Count();若该JavaBean对象已经存在,则不创建新对象,而是直接获得已存在对象的引用。,49,scope 属性,scope 属性表明JavaBean对象存在的范围,可为如下几个值:page(默认)requestsessionApplication以上
24、作用范围使越来越大。,50,request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。举个简单的例子:jsp1.jsp jsp2.jsp,51,运行jsp1.jsp可以正常显示数据,因为作用范围是request,相当于调用了request.setAttribute()方法,jsp2页通过request.getAttribute来获得这个bean.如果把request改为page,就会抛出NullPointerExceptioin.一个请求可以跨好几个JSP(include和forword)和Se
25、rvlet(如filter).不过这里有一个需要注意的就是区别 和.如果上面的改为,即使scope为page也是正确的,是编译时包含,是运行时包含.前者就相当于宏,编译时替代,后者相当于函数,运行时返回.,52,下面看看具体的scope四个值的含义:Page:保存在pageContext对象中,有page范围的JavaBean实例只能在当前创建这个JavaBean的JSP文件中进行操作,这个实例只有在请求返回给客户端后或者转移到另外的JSP页面后才会释放掉。page范围的JavaBean常用于进行一次性操作的JavaBean,这样的Bean用的最多,比如大部分表单提交,Bean的一些计算处理等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaBean 表单 处理
链接地址:https://www.31ppt.com/p-5435947.html