一、 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方法返回。