全部章节   >>>>


本章目录

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. 容器之分类与各种测试(四)——unordered-multimap

    unordered-multiset与unordered-multimap的区别和multiset与multimap的区别基本相同,所以在定义和插入时需要注意 key-value 的类型. 例程 #i ...

  2. 【Go】【Basic】MacOS上搭建GO开发环境

    1. GO下载 1.1. 下载地址:https://www.golangtc.com/download (需要科学上网) 1.1.1. PKG安装: 下载这个包:go1.9.2.darwin-amd6 ...

  3. vue-cli4脚手架搭建三

    组件传值 <script> import LunBo from "./LunBo"; export default { name: 'Home', components ...

  4. Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  5. html之table的tr加间隔

    <table style="border-collapse:separate; border-spacing:0px 10px;"> <tr> <td ...

  6. java上传图片或文件

    转载至:http://www.xdx97.com/#/single?bid=8b351a73-922c-eadc-512e-9e248a3efde9 前端通过form表单用post方式提交文件,后台进 ...

  7. C++内存管理:简易内存池的实现

    什么是内存池? 在上一篇 C++内存管理:new / delete 和 cookie中谈到,频繁的调用 malloc 会影响运行效率以及产生额外的 cookie, 而内存池的思想是预先申请一大块内存, ...

  8. Linux进程操作

    查看进程启动时间 ps -eo pid,lstart | grep PID 查看进程的运行多久 ps -eo pid,etime |grep PID 查看进程中启动了哪些线程 top -H -p pi ...

  9. IO多路复用技术总结

    来源:微信公众号「编程学习基地」 IO 多路复用概述 I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用. 在IO多路复用技术 ...

  10. HGAME2021 week4 pwn writeup

    第四周只放出两道题,也不是很难. house_of_cosmos 没开pie,并且可以打got表. 在自写的输入函数存在漏洞.当a2==0时,因为时int类型,这里就会存在溢出.菜单题,但是没有输出功 ...