采用JavaBean+JSP的模式,不仅可以实现表现层和业务逻辑层的分离,还可以提高JSP程序的运行效率和代码重用的程度,并且可以实现并行开发,是JSP编程中常用的技术。在JSP页面中使用JavaBean时,可以使用JSP脚本元素调用JavaBean,也可以使用JSP提供的3个标准动作元素来访问.
(1) <jsp:useBean>用于在网页中创建JavaBean实例
<jsp:useBean id="beanname" class="package.class"
[scope="page|request|session|application"] />
(2)<jsp:getProperty>用于读取JavaBean的属性值,实际调用的是JavaBean的getXxx()方法。
<jsp:getProperty name="name" property="propertyName" />
(3)<jsp:setProperty>用于为JavaBean的属性赋值
①<jsp:setProperty name="beanName" property="propertyName" value="propertyValue" />
②<jsp:setProperty name="beanName" property="propertyName" param="paramName" />
③<jsp:setProperty name="beanName" property="propertyName"/>
<jsp:setProperty name="beanName" property="propertyName" param="propertyName"/>④<jsp:setProperty name="beanName" property="*" />
【案例4-2】JSP中使用JavaBean
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page language="java" import="ch4.Person" %>
<html>
<head><title>JSP中使用JavaBean</title>
</head>
<body>
<jsp:useBean id="person" class="ch4.Person" scope="page"></jsp:useBean>
<jsp:setProperty name="person" property="name" value="lan"/>
<jsp:setProperty name="person" property="sex" value="男"/>
<jsp:setProperty name="person" property="age" value="18"/>
<h3>显示人的信息</h3>
<table border="1">
<tr><td>人名</td>
<td><jsp:getProperty name="person" property="name"/></td></tr>
<tr><td>性别</td>
<td><jsp:getProperty name="person" property="sex"/></td></tr>
<tr><td>年龄</td>
<td><jsp:getProperty name="person" property="age"/></td></tr>
</table>
</body>
</html>
效果图如下:

【案例4-3】使用JavaBean在JSP中显示时间
创建DataTimeBean的类,将其放置ch4的包中,可以实现时间、星期的封装。
ch4.DateTimeBean:
package ch4;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateTimeBean {
private String dateTime;
private String week;
//Calendar对象
private Calendar calendar=Calendar.getInstance();
/*
* 获取日期和时间
*
* */
public String getdateTime(){
//获取当前时间
Date currDate=Calendar.getInstance().getTime();
//实例化SimpleDateFormat
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
//格式化日期时间
dateTime=sdf.format(currDate);
return dateTime;
}
/*
* 获取星期几
*
* */
public String getweek(){
//定义数组
String[] weeks={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
//获取一星期的某天
int index=calendar.get(Calendar.DAY_OF_WEEK);
//获取星期几
week=weeks[index-1];
return week;
}
}
而4_2.jsp则实例化DateTimeBean对象。
4_2.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>电子时钟</title>
<style type="text/css">
#clock{
width:500px;
height:100px;
padding-top: 20px;
border:solid 5px black;
}
#week{
padding-top: 20px;
}
</style>
<meta http-equiv="Refresh" content="1">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<jsp:useBean id="date" class="ch4.DateTimeBean"></jsp:useBean>
<div id="clock">
<div id="time">
<jsp:getProperty property="dateTime" name="date"/>
</div>
<div id="week">
<jsp:getProperty property="week" name="date"/>
</div>
</div>
</body>
</html>
效果图如下,每隔1秒自动刷新一次:


