WEB开发模式

一. JavaBean

1. 什么是JavaBean?

(1) JavaBean,  咖啡豆。 JavaBean是一种开发规范,可以说是一种技术。

(2) JavaBean是一个遵循特定写法的Java类,它通常具有如下特点(也就是说,只有符合以

下规定才能称之为JavaBean):

① 这个Java类必须提供一个无参数的构造方法

②  类中属性都必须私有化

③ 该类提供公开的getter 和 setter方法,私有化的属性必须通过public类型的方法暴露给其

它程序,并且方法的命名也必须遵守一定的命名规范。

(3) JavaBean在J2EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技

术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性

保存数据。

2. JavaBean的作用

用于封装数据,保存数据。访问JavaBean只能使用getter和setter方法;

3. JavaBean的属性

(1) JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的

setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。

(2) 属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性

的修改器名称为setName,password属性的修改器名称为setPassword。 

(3) 属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属

性的访问器名称为getName,password属性的访问器名称为getPassword。 

(4) 一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

4. JavaBean的使用场景

(1) 项目中用到实体对象(entity)符合JavaBean规范;

(2) EL表达式访问对象属性。${student.name}  调用getName()方法,符合JavaBean规范;

(3) JSP标签中的属性赋值。 setNum(Integer num)。符合JavaBean规范;

(4) JSP页面中使用JavaBean。符合JavaBean规范;

5. 以下方法哪些属于JavaBean的规范的方法? 

(1) 答案 :( 1,3,5,6  );

(2) 分析:①Get方法是没有参数的,因为它是用来取值的,它只是有返回值;③而设值就是传递参数,所以里面

必须有参数;⑤也是赋值,只不过传递的是一个布尔值;⑥boolean类型的get方法名称叫 isXXX()方法。

① getName();    ② getName(String name);     ③ setName(String name);   

④ setName();     ⑤ setFlag(boolean flag);        ⑥ isFlag();

二. 在JSP中使用JavaBean

1. JSP中关于JavaBean组件的动作元素

JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:

(1) <jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件;

(2) <jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性;

(3) <jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性;

2. <jsp:useBean>标签 

(1) <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象:

① 如果存在则直接返回该JavaBean对象的引用;

② 如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

(2) 常用语法:

<jsp:useBean id="beanName" class="package.class"  scope="page|request|session|application"/>

① id属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称;

② class属性用于指定JavaBean的完整类名(即必须带有包名);

③ scope属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和

application等四个值中的一个,其默认值是page;

(3) 带标签体的<jsp:useBean>标签 

① 语法:

<jsp:useBean ...> 
    Body 
</jsp:useBean> 

② 功能:

Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。

③ 注意:

默认采用page域,每次都是没有的,所以执行,而如果是session域,第一次没有,以后都有,除非session过

期,application类推…

3. <jsp:setProperty>标签

(1) <jsp:setProperty>标签用于设置和访问JavaBean对象的属性。

(2) 语法:

<jsp:setProperty name="beanName" 
{ 
	property="propertyName" value="{string | <%= expression %>}" |
	property="propertyName" [ param="parameterName" ] | 
	property= "*" 
}/>

① name属性用于指定JavaBean对象的名称; 

② property属性用于指定JavaBean实例对象的属性名;

③ value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串

时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须

与所要设置的JavaBean属性的类型一致;  

④ param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设

置的JavaBean属性的类型。

(3) 注意

① 在通过该标签设置Bean的属性值时对于八种基本类型,该标签可以将字符串自动转换,而其他类型无法转

换。比如Date,param=“<%=new Date()%>”;

② param和*设置(param对请求参数的自动转型);

4. <jsp:getProperty>标签

(1) <jsp:getProperty>标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读

取的属性值转换成字符串后插入进输出的响应正文中;

(2) 语法

<jsp:getProperty name="beanInstanceName" property="PropertyName" />

① name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同; 

② property属性用于指定JavaBean实例对象的属性名;

(3) 如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将

是一个内容为“null”的字符串。

三. WEB开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是

Servlet+JSP+JavaBean模式。


1. JSP+JavaBean模式

(1) JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下,JavaBean用于封装业务数

据,JSP即负责处理用户请求,又显示数据。

(2) 用户首先访问的是JSP页面,JSP页面可以收集用户数据也可以显示用户数据,它收集数据以后还是提交给

JSP,最终目标是要保存数据到数据库,也就是在JSP页面中访问Javabean,它先把数据放到对象里面去使用

Javabean封装业务数据,所以应该是先到Javabean,再到数据库就会更加灵活。可以在JSP中用标签去操作

Javabean。在这个模式中和用户打交道的是JSP,处理业务逻辑的也是JSP。

2. Servlet+JSP+JavaBean(MVC)模式

(1) Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,Servlet负责处理用户请求,

JSP负责数据显示,JavaBean负责封装数据。 Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开

发推荐采用此种模式。

(2) 用户访问的是JSP页面,JSP页面可以显示数据,并把收集到的数据提交给Servlet,最终也是需要存到数据库

中,为了提高数据的扩展性,我们可以把数据封装到JavaBean中,JavaBean也是用来封装业务数据,在Servlet

中就是为了保存这个JavaBean,再把它保存到数据库中,在Servlet和JavaBean之间,我们可以在Servlet中直接

保存数据或查询数据,但是我们可以在Servlet和DB数据库之间多写一层dao层(数据访问对象,里面是一些

CURD方法),有了dao之后,在Servlet中并不直接操作JavaBean,而是通过dao操作封装JavaBean,然后再把

数据存进数据库中,或者取出来,我们是通过dao来访问JavaBean,访问JavaBean就意味着我们可以访问数据

库,在Servlet中可以直接调用dao层。但是处理业务逻辑的代码不要在Servlet中去做,在Servlet和dao层之间还

有一层Service层(业务逻辑层),项目中设计到逻辑的代码放到这一层中,这一层中也是一些CURD方法,但是

这个Service和dao层又不一样,它们是有区别的,比如说在dao层中有一个添加联系人的方法add(),在这个方法

中可以保存到db中,那么这个Service层在添加联系人之前可能还会执行一些业务,比如说判断姓名是否是重复

的,如果不重复再保存,不重复就调用dao的add方法,所以Service层中就先处理这些业务,处理完之后就去保

存。此时在Servlet层中就不做处理业务了,而是做调用业务逻辑,真正的业务逻辑在Service层中处理。数据的

访问和数据的增删改查都放在dao层,Service层和dao层的关系是Service层去调用dao层的一些方法。Servlet调

用Service层。

四. 总结

1. MVC开发模式

(1) Model:JavaBean实现,用于封装业务数据;

(2) View:Jsp实现,用于显示数据;

(3) Controller:Servlet实现,用于控制Model和View;

2. 三层结构

(1) dao层:和数据访问相关的操作;

(2) service层:和业务逻辑相关的操作;

(3) web层:和用户直接交互相关的操作(传接参数,跳转页面);





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

处女座的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值