慕课网《JAVA遇见HTML——JSP篇 第五章 JavaBeans》学习笔记
慕课网课程网址:https://www.imooc.com/learn/166。
5-1 本章简介
(1)Javabean简介(2)Javabean设计原则(3)Jsp中如何使用Javabean(4)<jsp:useBeans>(5)<jsp:getProperty>(6)<jsp:setProperty>(7)Javabean的四个作用域范围(8)Model1简介(9)项目案例
5-2 JavaBean简介及设计原则
JavaBeans就是符合某种特定规范的Java类。使用JavaBeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高了代码的维护性。
JavaBeans的设计原则:(1)公有类、(2)无参的公有构造方法、(3)属性私有、(4)getter和setter方法。
例子:
//设计学生类
public class Students{
private String name;
private int age;
public Students(){ }
public void setName( String name ) { this.name = name; }
public String getName() { return this.name; }
public void setAge( int age ) { this.age = age; }
public int getAge() { return this.age; }
}
5-4 使用普通方式创建JavaBean
在Jsp页面中如何使用JavaBeans:
1、像使用普通Java类一样,创建JavaBean实例。
在eclipse中右击,source/Generate Getters and Setters。
5-5 useBean动作元素
2、在Jsp页面中通常使用jsp动作标签使用JavaBean
(1)useBeans动作(2)setProperty动作(3)getProperty动作
<jsp:useBeans>
作用:在jsp页面中实例化或者在指定范围内使用JavaBean:
<jsp:useBean id="提示符" class="java类名" scope="作用范围" />
<jsp:表示它是一个Jsp动作标签。后面写上动作的名字useBean,表示它是一个useBean标签。class中的,应该是java类的全名(包名加类名)。
为null是因为没有对对象中的这两个属性赋值。
5-6 setProperty
<jsp:setProperty>
作用:给已经实例化的Javabean对象的属性赋值,一共有四种形式。
<jsp:setProperty name="JavaBean实例名" property="*" /> (跟表单关联)
<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" /> (跟表单关联)
<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="BeanValue" /> (手工设置)
<jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象中的参数名" /> (更request参数关联)
实例练习:
(1)<jsp:setProperty name="JavaBean实例名" property="*" />(跟表单关联)
(2)<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" />(跟表单关联)
是部分匹配。
(3)<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value="BeanValue" />(手工设置)
这个与表单无关。
(4)<jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象中的参数名" />(跟reuqest参数关联)
仍然用zhangsan,123456登录。
可以再用表单的方式把用户名设置上:
5-7 getProperty
动作标签<jsp:getProperty>
作用:获取指定JavaBean对象的属性值。
<jsp:getProperty name="JavaBean实例名" property="属性名" />
5-8 JavaBean四个作用域范围
说明:使用useBeans的scope属性可以用来指定JavaBean的作用范围。
page //仅在当前页面有效。
request //可以通过HttpRequest.getAttribute() 方法取得JavaBean对象。
session //可以通过HttpSession.getAttribute() 方法取得JavaBean对象。
appalication //可以通过application.getAttribute() 方法取得JavaBean对象。
(1)范围为application对象
或者用JSP内置对象application:
(2)范围为session对象
(3)范围为request对象:
原因:doLogin.jsp里的<a href="testScope.jsp"></a>超链接,是请求重定向,相当于一次新的请求,所以在testScope.jsp里的request对象里就没有myUsers对象了。
解决:我们用请求转发来看一下:
直接进行了请求转发,跳转到testScope页面,地址栏地址没变。同一个请求,request中的myUsers对象还在。
所以request对象范围,JavaBean是起作用的。
(4)范围为page对象:
改一下:
page范围是最小的,只在当前页面有效。在testScope.jsp中,page对象中,并没有名为“myUsers”的对象。
5-10 Model1简介
JavaWeb应用程序的开发,可以分为Model1和Model2。
Model1模型出现前,整个Web应用的情况:几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出相应。
弊端:在界面层(也就是我们的JSP页面中)充斥着大量的业务逻辑的代码和数据访问层的代码,Web程序的可扩展性和可维护性非常差。
JavaBean的出现可以使JSP页面中使用JavaBean封装的数据或者调用JavaBean的业务逻辑代码,这样大大提升了程序的可维护性。
Model1简单来说,就是JSP+JavaBeans的开发模式。
如图,分层的思想,这是一种最简单的三层结构。界面层是我们的JSP页面,业务逻辑层是我们的JavaBeans,第三层就是我们的数据库层(用JavaBeans去访问我们的数据库)。
5-12 阶段项目
使用JSP+JavaBean完成用户登录功能。
(1)根据分层思想,建com.po包,建Users类;建com.dao包,建UsersDAO类。
(2)修改doLogin.jsp:
下图是之前项目中的doLogin.jsp:
效果:
如果密码输错,123456:
若用户名密码都对:
至此,第5章结束。