JSP与JavaBean
-
JavaBean概述
-
JavaBean简介
-
Java是一种特殊的java类,在类的设计上遵循一定的滚翻,以供其他的组件来调用。JavaBean易于维护、封装了复杂的业务逻辑、具有可移植性、可用于本地传输和网络传输。
JavaBean分为两种,一种是基于用户界面的,另一种就是没有界面的,主要是封装了数据、业务处理。
Jsp使用javaBean可以使HTML代码和java代码分离,让开发人员分工协作。使jsp更加注重生成动态页面,事物处理由javaBean来处理。
1.2)规范
一个标准的javaBean遵循以下规范:
- 它是一个公共类,以便外部程序访问
- 具有一个无参数的构造方法,便于外部程序实例化的时候调用
- 提供get,set方法便于外部程序设置属性
凡是符合上面规范的类 都叫JavaBean
- 在JSP中使用JavaBean
JSP中可以像使用普通类一样访问JavaBean,例如,通过java脚本实例化javaBean、调用javaBean对象的方法等。为了能在jsp中更好的集成javaBean,java提供了3个动作元素,分别是<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>这三个元素分别用于创建查找javaBean实例对象、设置JavaBean对象的属性值和获取JavaBean对象的属性值。
2.1)<jsp:useBean>元素
该元素用于在某个作用域范围内查找一个指定名称的JavaBean对象,如果存在就直接返回他的引用,如果不存在则实例化一个新的javaBean对象,并将它指定的名称储存到指定的作用域范围内。
语法:
<jsp:useBean id=”beanInstanceName”
class=”package.class” scope=”page|request|session|application”/>
元素的使用:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="com.qst.chapter07.javabean.ProductBean"%>
<!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>
<jsp:useBean id="product"
class="com.qst.chapter07.javabean.ProductBean" scope="page" />
</body>
</html>
元素会在scope指定的范围中查找id指定的javaBean对象,如果该域范围不存在此对象,则根据class属性指定的类名新建一个此属性的对象,并将此属性对象一id属性指定的名称储存到scope属性指定的域范围。
2.2)<jsp:setProperty>元素
该元素用于设置javaBean的属性,相当于调用JavaBean对象的setter方法。
语法:
<jsp:setProperty name=”beanInstanceName”
property=”propertyName” value=”propertyValue”|
property=”propertyName” value=”parameterName”|
property=”propertyName” |
Property=”*”
/>
name属性指javaBean对象的名称
Property指对应javaBean对象的属性名
Value表示需要设置的值
Param属性将一个请求参数的值赋值给javaBean对象的某个属性,它可以将请求参数的字符串类型的返回值转化为javaBean属性所对应的类型该属性可选,value和param属性不能同时使用。
2.3)<jsp:getProperty>
该元素用于读取JavaBean属性的值。将读取的属性值转换为字符串后输出到响应正文中。
语法:
<jsp:getProperty name=”product” property=”totalPrice”/>
- JavaBean应用
若要对form表单进行处理,首先需要request对象getParameter()或者getParameterValues()方法获取请求数据进行业务处理,整个过程需要大量且冗长的代码。并且和业务处理代码相混淆。所以使用javaBean的到了很大的简化。
下面演示注册信息的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="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>注册第一步</title>
</head>
<body>
<h2 align="center">用户注册第一步</h2>
<form action="registerStep2.jsp" method="post">
<table border="1" width="50%" align="center">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="下一步"></td>
</tr>
</table>
</form>
</body>
</html>
****************************************
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="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>注册第二步</title>
</head>
<body>
<%
// 设置请求编码方式,防止中文乱码问题
request.setCharacterEncoding("UTF-8");
%>
<!-- 实例化JavaBean,使用请求参数为对象属性赋值 -->
<jsp:useBean id="user" class="com.qst.chapter07.javabean.UserBean"
scope="session">
<jsp:setProperty property="username" name="user" />
<jsp:setProperty property="password" name="user" />
</jsp:useBean>
<h2 align="center">用户注册第二步</h2>
<form action="registerConfirm.jsp" method="post">
<table border="1" width="50%" align="center">
<tr>
<td>性别:</td>
<td><input type="radio" name="sex" checked="checked" value="男">男
<input type="radio" name="sex" value="女">女</td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td>提示信息:</td>
<td><select name="tooltip"><option value="我妈妈的名字">我妈妈的名字</option>
<option value="我班主任的名字">我班主任的名字</option></select></td>
</tr>
<tr>
<td>提示答案:</td>
<td><input type="text" name="answer"></td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>愿意接受信息:</td>
<td><input type="checkbox" name="message" value="新闻">新闻
<input type="checkbox" name="message" value="产品广告">产品广告 <input
type="checkbox" name="message" value="招聘">招聘</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="完成"></td>
</tr>
</table>
</form>
</body>
</html>
***************************************
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="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>注册第一步</title>
</head>
<body>
<%
// 设置请求编码方式,防止中文乱码问题
request.setCharacterEncoding("UTF-8");
%>
<!-- 查找JavaBean对象,使用请求参数为对象属性赋值 -->
<jsp:useBean id="user" class="com.qst.chapter07.javabean.UserBean"
scope="session" />
<jsp:setProperty property="*" name="user" />
<h2 align="center">用户注册信息确认</h2>
<form action="registerSuccess.jsp" method="post">
<table border="1" width="50%" align="center">
<tr>
<td>用户名:</td>
<td><jsp:getProperty property="username" name="user" /></td>
</tr>
<tr>
<td>密 码:</td>
<td><jsp:getProperty property="password" name="user" /></td>
</tr>
<tr>
<td>性别:</td>
<td><jsp:getProperty property="sex" name="user" /></td>
</tr>
<tr>
<td>年龄:</td>
<td><jsp:getProperty property="age" name="user" /></td>
</tr>
<tr>
<td>提示信息:</td>
<td><jsp:getProperty property="tooltip" name="user" /></td>
</tr>
<tr>
<td>提示答案:</td>
<td><jsp:getProperty property="answer" name="user" /></td>
</tr>
<tr>
<td>邮箱:</td>
<td><jsp:getProperty property="email" name="user" /></td>
</tr>
<tr>
<td>愿意接受信息:</td>
<td><jsp:getProperty property="messageChoose" name="user" /></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"
value="确认提交"></td>
</tr>
</table>
</form>
</body>
</html>
***************************
4.小结
- JavaBean是特殊的java类,以封装和重用为目的,在类的设计上遵循一定的规则
- JavaBean遵循1:是一个公共类2:有无参的构造方法3:有get、set方法
- Jsp有三个动作元素来访问JavaBean<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
-------20180912周三下午 图书馆