JavaBean技术

1、JavaBean介绍

JavaBean的产生,使JSP页面中的业务逻辑变得更加清晰。程序中的实体对象和业务逻辑可以单独封装到Java类中,JSP页面通过自身操作JavaBean的动作标识对其进行操作,改变了HTML网页代码与Java代码混乱的编写方式,不仅提高了程序的可读性、易维护性,而且还提高了代码的重用性。

Java之父 James Gosling 在设计Java语言时,为Java组件中封装数据的Java类进行命名时,看到桌子上的咖啡豆,于是灵机一动,就把它命名为“JavaBean”,bean在中文中是“豆、豆子”的意思。

1.1 JavaBean概述

在JSP网页开发的初级阶段,并没有框架与逻辑分层概念的产生,需要将Java代码嵌入到网页中对JSP页面中的一些业务逻辑进行处理,如字符串处理、数据库操作等。其开发流程如下图所示。

此种开发方式虽然看似流程简单,但如果将大量的Java代码嵌入到JSP页面中,必定会给修改及维护带来一定的困难,因为在JSP页面中包含HTML代码、CSS代码、Java代码等,同时再加入业务逻辑处理代码,既不利于页面编程人员的设计,也不利于Java程序员对程序的开发,而且将Java代码写入到JSP页面中,不能体现面向对象的开发模式,达不到代码的重用。

如果使HTML代码与Java代码相分离,将Java代码单独封装成为一个处理某种业务逻辑的类,然后在JSP页面中调用此类,则可以降低HTML代码与Java代码之间的耦合度,简化JSP页面,提高Java程序代码的重用性及灵活性。这种与HTML代码相分离,而使用Java代码封装的类,就是一个JavaBean组件。在Java Web开发中,可以使用JavaBean组件来完成业务逻辑的处理。应用 JavaBean与JSP整合的开发模式如下图所示。

1.2 JavaBean种类

起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean。随着技术的不断发展与项目的需求,目前JavaBean主要用于实现一些业务逻辑或封装一些业务对象,由于这样的JavaBean并没有可视化的界面,所以又称之为非可视化的JavaBean。

可视化的JavaBean一般应用于Swing的程序中,在Java Web开发中并不会采用,而是使用非可视化的JavaBean,实现一些业务逻辑或封装一些业务对象。

 

2、JavaBean的应用

在JSP页面中应用JavaBean非常简单,主要通过JSP动作标签<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>来实现对JavaBean对象的操作,但所编写的JavaBean对象要遵循JavaBean规范,只在严格遵循JavaBean规范,在JSP页面才能够方便的调用及操作JavaBean。

将JavaBean对象应用到JSP页面中,JavaBean的生命周期可以自行进行设置,它存在于4种范围之内,分别为:page、request、session、application,默认的情况下,JavaBean作用于page范围之内。

2.1 <jsp:useBean>动作标签

<jsp:useBean>动作标签用来装载一个将在JSP页面中使用的JavaBean对象。其语法格式如下:

<jsp:useBean id="beanName" class="package.class" scope="page" />

参数说明:

id:用于创建JavaBean对象的引用名。

class:用于指定JavaBean的类。

scope:用于指定JavaBean对象的范围,默认情况下,scope被设置为page。

2.2 <jsp:setProperty>动作标签

<jsp:setProperty>动作标签用于设置<jsp:useBean>动作标签中指定的JavaBean对象的属性值。<jsp:setProperty>动作标签指定名称、属性、值和参数,用于赋给JavaBean对象的属性。其语法格式如下:

<jsp:setProperty name="beanName" property="propertyName" value="value" param="parameter" />

参数说明:

name:用于对应 <jsp:useBean>动作标签中的id属性。

property:指定要为之设置值的JavaBean的属性名称。

value:指定要为属性设置的值。

param:指定用于输入数据的表单元素名称,并给属性赋值。

注意:value属性不能与param属性一起使用。

2.3 <jsp:getProperty>动作标签

<jsp:getProperty>动作标签用于获取<jsp:useBean>动作标签中指定的JavaBean对象的属性值。其语法格式如下:

<jsp:getProperty name="beanName" property="propertyName" />

参数说明:

name:用于对应 <jsp:useBean>动作标签中的id属性。

property:指定要获取JavaBean对象的属性名称。

示例:实现人员档案管理系统,在其中录入人员信息功能,主要通过在JSP页面中应用JavaBean进行实现。

(1)创建名称为Person的类,将其放置于com.pjb.bean包中,实现对人员信息的封装。

package com.pjb.bean;

/**
 * 人员信息类
 * 
 * @author pan_junbiao
 *
 */
public class Person
{

	private String name; // 姓名
	private String blog; // 博客地址
	private int age; // 年龄
	private String sex; // 性别
	private String[] interests; // 兴趣

	public String getName()
	{
		return name;
	}

	public void setName(String name)
	{
		this.name = name;
	}

	public String getBlog()
	{
		return blog;
	}

	public void setBlog(String blog)
	{
		this.blog = blog;
	}

	public int getAge()
	{
		return age;
	}

	public void setAge(int age)
	{
		this.age = age;
	}

	public String getSex()
	{
		return sex;
	}

	public void setSex(String sex)
	{
		this.sex = sex;
	}

	public String[] getInterests()
	{
		return interests;
	}

	public void setInterests(String[] interests)
	{
		this.interests = interests;
	}
}

