JavaBean简介
一、什么是JavaBean?
JavaBean是用Java语言描述的软件组件模型,类似于Microsoft中的COM组件的概念。
对于编程人员来说,使用JavaBean可以实现代码的重复利用,因此极大简化了程序的设计过程。在JSP中JavaBean分为两种:可视化的JavaBean和非可视化的JavaBean。
随着JSP的产生和发展,JavaBean也从传统的可视化领域中的应用更多地应用到非可视化领域,且在服务器端的应用中表现出了非常明显的优势。非可视化JavaBean指的是没有GUI界面的JavaBean,在实际开发中常用来封装业务逻辑和进行数据库的相关操作,如连接数据库、数据处理等。使用非可视化的JavaBean更好地实现了业务逻辑和表现层之间的分离,降低了它们之间的耦合度。
在JSP中只使用非可视化的JavaBean。
二、定义JavaBean
JavaBean是一种特殊的Java类:
1、JavaBean是一个public类,即JavaBean的类访问权限必须是public;
2、JavaBean应该包含一个无参的构造方法;
3、JavaBean中属性的获取和设置需要使用标准格式定义的getXxx()方法和setXxx()方法。对于boolean类型成员变量,可以使用isXxx()方法。
package javabean;
public class MyJavaBean {
private String name;
private String school;
public MyJavaBean(){} //不写也行,编译器会自动给你创建一个
public String getName() {
return name;
}
public void setName(Stringname) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(Stringschool) {
this.school = school;
}
}
三、设置JavaBean的属性
在JSP中可以调用JavaBean,JSP中提供了3个标准的动作指令:<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>。
<jsp:setProperty>是用来设置和修改Bean中的属性值。
1、<jsp:setPropertyname="myBean"property="*" />
property="*" 表示从request对象中将所有与JavaBean属性名字相同的请求参数传递给相应的setter方法。myBean是JavaBean实例名。
2、<jsp:setPropertyname="myBean"property="id" />
该形式表示将request对象中的一个参数值来设置JavaBean实例中的一个属性值。id为Bean中的属性名,该属性名应该与request请求参数的名字保持相同。
3、<jsp:setPropertyname="myBean"property="id" param="str"/>
该形式表示将request对象中的参数str传入到JavaBean实例myBean的属性id中。其中param指定使用哪个请求参数来作为Bean属性的值。要说明的是,此时param指定的Bean属性和request参数的名字可以不相同。
4、<jsp:setPropertyname="myBean"property="id" value="Baolibin"/>
该形式表示想JavaBean实例myBean的属性id中传入指定的值。其中value用来指定传入Bean中属性的值。
注意:param属性表示页面请求中的参数的名称,value属性则表示赋给Bean属性property的具体值。在<jsp:setProperty>中不能同时使用param属性和value属性。
四、JavaBean存在范围
JSP中有四种属性范围,分别是page、request、session、application。
在JavaBean中也可以设置其存在范围,它的意义与属性的存储范围相同。
五、JavaBean例子
例一:实现一个简单的计数功能,每次请求都是计数器增1。
Counter.java:
package javabean;
public class Counter {
intcount=0; //记录请求次数
publicCounter(){} //无参构造方法
publicint getCount() {
count++;
returncount;
}
publicvoid setCount(int count) {
this.count= count;
}
}
counter.jsp:
<%@ page language="java"contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>counter 技术JSP页面</title>
</head>
<body>
<jsp:useBean id="countbean"scope="application" class="javabean.Counter" />
<jsp:getProperty name="countbean"property="count" />
</body>
</html>
例二:使用JavaBean来实现用户登陆功能。
User.java:
package javabean;
public class User{
private String username;
private String password;
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;
}
}
login.jsp:
<%@ page language="java"contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>counter 技术JSP页面</title>
</head>
<body>
<form action="javabeandemo.jsp" method="post">
用户名:
<input type="text" name="username">
<br><br>
密 码:
<input type="password" name="password">
<br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
javabeandemo.jsp:
<%@ page language="java"contentType="text/html; charset=gb2312" %>
<html>
<head>
<title>counter 技术JSP页面</title>
</head>
<body>
<%
request.setCharacterEncoding("gb2312");
%>
<jsp:useBean id="userbean" scope="page"class="javabean.User"/>
<jsp:setProperty name="userbean" property="username"param="username" />
<jsp:setProperty name="userbean" property="password"param="password" />
用户名:
<jsp:getProperty name="userbean" property="username"/>
<br><br>
密 码:
<jsp:getProperty name="userbean" property="password"/>
<br><br>
<!--
也可以这样输出
<%
out.println("用户名为:"+userbean.getUsername()+"<br>");
%>
-->
</body>
</html>