1.介绍
JavaBean 是一种特殊的 Java 类,以封装和重用为目的,在类的设计上遵从一定的规范,以供其它组件根据这种规范来调用。
JavaBean 最大的优势在于重用,同时它又具有以下特性:
JavaBean 可分为两种:一种是有用户界面(UI,User Interface)的JavaBean,例如一些 GUI 组件(按钮、文本框、报表组件等);另一种是没有用户界面、主要负责封装数据、业务处理的 JavaBean。JSP通常访问的是后一种 JavaBean。
JSP 与 JavaBean 搭配使用,具有以下优势:
JavaBean 的这些优势,使系统具有了更好的健壮性和灵活性,使得JSP+JavaBean 和 JSP+Servlet+JavaBean 的组合设计模式成为目前开发Java Web应用的主流模式。
2.JavaBean规范
一个标准的 JavaBean 需要遵从以下规范:
JavaBean 中的 setXxx() 方法和 getXxx() 方法也被称为 setter 方法和getter 方法,是针对 JavaBean 方法的一种命名方式。方法的名称由字符 “ set+ 属性名 ” 和 “ get+ 属性名 ” 构成, “ 属性名 ” 是将 JavaBean的属性名称首字母大写后得来。 JavaBean 通过这种方法的命名规范,以及对类的访问权限和构造函数的要求,使得外部程序能够通过反射机制来实例化 JavaBean 和查找到这些方法,从而调用这些方法来设置和获取 JavaBean 对象的属性。
3.JavaBean的属性
在 JavaBean 中,对于属性的定义也不同于普通类中的属性定义。JavaBean 的属性是指 setter 和 getter 方法名中所包含的属性名,即使在 JavaBean 类中没有定义此名称的实例变量,也可称为 JavaBean 的属性。这种定义方式扩展了属性的定义,融入了对 JavaBean 所封装的业务功能状态的表示。
4.JavaBean的属性
JSP提供的访问 JavaBean 的3个动作元素:
: 创建或查找 JavaBean实例对象;
: 设置 JavaBean对象的属性值;
:获取 JavaBean 对象的属性值。(1)
元素用于在某个指定的作用域范围内查找一个指定名称的JavaBean 对象,如果存在则直接返回该 JavaBean 对象的引用,如果不存在则实例化一个新的 JavaBean 对象,并将它按指定的名称存储在指定的作用域范围内。
元素的语法格式:
<jsp:useBean id="beanInstanceName" class="package.class"
scope="page|request|session|application"/>
(2)
元素用于设置 JavaBean 对象的属性,相当于调用 JavaBean 对象的 setter 方法。
语法:
< jsp:setProperty name="beanInstanceName"
property="propertyName" value=" propertyValue"|
property="propertyName" param=" parameterName"|
property="propertyName"|
property="*"
/>
标签中的id属性值相同;(3)
元素用于读取 JavaBean 对象的属性,等同于调用JavaBean 对象的 getter 方法,然后将读取的属性值转换成字符串后输出到响应正文中 。
语法:
< jsp:getProperty name="beanInstanceName" property="propertyName"/>
标签的id 属性值相同;5.JavaBean 应用—处理Form表单
演示:
创建product.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
"UTF-8">
Insert title here
<jsp:useBean id="product" class="com.bean.ProductBean" />
创建ProductBean.java
package com.bean;
public class ProductBean {
private String pName;
private int num;
public String getpName() {
return pName;
}
public void setpName(String pName) {
this.pName = pName;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
创建UserBean.java
package com.bean;
public class UserBean {
private String username;
private String password;
private char sex;
private String tooltip;
private String answer;
private String email;
private String[] message;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public String getTooltip() {
return tooltip;
}
public void setTooltip(String tooltip) {
this.tooltip = tooltip;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String[] getMessage() {
return message;
}
public void setMessage(String[] message) {
this.message = message;
}
public String getMessageChoose() {
String messageChoose = "";
if (message != null) {
for (String mess : message) {
messageChoose += mess + ";";
}
}
return messageChoose;
}
}
创建registerStep1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
"UTF-8">
Insert title here
"center">第一步
创建registerStep2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
"UTF-8">
Insert title here
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="user" class="com.bean.UserBean" scope="session">
<jsp:setProperty property="username" name="user" />
<jsp:setProperty property="password" name="user" />
jsp:useBean>
"center">第二步
创建registerConfirm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
"UTF-8">
Insert title here
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="user" class="com.bean.UserBean" scope="session" />
<jsp:setProperty property="*" name="user" />
"center">确认信息
、
和
。其中,
用于查找或创建 JavaBean 实例对象;
用于设置 JavaBean对象的属性值;
用于获取 JavaBean 对象的属性值。