全部章节   >>>>


本章目录

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 实践练习

总结:


4.1 JavaBean

4.1.1 JavaBean 概述

JavaBean 是使用 Java 编写的组件,每一个 JavaBean 均实现一个特定的功能。

JavaBean 通过对属性和方法的封装,成为具有独立功能、可重复使用并且可与其他控件通信的组件对象,具有以下优点

  • 重用性强
  • 模块化
  • 可维护性、扩展性强

4.1.2 JavaBean的重要性

在一个复杂的Web应用中把特定的功能封装成JavaBean能有效提高代码重用性和后期维护性

JavaBean 通过封装一些具体的动作来实现一个特定的功能,即对外提供最小限度的属性接口,供用户操作和控制,但用户不知道它内部的具体运行机制,从而提高了安全性

4.1.3 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;
}

4.1.4 JavaBean的属性

JavaBean 的属性可以是任意类型,并且一个 JavaBean 可以有多个属性。每个属性通常都需要具有相应的setter()修改器方法、getter()访问读取器方法

getter、setter方法命名规则如下:

  • 属性名:name getter
  • 读取:getName()
  • setter修改:setName()

4.1.5 快速生成JavaBean

通过 Eclipse 快速生成JavaBean中的构造方法:

有参构造方法虽然不是 JavaBean 必须的,但为了使实例化 JavaBean 组件更加方便,建议提供有参构造方法,但是无参构造方法需要显示提供

4.1.6 实践练习

4.2 JavaBean 的分类

4.2.1 封装数据的 JavaBean

封装数据的 JavaBean 通常就是表达一个完整的实体信息,适用于以下两种情况:

在方法中对一个完整实体VO(值对象)信息进行传递(可以提高方法的可维护性与可扩展性)

 public boolean addPeople(People people){}

作为某些集合数据中的单个元素实体(集合中存储的实体VO对象信息,代表集合中的单个数据项)

List<People> peopleList=new ArrayList<People>();
People people=new People();
peopleList.add(people);

4.2.2 封装业务的 JavaBean

封装业务方法的 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<People> getAll(){ }
}

每个方法中可以针对数据库表编写操作代码,实现功能

4.2.3 实践练习

4.3 JSP 标准动作简介(一)

4.3.1 标准动作概述

JSP中有两种方法可以创建并使用JavaBean。一种是使用Java脚本代码实现,另一种是通过JSP标准动作实现

JSP标准动作更好的配合Html规范,以标签的方式来操作和使用JavaBean,有效的避免了JSP中出现大量的Java脚本代码,保持了界面风格统一

常用的标准动作如下

4.3.2 < jsp:useBean >

<jsp:useBean>用于在JSP页面中创建一个JavaBean对象,并且通过属性的设置将该实例存储到 JSP 指定的范围内。如果在指定的范围内已经存在指定的 Bean 实例,则直接使用此实例,而不再创建新的 Bean 实例

语法:

<jsp:useBean id="BeanName" class="package.className"
scope="page|session|application|request"/>
  • id 属性:指定一个变量名
  • class 属性:指定一个完整的类名,其中 package 表示包名,className 表示类名
  • scope 属性:指定所创建的 Bean 实例的存储范围,默认为“page”范围

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类使用<jsp:useBean> 在JSP界面创建对象

<%@ page import="java.util.*"%>
<body>
<jsp:useBean id="dateFormate" class="com.exam.DateFormat" />
<%
//在 scriptlet 中直接使用
String msg=dateFormate.convert(new Date(),"yyyy 年 MM 月 dd 日 HH:mm:ss");
out.print("<h3> 现在是:"+msg+"<h3>");
%>
</body>

4.3.3 < jsp:setProperty >

<jsp:setProperty> 动作用于设置 useBean 中指定 Bean 的属性值

语法:

<jsp:setProperty name="BeanAlias“  property="propertyName"
value=“value“ param=“请求参数名”/>
  • name 属性:指定 <jsp:useBean> 中使用的 Bean 的 ID。
  • property 属性:指定要设置的 Bean 的属性名称。
  • value 属性:指定要为属性设置的显示值。
  • param 属性:自动从请求中获取对应参数值放入对象中

param属性不能和value同时使用

4.3.3 < jsp:getProperty >

<jsp:getProperty> 动作用于获取 <jsp:useBean> 中指定 Bean 的属性值

注意: <jsp:getProperty>会调用JavaBean中的getXXX对应方法,而不是访问属性,即使没有属性,如果有getter方法仍可以调用成功

语法:

<jsp:getProperty name="BeanAlias" property="propertyName" />
  • name 属性:指定 <jsp:useBean> 中使用的 Bean 的 ID。
  • property 属性:指定从 Bean 中检索指定的名称。

示例:使用JSP标准动作创建JavaBean对象,设置属性以及计算获取信息

<jsp:useBean id="subjectInfo" class="com.exam.SubjectInfo" />
<!-- 为该 bean 设置属性 -->
<jsp:setProperty name="subjectInfo" property="chinese" param="chinese" />
<!-- 通过 param 得到输入的语文分数的值 -->
<jsp:setProperty name="subjectInfo" property="mathematics" param="mathematics" />
<!-- 通过 param 得到输入的数学分数的值 -->
<jsp:setProperty name="subjectInfo" property="english" param="english" /> 语文分数:<jsp:getProperty name="subjectInfo" property="chinese" /><br />
数学分数:<jsp:getProperty name="subjectInfo" property="mathematics" /><br />
英语分数:<jsp:getProperty name="subjectInfo" property="english" /><br />
总分:<jsp:getProperty name="subjectInfo" property="sumScore" /><br />
平均分:<jsp:getProperty name="subjectInfo" property="averageScore" /><br />

4.3.4 实践练习

4.4  JSP 标准动作简介(二)

4.4.1 < jsp:forward >

forward 动作用于将用户的请求转发到一个 HTML 文件、JSP 页面或 Servlet 中。

语法:

<jsp:forward page=“跳转的目标url"/>

注意:forward 标准动作相当于转发而不是重定向。

示例:使用<jsp:forward>跳转界面,同时传递参数数据

<body>
<jsp:forward page="target.jsp">
<jsp:param value="1234" name="userName" />
<jsp:param value="123456" name="password" />
</jsp:forward>
</body>

target.jsp 是转发后的界面

4.4.2 < jsp:include >

<jsp:include>可以将另外一个页面嵌入到当前页面中

<jsp:include page="url" flush="true"/>

url 属性:指定目标资源。

flush 属性:这里必须使用 flush="true",不能使用 false 值,默认值为 false。

示例: 使用<jsp:include>嵌入另外一个页面

  1. 创建一个 JSP 页面,命名为“date.jsp”,使用脚本判断当前日期和星期并输出
  2. 创建一个 JSP 页面,命名为“test.jsp”,使用include动作将date.jsp嵌入:
<body>
<jsp:include page="date.jsp" flush="true" />
</body>

4.4.3 实践练习

总结:

  • JavaBean 是使用 Java 编写的组件,每一个 JavaBean 实现一个特定的功能,具有重用性强,易维护扩展等特点
  • JavaBean一般需要实现序列化接口,提供无参构造方法,对功能进行getter、setter封装访问
  • JSP标准动作是一种以标签的形式替代scriptlet脚本方式操作JavaBean
  • JSP标准动作包括:<jsp:useBean> <jsp:setProperty> <jsp:getProperty>    <jsp:forward> <jsp:include>等

