JavaBeans是一種符合必定標準的普通java類,須要知足下面幾點:html
1 類是publicjava
2 屬性私有數據庫
3 空的public構造方法服務器
4 經過getter setter操做屬性session
JSP有不少的標籤,比較經常使用的就是與javaBean相關的標籤:架構
<jsp:useBean>設置javaBeanapp
<jsp:setProperty> 設置javabean中屬性值jsp
<jsp:getProperty> 獲取javaBean屬性值ide
設置javaBean 要知足下面的語法:post
<jsp:useBean id="user" class="com.po.Users" scope="page"></jsp:useBean>
其中id是該類的標識,至關於咱們建立的對象名稱;
class是類的全名,包括類的包名;
scope是該javabean的使用範圍,包括下面四中:
page:僅應用於當前頁面
request:能夠在reqest之間使用,好比經過轉發連帶傳送request對象,也能夠獲得該屬性。
session:能夠再一個會話期間使用
application:在整個服務器啓動期間均可以使用
設置屬性值 可使用下面四種方式:
<jsp:setProperty name="JavaBean name" property="*" />
<jsp:setProperty name="JavaBean name" property="JavaBean屬性名稱" />
<jsp:setProperty name="JavaBean name" property="JavaBean屬性名" value="BeanValue" />手工設置 <jsp:setProperty name="JavaBean name" property="peroperty name" param="request對象中參數名" />
樣例以下:
<!-- 根據表單匹配全部的屬性--> <jsp:setProperty property="*" name="user"/> <!-- 根據表單匹配部分的屬性 --> <jsp:setProperty property="username" name="user"/> <!-- 與表單無關,手動設置 --> <jsp:setProperty property="username" name="user" value="張三"/> <!-- 經過URL傳參 --> <jsp:setProperty name="user" property="username" param="myname"/> <jsp:setProperty name="user" property="password"/> <!-- 使用傳統表達式方式 --> 用戶名:<%=user.getUsername() %><br> 密碼:<%=user.getPassword() %><br> <!-- 使用getProperty標籤方式 --> 用戶名:<jsp:getProperty property="username" name="user"/><br> 密碼:<jsp:getProperty property="password" name="user"/><br>
其中使用URL參數傳送參數的時候,須要再前面的url後面,添加參數,例如:
<form name="loginForm" action="doLogin.jsp?myname=444" method="post">
有了JSP爲何要使用javaBeans呢?
由於JSP是一種java代碼與html混合的語言,這樣機會致使頁面的表現層與行爲層混合在一塊兒,不利於後期的維護和調試。
因此最開始的時候,JSP開發就是使用一大堆的JSP頁面,互相跳轉,很混亂,因而就有了一種新的解決方法:
Model1:模型1,它的架構以下:
能夠看到用戶是對JSP進行訪問,可是JSP經過調用Javabean間接與數據庫交互,分離頁面表與邏輯層。
這樣就能達到一種解耦的效果。
業務場景跟前面同樣,用戶登陸login.jsp,成功後跳轉到login_success.jsp,並提示登陸用戶名;失敗後,跳轉到login_failure.jsp頁面,並提示登陸跳轉到登陸界面。
只不過在跳轉邏輯處理界面dologin.jsp中,不在直接進行邏輯處理,而是調用javaBean進行邏輯判斷。
dologin.jsp代碼以下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="com.po.Users" %> <%@ page import="com.dao.UsersDao" %> <jsp:useBean id="user" class="com.po.Users" scope="page"></jsp:useBean> <jsp:useBean id="userdao" class="com.dao.UsersDao" scope="page"></jsp:useBean> <jsp:setProperty name="user" property="*"/> <!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> <h1>javaBeans</h1> <hr> <% request.setCharacterEncoding("utf-8"); if(userdao.isUser(user)){ session.setAttribute("username",user.getUsername()); request.getRequestDispatcher("login_success.jsp").forward(request,response); }else{ response.sendRedirect("login_failure.jsp"); } %> </body> </html>
Users.java代碼以下:
package com.po; public class Users { private String username; private String password; public Users(){ } 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; } }
UsersDao.java代碼以下
package com.dao; import com.po.Users; public class UsersDao { public boolean isUser(Users u){ if("xingoo".equals(u.getUsername()) && "123".equals(u.getPassword())){ return true; }else{ return false; } } }
其餘的代碼,login.jsp
<%@ 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>
<h1>用戶登陸</h1>
<hr>
<!--<form name="loginForm" action="doLogin.jsp?myname=444" method="post"> -->
<form name="loginForm" action="doLogin.jsp" method="post">
<table>
<tr>
<td>username</td>
<td><input type="text" name="username" value=""/></td>
</tr>
<tr>
<td>password</td>
<td><input type="password" name="password" value=""/></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="submit"/></td>
</tr>
</table>
</form>
</body>
</html>
login_success.jsp
<%@ 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> <h1>用戶登陸</h1> <hr> 歡迎您!<%=session.getAttribute("username") %> </body> </html>
login_failure.jsp
<%@ 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> <h1>用戶登陸</h1> <hr> 登陸失敗!<a href="login.jsp">返回登陸</a> </body> </html>