慕课网《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章结束。

 

 

posted on 2019-11-07 22:50  平凡力量  阅读(300)  评论(0编辑  收藏  举报