正文

都市供求信息網(wǎng)(21)

JSP項目開發(fā)案例全程實錄(第2版) 作者:明日科技


(9)運行測試。單擊Eclipse菜單欄中的按鈕,在彈出的菜單中選擇“運行方式/JUnit測試”命令運行測試,若顯示圖1.43所示的運行結(jié)果,則說明Count類中的encrypt()方法正確;否則,說明encrypt()方法中存在錯誤或方法實現(xiàn)的功能與預(yù)設(shè)計的不同。 1.9 后臺登錄設(shè)計

1.9.1 后臺登錄功能概述

用戶可通過單擊前臺頁面頂部的“進入后臺”超鏈接,進入后臺登錄頁面,如圖1.48所示。

為了防止任意用戶進入后臺,進行非法操作,所以需要設(shè)置登錄功能。當(dāng)用戶沒有輸入用戶名和密碼,或輸入了錯誤的用戶名和密碼進行登錄時,會返回登錄頁面顯示相應(yīng)的提示信息,如圖1.49所示。

后臺登錄模塊的操作流程如圖1.50所示。

在實現(xiàn)登錄功能時,對于已經(jīng)登錄的用戶,當(dāng)再次單擊前臺頁面頂部的“進入后臺”超鏈接時,應(yīng)直接進入后臺主頁,而不是再次顯示如圖1.48所示的登錄頁面要求用戶登錄,該功能的具體實現(xiàn)過程,將在1.9.3節(jié)中進行介紹。

1.9.2 后臺登錄技術(shù)分析

在后臺登錄模塊中,對于已登錄的用戶要跳過登錄頁面,直接進入后臺主頁。實現(xiàn)該功能的主要技術(shù)就是:在當(dāng)前用戶登錄成功后,向session中注冊一個屬性,并為該屬性賦值,當(dāng)用戶再次單擊“進入后臺”超鏈接時,先在程序中獲取存儲在session中該屬性的值,然后通過判斷其值來得知當(dāng)前用戶是否已經(jīng)登錄,從而決定將請求轉(zhuǎn)發(fā)到登錄頁面還是后臺首頁。

1.9.3 后臺登錄的實現(xiàn)過程

后臺登錄用到的數(shù)據(jù)表:tb_user。

根據(jù)技術(shù)分析,用戶單擊頁面頂部的“進入后臺”超鏈接請求登錄時,會先判斷用戶是否已經(jīng)登錄。若沒有登錄,則進入登錄頁面,在該頁面中填寫用戶名和密碼后,提交表單,在Action處理類中獲取表單數(shù)據(jù)進行驗證,驗證成功后查詢數(shù)據(jù)表,查詢是否存在用戶輸入的用戶名和密碼,若存在,則登錄成功,進入網(wǎng)站后臺。如果用戶已經(jīng)登錄,則直接進入后臺。下面按照這個流程,介紹后臺登錄的實現(xiàn)過程。

1.實現(xiàn)“進入后臺”超鏈接

在view目錄下的top.jsp文件中實現(xiàn)進入后臺的超鏈接。代碼如下:

例程45 代碼位置:光盤\TM\01\view\top.jsp

<a href="log_isLogin.action">[進入后臺]</a>

上述代碼實現(xiàn)的超鏈接所請求的路徑為log_isLogin.action,觸發(fā)該超鏈接產(chǎn)生的請求將由LogInOutAction類中的isLogin()方法處理,isLogin()方法用來判斷用戶是否已經(jīng)登錄。

2.設(shè)計登錄頁面Login.jsp

在登錄頁面中,應(yīng)包含一個表單,并提供“用戶名”和“密碼”兩個表單字段以便用戶輸入數(shù)據(jù)。Login.jsp頁面的關(guān)鍵代碼如下:

例程46 代碼位置:光盤\TM\01\pages\admin\Login.jsp

<%@ taglib prefix="s2" uri="/struts-tags" %>

<s2:form action="log_Login.action" theme="simple">

<tr><td colspan="2"><s2:fielderror/></td></tr> <!-- 輸出提示信息 -->

<tr>

<td>用戶名: </td>

<td><s2:textfield name="user.userName" size="30"/></td>

</tr>

<tr>

<td>密 碼: </td>

<td><s2:password name="user.userPassword" size="30"/></td>

</tr>

</s2:form>

3.創(chuàng)建封裝登錄表單數(shù)據(jù)的JavaBean

該JavaBean用來保存輸入的用戶名和密碼。代碼如下:

例程47 代碼位置:光盤\TM\01\src\com\yxq\model\UserSingle.java

package com.yxq.model;

public class UserSingle{

private String userName; //對應(yīng)表單中的“用戶名”字段

private String userPassword; //對應(yīng)表單中的“密碼”字段

……//省略了屬性的setXXX()與getXXX()方法

}

4.創(chuàng)建LogInOutAction類

LogInOutAction類用來處理用戶登錄和退出登錄請求。代碼如下:

例程48 代碼位置:光盤\TM\01\src\com\yxq\action\LogInOutAction.java

package com.yxq.action;

import com.yxq.actionSuper.MySuperAction;

import com.yxq.dao.OpDB;

import com.yxq.model.UserSingle;

public class LogInOutAction extends MySuperAction {

protected UserSingle user; //封裝表單數(shù)據(jù)的JavaBean

public UserSingle getUser() {

return user;

}

public void setUser(UserSingle user) {

this.user = user;

}

……//此處為判斷當(dāng)前用戶是否登錄的isLogin()方法

……//此處為驗證用戶身份的Login()方法

……//此處為處理退出登錄的Logout()方法

……//此處為表單驗證方法validateLogin()

}

當(dāng)用戶觸發(fā)“進入后臺”超鏈接后,請求由LogInOutAction類中的isLogin()方法驗證用戶是否已經(jīng)登錄。isLogin()方法的代碼如下:

例程49 代碼位置:光盤\TM\01\src\com\yxq\action\LogInOutAction.java

/* 功能:判斷當(dāng)前用戶是否登錄 */

public String isLogin(){

Object ob=session.get("loginUser");

if(ob==null||!(ob instanceof UserSingle)) //如果對象為空,或者不是UserSingle類的實例,表示沒有登錄

return INPUT; //返回登錄頁面

else //已經(jīng)登錄

return LOGIN; //進入后臺

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號