在JSP网页开发的初级阶段,并没有所谓的框架和逻辑分层的概念,JSP网页代码是与业务逻辑代码结合在一起的。这些零乱的代码书写方式,给程序的调试及维护带来了很大的困难,直至Java Bean的出现,这一问题才得到了些许改善。
1、JavaBean简介
JavaBean是用于封装某种业务逻辑或对象的Java类,即它是一个可重用的Java软件组件模型。
JavaBean的功能是没有任何限制的,对于任何可以使用java代码实现的部分,都可以使用JavaBean进行封装,如创建一个实体对象,数据库操作、字符串处理等。
在JSP页面中,可以通过JSP提供的动作标签来操作JavaBean对象,包括:`<jsp:useBean>`、`<jsp:setProperty>`、`<jsp:getProperty>`3个标签,在使用过程中无需引入任何第三方的类库。
2、<jsp:useBean>
<jsp:useBean>
标签用于在JSP页面中创建一个JavaBean实例,并通过属性的设置将词实例存放到指定的范围内。
语法格式如下:
<jsp:useBean id = "变量名" scope = "page|request|session|application" { class = "完整类名"| type = "数据类型" | class = "完整类名" type = "数据类型" | beanName = "完整类名" type = "数据类型"} />
其中 id 属性:用于定义一个变量名(可以理解为JavaBean的一个代号),程序中通过此变量名对JavaBean进行引用。
scope 属性:设置Javabean的作用域,有page request session 与 application四种。
type 属性:指定id属性所定义的变量类型。
beanName属性:指定JavaBean的完整类名,此属性不能与class属性同时存在。
下面通过一个简单的实例进行演示:
package com.zch.javabean;
/**
*
* @author zch
*
* 创建一个Bean 的类,它是一个JavaBean 对象,类中有一个name属性及相应的getter和setter方法
*
*/
public class Bean {
private String name ;
public String getName() {
return name + "的JavaBean程序";
}
public void setName(String name) {
this.name = name;
}
}
(2)创建一个JavaBean之后,在index.jsp页面中通过标签实例化此对象,并调用此对象的方法。关键代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="bean" class="com.zch.javabean.Bean"></jsp:useBean>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JavaBean主页</title>
</head>
<body>
<%
bean.setName("ZCH");
%>
<h1 align="center"><%=bean.getName() %></h1>
</body>
</html>
页面输出结果如图所示:
3、<jsp:setProperty>
<jsp:setProperty>
用于对JavaBean中的属性进行赋值,但JavaBean的属性要提供相应的setter方法。
其语法格式如下:
<jsp:setProperty name="实例名" { property = "" | property = "属性名" | property = "属性名" value = "值" }/>
下面同样举一实例:
package com.zch.javabean;
/**
*
* @author Administrator
*
*创建一个Student类,封装了一个学生实体对象。
*/
public class Student {
private int id ;
private int age;
private String classes ;
//省略get与set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}
(2)创建一个form表单,并将它放在index.jsp页面中
<html>
<head>
<title>学生信息</title>
<style type="text/css">
*{font-size: 12px;}
</style>
</head>
<body>
<div align="center">
<form action="Student.jsp" method="post">
<p>学 号:<input type="text" name="id"></p>
<p>年 龄:<input type="text" name="age"></p>
<p>
<input type="submit" value="提 交">
<input type="reset" value="重 置">
</p>
</form>
</div>
</body>
</html>
(3)创建student.jsp页面,用于实例化Student对象,并输出相应的属性值
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>学生信息</title>
<style type="text/css">
*{font-size: 15px;}
</style>
</head>
<body>
<jsp:useBean id="student" class="com.zch.javabean.Student"></jsp:useBean>
<jsp:setProperty property="*" name="student"/>
<div align="center">
<p>学号:<%=student.getId()%></p>
<p>年龄:<%=student.getAge()%></p>
</div>
</body>
</html>