若用戶沒有登錄,則進入登錄頁面,在該頁面中輸入用戶名和密碼后提交表單進行登錄,請求將被提交到LogInOutAction類中的Login()方法進行身份驗證。Login()方法的代碼如下:
例程50 代碼位置:光盤\TM\01\src\com\yxq\action\LogInOutAction.java
/* 功能:查詢數(shù)據(jù)表,驗證是否存在該用戶 */
public String Login(){
String sql="select * from tb_user where user_name=? and user_password=?";
Object[] params={user.getUserName(),user.getUserPassword()}; //獲取輸入的用戶名和密碼,并保存
OpDB myOp=new OpDB();
if(myOp.LogOn(sql, params)){ //存在該用戶,登錄成功
session.put("loginUser",user); //保存當(dāng)前用戶到session中
return LOGIN; //進入后臺
}
else{ //用戶名或密碼錯誤
addFieldError("loginE",getText("city.login.wrong.input")); //保存提示信息
return INPUT; //返回登錄頁面
}
}
請求被提交給Login()方法之前,需要進行表單驗證,所以可實現(xiàn)validateLogin()方法來驗證表單,其實現(xiàn)代碼比較簡單,這里不再給出,具體代碼可查看本書附帶光盤。
5.配置cityinfo.xml文件
之所以能在觸發(fā)“進入后臺”超鏈接和提交登錄表單后,請求LogInOutAction類相應(yīng)的方法進行處理,是因為在cityinfo.xml文件中指定了它們之間的關(guān)系。配置代碼如下:
例程51 代碼位置:光盤\TM\01\WEB-INF\classes\cityinfo.xml
<!-- 管理員登錄/退出 -->
<action name="log_*" class="com.yxq.action.LogInOutAction" method="{1}">
<result name="input">/pages/admin/Login.jsp</result>
<result name="login">/pages/admin/view/AdminTemp.jsp</result>
<result name="logout" type="redirectAction">goindex</result>
</action>
1.10 后臺頁面設(shè)計
1.10.1 后臺頁面概述
本系統(tǒng)中的所有后臺頁面都采用同一個頁面框架,該頁面框架采用二分欄結(jié)構(gòu),分為4個區(qū)即頁頭、側(cè)欄、頁尾和內(nèi)容顯示區(qū),該頁面框架的總體結(jié)構(gòu)與前臺頁面框架的結(jié)構(gòu)相同。網(wǎng)站后臺首頁的運行效果如圖1.51所示。
1.10.2 后臺頁面的技術(shù)分析
本系統(tǒng)中,實現(xiàn)后臺頁面框架的JSP文件為AdminTemp.jsp,該頁面的布局如圖1.52所示。
本系統(tǒng)中,對后臺管理員所有請求的響應(yīng)都通過該框架頁面進行顯示。在AdminTemp.jsp文件中主要采用include動作和include指令來包含各區(qū)域所對應(yīng)的JSP文件。其實現(xiàn)技術(shù)與前臺頁面的實現(xiàn)技術(shù)是相同的,讀者可查看1.6.2節(jié)介紹的前臺頁面實現(xiàn)技術(shù)分析。
1.10.3 后臺頁面的實現(xiàn)過程
根據(jù)以上的頁面概述及技術(shù)分析,需要分別創(chuàng)建實現(xiàn)各區(qū)域的JSP文件,如實現(xiàn)頁頭的top.jsp、實現(xiàn)內(nèi)容顯示區(qū)的main.jsp、實現(xiàn)側(cè)欄的right.jsp、實現(xiàn)頁尾的end.jsp等。下面主要介紹框架頁面AdminTemp.jsp和main.jsp頁面的實現(xiàn)。
在AdminTemp.jsp頁面中應(yīng)用include指令和動作標(biāo)識來包含各區(qū)域?qū)?yīng)的JSP文件。代碼如下:
例程52 代碼位置:光盤\TM\01\pages\admin\view\AdminTemp.jsp
<table>
<tr><td colspan="2"><%@ include file="top.jsp"%></td></tr> <!-- 包含頁頭文件 -->
<tr><td colspan="2"></td></tr>
<tr>
<td><jsp:include page="main.jsp"/></td> <!-- 包含main.jsp文件 -->
<td><jsp:include page="right.jsp"/></td> <!-- 包含側(cè)欄文件 -->
</tr>
<tr><td colspan="2"></td></tr>
<tr><td colspan="2"><%@ include file="end.jsp" %></td></tr> <!-- 包含頁尾文件 -->
</table>
在main.jsp文件中實現(xiàn)了內(nèi)容顯示區(qū)中的背景圖片,并在該頁面中加載要顯示在內(nèi)容顯示區(qū)中的JSP文件。代碼如下:
例程53 代碼位置:光盤\TM\01\pages\admin\view\main.jsp
<%
String mainPage=(String)request.getAttribute("mainPage");
if(mainPage==null||mainPage.equals(""))
mainPage="default.jsp";
%>
<table>
<tr><td><img src="images/default_t.jpg"></td></tr>
<tr><td background="images/default_m.jpg" valign="top"><jsp:include page="<%=mainPage%>"/></td></tr>
<tr><td><img src="images/default_e.jpg"></td></tr>
</table>