本章目录
4.1 JavaBean
4.1.1 JavaBean 概述
4.1.2 JavaBean的重要性
4.1.3 JavaBean的特点
4.1.4 JavaBean的属性
4.1.5 快速生成JavaBean
4.1.6 实践练习
4.2 JavaBean 的分类
4.2.1 封装数据的 JavaBean
4.2.2 封装业务的 JavaBean
4.2.3 实践练习
4.3 JSP 标准动作简介(一)
4.3.1 标准动作概述
4.3.2 < jsp:useBean >
4.3.3 < jsp:setProperty >
4.3.3 < jsp:getProperty >
4.3.4 实践练习
4.4 JSP 标准动作简介(二)
4.4.1 < jsp:forward >
4.4.2 < jsp:include >
4.4.3 实践练习
总结:
JavaBean 是使用 Java 编写的组件,每一个 JavaBean 均实现一个特定的功能。
JavaBean 通过对属性和方法的封装,成为具有独立功能、可重复使用并且可与其他控件通信的组件对象,具有以下优点
在一个复杂的Web应用中把特定的功能封装成JavaBean能有效提高代码重用性和后期维护性
JavaBean 通过封装一些具体的动作来实现一个特定的功能,即对外提供最小限度的属性接口,供用户操作和控制,但用户不知道它内部的具体运行机制,从而提高了安全性
通常JavaBean都具有如下几个特点:
提供一个public无参构造方法,以方便创建对象和赋予初值
public class People {
private String name; // 定义姓名
private String sex; // 定义性别
public People(){
name="jack"; // 为特性的属性设置默认值
sex="M";
}
// 此处省略 getter() 方法和 setter() 方法
}
通常情况JavaBean组件需要实现 java.io.Serializable 序列化接口,这样在将对象存储为文件或网络中传递时将非常便利
import java.io.Serializable;
// 实现接口
public class People implements Serializable { //该接口中未定义任何内容,所以仅仅起标识作用
......
}
在 JavaBean 组件中要为所有标识特性的属性提供对应的 get() 方法和 set() 方法,以便为组件用户提供操作和控制组件的接口
public class People implements Serializable {
private String name; // 定义姓名 属性声明private私有 提供public公共get、set访问接口
public People(){
}
//get() 方法与 set() 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
JavaBean 的属性可以是任意类型,并且一个 JavaBean 可以有多个属性。每个属性通常都需要具有相应的setter()修改器方法、getter()访问读取器方法
getter、setter方法命名规则如下:
通过 Eclipse 快速生成JavaBean中的构造方法:
有参构造方法虽然不是 JavaBean 必须的,但为了使实例化 JavaBean 组件更加方便,建议提供有参构造方法,但是无参构造方法需要显示提供
封装数据的 JavaBean 通常就是表达一个完整的实体信息,适用于以下两种情况:
在方法中对一个完整实体VO(值对象)信息进行传递(可以提高方法的可维护性与可扩展性)
public boolean addPeople(People people){}
作为某些集合数据中的单个元素实体(集合中存储的实体VO对象信息,代表集合中的单个数据项)
List peopleList=new ArrayList();
People people=new People();
peopleList.add(people);
封装业务方法的 JavaBean 通常不需要 get()、set() 方法,只要根据业务需求定义相应的业务方法即可,比如针对数据操作的增删改查可以定义对应方法
public class PeopleService{
// 增加 People
public boolean add(People people) { }
// 通过 id 更新一个 People
public boolean update(People newPeople){ }
// 通过 id 删除一个 People
public boolean del(int id) { }
// 根据 id 得到一个 People
public People get(int id){ }
// 得到所有的 People
public List getAll(){ }
}
每个方法中可以针对数据库表编写操作代码,实现功能
JSP中有两种方法可以创建并使用JavaBean。一种是使用Java脚本代码实现,另一种是通过JSP标准动作实现
JSP标准动作更好的配合Html规范,以标签的方式来操作和使用JavaBean,有效的避免了JSP中出现大量的Java脚本代码,保持了界面风格统一
常用的标准动作如下
语法:
scope代表创建的对象所处的作用域,有如下几种:
名称 |
作用域 |
page |
当前Jsp页面范围 |
request |
request请求范围,如转发的下一个界面 |
session |
session会话范围有效 |
application |
application整个应用程序范围 |
示例:创建DateFormat类
package com.exam;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormat {
// 定义 convert() 方法
public String convert(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
}
创建DateFormat类使用
<%@ page import="java.util.*"%>
<%
//在 scriptlet 中直接使用
String msg=dateFormate.convert(new Date(),"yyyy 年 MM 月 dd 日 HH:mm:ss");
out.print(" 现在是:"+msg+"");
%>
语法:
param属性不能和value同时使用
注意:
语法:
示例:使用JSP标准动作创建JavaBean对象,设置属性以及计算获取信息
语文分数:
数学分数:
英语分数:
总分:
平均分:
forward 动作用于将用户的请求转发到一个 HTML 文件、JSP 页面或 Servlet 中。
语法:
注意:forward 标准动作相当于转发而不是重定向。
示例:使用
target.jsp 是转发后的界面
url 属性:指定目标资源。
flush 属性:这里必须使用 flush="true",不能使用 false 值,默认值为 false。
示例: 使用