Java Web程序设计笔记 • 【第4章 JavaBean和JSP标准动作】的更多相关文章

  1. Java Web程序设计笔记 • 【目录】

    章节 内容 实践练习 Java Web程序设计作业目录(作业笔记) 第1章 Java Web程序设计笔记 • [第1章 Web应用程序] 第2章 Java Web程序设计笔记 • [第2章 JSP基础 ...

  2. Java Web程序设计笔记 • 【第6章 Servlet技术进阶】

    全部章节   >>>> 本章目录 6.1 应用 Servlet API(一) 6.1.1 Servlet 类的层次结构 6.1.2 使用 Servlet API 的原则 6.1 ...

  3. Java Web程序设计笔记 • 【第5章 Servlet技术】

    全部章节   >>>> 本章目录 5.1 Servlet 技术介绍 5.1.1 为什么需要Servlet 5.1.1 Servlet 简介 5.1.2 Java Web 处理流 ...

  4. Java Web程序设计笔记 • 【第2章 JSP基础】

    全部章节   >>>> 本章目录 2.1 JSP 简介 2.1.1 JSP 概述 2.1.2 开发第一个 JSP 页面 2.1.3 JSP 处理流程 2.1.4 实践练习 2. ...

  5. Java Web程序设计笔记 • 【第1章 Web应用程序】

    全部章节   >>>> 本章目录 1.1 Web 应用程序 1.1.1 Web 应用程序概述 1.1.2 Web 应用程序的工作原理 1.1.3 实践练习 1.2 HTTP协议 ...

  6. Java Web程序设计笔记 • 【第10章 JSTL标签库】

    全部章节   >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...

  7. Java Web程序设计笔记 • 【第9章 EL表达式】

    全部章节   >>>> 本章目录 9.1 EL 表达式基础 9.1.1 EL 表达式简介 9.1.2 EL 表达式的定义 9.1.3 使用 EL 访问变量 9.1.4 使用 E ...

  8. Java Web程序设计笔记 • 【第3章 JSP内置对象】

    全部章节   >>>> 本章目录 3.1 JSP 内置对象简介 3.1.1 JSP 内置对象概述 3.1.2 JSP 表单处理 3.1.2 request对象 3.1.2 开发 ...

  9. Java Web程序设计笔记 • 【第8章 会话跟踪技术进阶】

    全部章节   >>>> 本章目录 8.1 Session机制 8.1.1 Session 简介 8.1.2 创建 HttpSession 实例 8.1.3 HttpSesiso ...

随机推荐

  1. Dubbo服务调用超时

    服务降级的发生,其实是由于消费者调用服务超时引起的,即从发出调用请求到获取到提供者的响应结果这个时间超出了设定的时限.默认服务调用超时时限为1秒.可以在消费者端与提供者端设置超时时限. 一.创建提供者 ...

  2. Windows下80端口被占用的解决方法(SQL Server)

    查找80端口被谁占用的方法 进入命令提示行(WIN+R 输入 CMD),输入命令 netstat -ano|findstr 80 (显示包含:80的网络连接) ,就可以看到本机所有端口的使用情况,一般 ...

  3. 使用CORS处理跨域请求

    package com.leyou.gateway.config;import org.springframework.context.annotation.Bean;import org.sprin ...

  4. 【力扣】剑指 Offer 25. 合并两个排序的链表

    输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4输出:1->1->2->3-> ...

  5. 【C++】最长回文子串/动态规划

    ACM #include <bits/stdc++.h> using namespace std; const int maxn = 1010; char S[maxn]; int dp[ ...

  6. 测试工具_siage

    目录 一.简介 二.例子 三.参数 一.简介 Siege是一个多线程http负载测试和基准测试工具. 1.他可以查看每一个链接的状态和发送字节数 2.可以模拟不同用户进行访问 3.可以使用POST方法 ...

  7. OpenGL ES2.0 入门经典例子

    原文链接地址:http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial 免责申明(必读!):本博客提供的所有教程的翻译原稿 ...

  8. <转>Hadoop入门总结

    转自:http://www.cnblogs.com/skyme/archive/2012/06/01/2529855.html 第1章 引言 1.1 编写目的 对关于hadoop的文档及资料进行进一步 ...

  9. Go - 如何编写 ProtoBuf 插件(二)?

    目录 前言 定义插件 使用插件 获取自定义选项 小结 推荐阅读 前言 上篇文章<Go - 如何编写 ProtoBuf 插件 (一) >,分享了使用 proto3 的 自定义选项 可以实现插 ...

  10. python selenium 多账户自动登入163邮箱

    pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...