一、 Java Bean 是什么?
Java Bean 其实就是一个符合特定规则的 Java Class。这些规则包括:
- 使用 public 声明的公用类
- 属性使用public 的get,set方法访问,也就是说设置成private,同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。
- 提供默认构造方法(无参数)
- 需要序列化。这个是框架,工具跨平台反映状态必须的
二、Java Bean 示例
下面这个类就是一个简单的附合Java Bean规则的类:
package com.po; /** 用户类 */
public class Users { public Users() {} private String user;
private String pwd; public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
} }
三、 Java Bean 的简单使用
假设我们有一个表单页面 login.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form id="loginForm" method="post" action="javabean_1.jsp">
用户名: <input type="text" name="user" value="" /><br><br>
密码: <input type="password" name="pwd" value="" /><br><br>
<input type="submit" value="提交" /><br><br>
</form>
</body>
</html>
运行效果如下:
我们填上用户名和密码,点击提交按钮,就会将数据发送到我们指定的 javabean_1.jsp 中。
在不使用 JavaBean的时候,我们可能会这样写:
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ page import="com.po.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JavaBeans Demo</title>
</head>
<body> <%
Users user = new Users();
user.setUser(request.getParameter("user"));
user.setPwd(request.getParameter("pwd"));
%>
<h1>使用普通方式创建JavaBean实例</h1><hr>
用户名:<%=user.getUser() %><br>
密码:<%=user.getPwd() %><br>
</body>
</html>
在上面的代码中,我们会自己去实例化一个Users类,然后通过request.getparameter去读取提交的数据。
现在,换成 Java Bean 的写法:
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JavaBeans Demo</title>
</head>
<body> <jsp:useBean id="mUsers" class="com.po.Users" scope="page" /> <!-- 根据表单自动匹配所有元素 -->
<jsp:setProperty name="mUsers" property="*" /> <!-- 根据表单自动匹配指定元素 -->
<%--
<jsp:setProperty name="mUsers" property="user" />
--%>
<!-- 和表单无关,自定义属性值 -->
<%--
<jsp:setProperty name="mUsers" property="user" value="admin" />
--%>
<!-- 通过URL传递的参数来赋值 -->
<%--
<jsp:setProperty name="mUsers" property="email" param="email" />
--%> <h1>使用UseBean动作创建JavaBean实例</h1><hr> <!-- 使用getProperty方式获取用户名密码 -->
用户名:<jsp:getProperty name="mUsers" property="user" /><br>
密码:<jsp:getProperty name="mUsers" property="pwd" /><br>
</body>
</html>
上面的代码写出了 setProperty 几种常用的用法。
显示的时候,可以使用 getProperty 动作获取数据。
JavaBean 还支持很多的功能,setProperty和getProperty是最常用的。
四、 Java Bean 的作用范围
以下内容来自百度知道:
JavaBean 的范围 Scope 是一个具有生命时间的变量。JavaBean的范围在<jsp:useBean scope=”….>标志中右边进行表示。将产生一个JavaBean的快捷参考。说明:jsp服务器引擎将剥离<jsp。。。。标记。并且在最终用户的浏览器上无法显示实际代码。存在下面四种范围: 页面page、 请求request、 对话session、 应用application。对话范围
对话范围的JavaBean 主要应用于跨多个页面和时间段: 例如填充 用户信息。 添加信息并且接受回馈,保存用户最.近执行页面的轨迹。对话范围JavaBean保留一些和用户对话 ID 相关的信息。这些信息来自临时的对话cookie,并在当用户关闭浏览器时,这个cookie将从客户端和服务器删除。请求范围
页面和请求范围的JavaBean有时类似表单的bean , 这是因为 他们大都用于处理表单。表单需要很长的时间来处理用户的输入,通常情况下用于页面接受HTTP/POST或者GET请求。另外页面和请求范围的bean可 以用于减少大型站点服务器上的负载,如果使用对话bean,耽搁的处理就可能会消耗掉很多资源。应用范围
在Bean中限制HTML的产生:理论上,JavaBean 将不会产生任何HTML,因为这是jsp层负责的工作;然而,为动态消息提供一些预先准备的格式是非常有用的。产生的HTML将被标注的 JavaBean方法返回。