一、什么是JavaBean
1)必须实现Serializable接口
2)没有public类型的类变量
3)具有无参数的构造器
4)具有public的getters和setters方法
二、如何在一个页面中设置一个JavaBean
<jsp:useBean id="?" class="?" scope="?"></jsp:useBean>
属性 | 功能 |
---|---|
id | 相当于一个引用类对象的一个变量名 |
class | 指明创建哪个类的对象 |
scope | 指明这个对象设置在哪个内置对象中(如果scope缺省则,默认为放在page中) |
第一步:定义一个类变量引用类对象
<jsp:useBean id="user" class="javabean.User" scope="session">
实际上是执行了下面的操作
javabean.User user = null;
synchronized(request){
user = (javabean.User) _jspx_page_context.getAttribute("user",PageContext.SESSIONSCOPE);
if(user == null){
user = new javabean.User();
_jspx_page_context.setAttribute("user",user,PageContext.SESSIONSCOPE);
}
}
从上面看,我们知道做了以下几件事
1)创建一个User 类型的变量
2)从属性范围中获取对象
3)如果在设置的属性范围中不存在,那么新创建一个对象
4)如果存在,则直接从内置对象中获取即可
我们上面相当于使用功User user = new User();
第二步:设置相应的属性
<jsp:setProperty name="?" property="?" value="?"></jsp:setProperty>
属性 | 功能 |
---|---|
name | 对应上面的id设置的变量名 |
property | 表示对象的其中一个属性 |
value | 表示要给这个属性设置相应的值 |
示例:向user对象中的username属性设置一个值为markliwei
<jsp:setProperty name="user" property="username" value="markliwei">
四、如何在一个页面中获取一个
<jsp:getProperty name="?" property="?"></jsp:getProperty>
属性 | 功能 |
---|---|
name | 对应上面的id设置的变量名 |
property | 表示对象的其中一个属性 |
示例:从user对象中获取username属性的值
<jsp:getProperty name="user" property="username"></jsp:getProperty>
五、实验
login.jsp 登录界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<form action="/check.jsp" method="post">
Name:<br>
<input type="text" name="username"/><br>
Password:<br>
<input type="password" name="password"><br>
<input type="submit" name="submit"/>
</form>
</body>
</html>
check.jsp 登录检查界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="javabean.User" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%--定义一个Use对象,变量名为user,设置属性值为username = markliwei和password = mark--%>
<jsp:useBean id="user" class="javabean.User">
<jsp:setProperty name="user" property="username" value="markliwei"></jsp:setProperty>
<jsp:setProperty name="user" property="password" value="mark"></jsp:setProperty>
</jsp:useBean>
<%-- 与上面的代码功能是一样的
User user = new User("markliwei","mark");
pageContext.setAttribute("user",user,pageContext.PAGE_SCOPE);
--%>
<html>
<head>
<title>Check Page</title>
</head>
<body>
<c:choose>
<c:when test="${pageScope.user.username==param.username && pageScope.user.password==param.password}">
<c:set var="user" value="${user}" scope="session"></c:set>
<jsp:forward page="success.jsp"></jsp:forward>
</c:when>
<c:otherwise>
<c:redirect url="login.jsp"></c:redirect>
</c:otherwise>
</c:choose>
</body>
</html>
登录成功界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--从session中获取user对象--%>
<jsp:useBean id="user" class="javabean.User" scope="session"/>
<html>
<head>
<title>Success Page</title>
</head>
<body>
<h1>Welcome to TaoTao.mall!</h1>
<jsp:getProperty name="user" property="username"></jsp:getProperty>
<%--${user.username}--%>
</body>
</html>