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层:和用户直接交互相关的操作(传接参数,跳转页面);上一篇: java swing中实现拖拽功能示例
下一篇: Spring学习笔记--【01】