一、什么是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()方法。
[java] view plaincopy
- 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:
[java] view plaincopy
- package javabean;
- public class Counter {
- intcount=0; //记录请求次数
- publicCounter(){} //无参构造方法
- publicint getCount() {
- count++;
- returncount;
- }
- publicvoid setCount(int count) {
- this.count= count;
- }
- }
counter.jsp:
[java] view plaincopy
- <%@ 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:
[java] view plaincopy
- 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:
[java] view plaincopy
- <%@ 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:
[java] view plaincopy
- <%@ 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>