(2)创建将数组转换成字符串的JavaBean对象,它的名称为Convert。在该类中编写arrToStr()方法,将数组对象转换成指定格式的字符串。

package com.pjb.bean;

/**
 * 转换数组的JavaBean
 * 
 * @author pan_junbiao
 *
 */
public class Convert {
	/**
	 * 将数组转换成为字符串
	 * 
	 * @param arr 数组
	 * @return 字符串
	 */
	public String arrToStr(String[] arr) {
		// 实例化StringBuffer
		StringBuffer sb = new StringBuffer();
		// 判断arr是否为有效数组
		if (arr != null && arr.length > 0) {
			// 遍历数组
			for (String s : arr) {
				// 将字符串追加到StringBuffer中
				sb.append(s);
				// 将字符串追加到StringBuffer中
				sb.append(",");
			}
			// 判断字符串长度是否有效
			if (sb.length() > 0) {
				// 截取字符
				sb = sb.deleteCharAt(sb.length() - 1);
			}
		}
		// 返回字符串
		return sb.toString();
	}
}

(3)创建注册页面 reginput.jsp,在该页面中放置录入人员信息所需的表单。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>人员注册</title>
</head>
<body>
	<div align="center">请输入注册信息
		<form name="form1" method="post" action="reginfo.jsp">
			<table>
				<tr>
					<td>姓名:</td>
					<td><input type="text" name="name" style="width:250px;"/></td>
				</tr>
				<tr>
					<td>博客:</td>
					<td><input type="text" name="blog" style="width:250px;"/></td>
				</tr>
				<tr>
					<td>年龄:</td>
					<td><input type=text name="age" style="width:250px;"/></td>
				</tr>
				<tr>
					<td>性别:</td>
					<td>
						<select name = "sex">
							<option value="男" selected="selected">男</option>
							<option value="女">女</option>
						</select>
					</td>
				</tr>
				<tr>
					<td>兴趣:</td>
					<td>
						<input type="checkbox" name="interests" value="足球"  />足球
						<input type="checkbox" name="interests" value="篮球"  />篮球
						<input type="checkbox" name="interests" value="羽毛球"  />羽毛球
						<input type="checkbox" name="interests" value="乒乓球"  />乒乓球
					</td>
				</tr>
				<!-- 以下是提交、取消按钮 -->
				<tr>
					<td>
						<input type="submit" value="提交" />
					</td>
					<td>
						<input type="reset" value="取消" />
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

(4)创建注册提交页面 reginfo.jsp,用于对reginput.jsp页面中表单提交请求进行处理。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); //字符串编码格式 %>
<jsp:useBean id="person" class="com.pjb.bean.Person">
	<jsp:setProperty name="person" property="*" />
</jsp:useBean>
<jsp:useBean id="convert" class="com.pjb.bean.Convert"></jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册信息</title>
</head>
<body>
<table align="center">
	<tr>
		<td>姓名:</td>
		<td>
			<jsp:getProperty property="name" name="person"/>
		</td>
	</tr>
	<tr>
		<td>博客:</td>
		<td>
			<jsp:getProperty property="blog" name="person"/>
		</td>
	</tr>
	<tr>
		<td>年龄:</td>
		<td>
			<jsp:getProperty property="age" name="person"/>
		</td>
	</tr>
	<tr>
		<td>性别:</td>
		<td>
			<jsp:getProperty property="sex" name="person"/>
		</td>
	</tr>
	<tr>
		<td>兴趣:</td>
		<td>
			<%= convert.arrToStr(person.getInterests()) %>
		</td>
	</tr>
</table>
</body>
</html>

执行结果:

(1)注册页面 reginput.jsp。

(2)注册提交页面 reginfo.jsp。

说明:

(1)如果所处理的表单信息中包含中文,通过JSP内置对象的 request.setCharacterEncoding("UTF-8")方法指定字符编码格式进行解决。

(2)表单信息中的属性名称最好设置成为JavaBean中的属性名称,这样就可以通过“<jsp:setProperty name="person" property="*" />”的形式来接收所有参数,这种方式可以减少程序中的代码量。如将用户年龄文本框的name属性设置为age,它对应的Person类中的age字段。

(3)表单中的属性名称与JavaBean中的属性名称不一致,可以通过<jsp:setProperty>标签中的param属性来指定表单中的属性。如表单中的用户名为username,可以使用“<jsp:setProperty name="person" property="name" param="username"/>”对其赋值。例如,上述注册提交页面 reginfo.jsp中的代码可以修改为:

<jsp:useBean id="person" class="com.pjb.bean.Person" />
<jsp:setProperty name="person" property="name" param="name"/>
<jsp:setProperty name="person" property="blog" param="blog"/>
<jsp:setProperty name="person" property="age" param="age"/>
<jsp:setProperty name="person" property="sex" param="sex"/>
<jsp:setProperty name="person" property="interests" param="interests"/>

(4)通过<jsp:useBean>标签实例化的JavaBean对象,如果在JSP页面中使用Java代码调用JavaBean对象中的属性或方法,所使用的JavaBean对象的名称为<jsp:useBean>标签中的id属性,例如上述代码中的:

<jsp:useBean id="person" class="com.pjb.bean.Person" />
<jsp:useBean id="convert" class="com.pjb.bean.Convert" />

<%= convert.arrToStr(person.getInterests()) %>

 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值