JavaBean 与 设计模式一(Model 1)

JaveBean与 Model 1

一、Model1

如果由JSP接受用户请求,并对用户请求做出处理、相应。这样,html界面脚本中有很多数据访问、逻辑的代码,不容易维护,比较混乱。类似于在Android中,大量的用java代码处理本可以又XML处理的静态界面操作。因此,数据、逻辑操作和静态UI必须分离出来。如下图所示,就是Model1的思想。

简单说来,就是JSP处理静态布局。而数据访问和逻辑操作全用JavaBean 封装,由JavaBean与数据库交互。这里是一种分层的思想(当然,Model 1的分层还不彻底,因此后续还有有Model2)。下面就来说说JavaBeans如何封装和使用。

二、JavaBeans 封装

JavaBean 是符合特定规范的Java类。 使用JavaBean的目的是减少冗余代码,减少重复编写,明确的区分功能,从而提高可维护性。

JavaBean 的设计原则:(1)共有类:public (2)属性私有:内部参数为private (3)无参的共有构造方法: (4)get()&set()方法:通过set/get 方法封private 属性

注意!以上原则的后后一条主要用来约束数据型的JavaBeans,当封装逻辑的时候,如果并不涉及数据,并不会涉及到原则(4)(纯逻辑的话,根本没有数据嘛)。

JavaBean具体定义、引用步骤:1)在src目录下创建一个class,并且保证该Class符合JavaBean规范。2)在要使用的该类的.jsp 中引入这个包,如<%@ page import="com.example.xxClass" %>3)jsp 脚本中使用这个类,同Java SE

三、JSP动作元素

JSP动作元素由一个XML标签表示,,为请求处理提供信息。动作标签共有5类:1)与javaBean 存取相关的,包括: <jsp:useBean> <jsp:setProoerty><jsp:getProperty>2)6个基本元素动作 :〈jsp:include〉〈jsp:forward〉〈jsp:param〉〈jsp:plugin〉〈jsp:params〉〈jsp:fallback〉3)6个Jsp Document有关的元素 :〈jsp:root〉 〈jsp:declaration〉〈jsp:scriptlet〉〈jsp:expression〉〈jsp:text〉〈jsp:output〉4)动态生成Xml元素置 :〈jsp:attribute〉〈jsp:body〉〈jsp:element〉5)Tag File相关:〈jsp:invoke〉〈jsp:dobody〉

四、useBeans & setProperty & getProperty 动作

useBean

useBean动作在JSP中实例化一个JavaBean,与 new 出一个实例不同,还可以选择用 jsp 标签实例化一个JavaBeans,如:

<jsp:useBean id="myBean" calss="com.example.mJavaBean" scope="page"/>

这行标签就等价于:

mJavaBean myBean=new mJavaBean;

注意,jsp标签中的最后一个attribute [scope] 用来指定这个myBean实例的有效范围,这里的有效范围是整个page, 因此和 "new" 完全等效。后文会详细说明有效范围。

setProperty

看到这里,JavaBeans 规范中的 new,set,get 方法的原因就很清楚了。useBeans 实际是在调用无参数的constructor.而setProperty是在调用set方法。 get同理。setProperty动作标签共有4种形式,分别是1)

<jsp:setProperty name="mBean" property= "*"/>

和表单相关联,*代表所有表单内容。如果表单内容名字自动匹配,匹配成功则set2)

<jsp:setProperty name="mBean" property= "property"/>

和表单相关,只匹配property 中指定的 表单中的属性3)

<jsp:setProperty name="mBean" property= "property" value="value"/>

直接显示的调用set方法4)

<jsp:setProperty name="mBean" property= "property" value="value" param=="request_param"/>

param 为 URL中request 参数的名字,如 action= "xxx.jsp?pa=123" 中的pa

getProperty

与"set"标签完全类似,只是这里调用get方法。只有一种形式。

<jsp:getProperty name="JavaBean name" property="property name"/>

五、JavaBean 作用范围 (scope)

在useBeans标签中,需要指定JavaBeans 的作用范围(scope)。JavaBeans 共有4种作用范围,从小到大依次是:

1)page: 尽在当前页有效(page定义就是当前页,之前的博文有解释)。2)request: 可以通过 HttpRequest.getAttribute() 获得该JavaBean3)session: 可以通过 HttpSession.getAttribute() 获得该JavaBean, 同上4)application; 可以通过 application.getAttribute() 获得该JavaBean.

将会错过更好的风景,保持一份平和,保持一份清醒。

JavaBean 与 设计模式一(Model 1)

相关文章:

你感兴趣的文章:

标签云: