JSP與JavaBeans

  JavaBeans簡介

  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爲何要使用javaBeans呢?

  由於JSP是一種java代碼與html混合的語言,這樣機會致使頁面的表現層與行爲層混合在一塊兒,不利於後期的維護和調試。

  因此最開始的時候,JSP開發就是使用一大堆的JSP頁面,互相跳轉,很混亂,因而就有了一種新的解決方法:

  Model1:模型1,它的架構以下:

  能夠看到用戶是對JSP進行訪問,可是JSP經過調用Javabean間接與數據庫交互,分離頁面表與邏輯層。

  這樣就能達到一種解耦的效果。

  使用Model1模型,開發登陸界面

  業務場景跟前面同樣,用戶登陸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>
View Code

  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>
View Code

  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>
View Code
相關文章
相關標籤/搜索