正文

都市供求信息網(18)

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


然后,創(chuàng)建處理類LoginAction。代碼如下:

package com.action;

import com.model.User;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private User user;

private String message;

public User getUser() {

return user;

}

public void setUser(User user) {

this.user = user;

}

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

public String execute() {

if(user.getUserName().equals("tsoft")&&user.getUserPass().equals("111")) {

message="登錄成功!";

return "yes";

}else{

message="登錄失??!";

return "no";

}

}

}

其次,修改login.jsp頁面。代碼如下:

<tr>

<td>用戶名:</td>

<td><s:textfield name="user.userName"/></td>

</tr>

<tr>

<td>密  碼:</td>

<td><s:password name="user.userPass"/></td>

</tr>

Struts配置文件不需要修改,接下來修改welcome.jsp文件。

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

<font size="3"><b><s:property value="message"/></b></font>

<table border="0">

<tr>

<td>

用戶名:<b><s:property value="user.userName"/></b>--

密  碼:<b><s:property value="user.userPass"/></b>

</td>

</tr>

</table>

最后,分別在“用戶名”和“密碼”文本框中輸入“tsoft”和“111”,運行結果如圖1.41所示。

2.Struts 2.0中的表單驗證

在Struts 2.0中可使用校驗框架和Action類中的驗證方法來對表單數據進行驗證,本系統采用的是第二種方法。

Action類中的驗證方法的命名規(guī)則為validateXXX(),其中XXX表示Action類中用來處理請求的某個方法名稱。當請求被轉發(fā)給Action類時,該Action會根據用戶請求來調用相應的方法處理請求,若在這之前需要進行表單數據驗證,則可實施與該方法對應的validateXXX()驗證方法進行驗證。

例如,本系統中用來處理前臺操作的Action類中的Add()方法用來處理信息發(fā)布的請求,在Add()方法中需要編寫向數據表中插入記錄的代碼,所以在這之前需要驗證用戶輸入的表單數據是否為空,可在Action類中實現validateAdd()方法進行驗證,驗證成功后,會自動調用Add()方法。

validateXXX()驗證方法不需要返回值,在方法中可將提示信息通過addFieldError()方法進行保存,這樣,返回驗證失敗的提示頁面后,就可通過fielderror標簽輸出提示信息。

Struts 2.0將根據是否調用了addFieldError()方法判斷驗證是否成功,若validateXXX()方法的程序流程執(zhí)行了addFieldError()方法,則驗證失敗,那么在validateXXX()方法的流程結束后,將返回到配置文件中指定的JSP頁面。

例如,本系統在配置文件中對登錄操作進行的配置如下:

<action name="login_*" class="com.yxq.action.AdminAction" method="{1}">

<result name="input">/pages/admin/Login.jsp</result>

<result name="login">/pages/admin/view/AdminTemp.jsp</result>

<result name="logout" type="redirectAction">index</result>

</action>

其中加粗的代碼就是對表單驗證失敗時的配置,此時<result>元素的name屬性值必須為input,/pages/admin/ogin.jsp則表示驗證失敗后返回的頁面。

3.解決Struts 2.0中的中文亂碼問題

在Struts 2.0中解決中文亂碼問題,可通過一種簡單的方法給予實現。在應用的WEB-INF/classes目錄下創(chuàng)建一個struts.properties資源文件,Struts 2.0會默認加載WEB-INF/classes目錄下的該文件,在該文件中進行如下編碼:

struts.i18n.encoding=gb2312

其中struts.i18n.encoding指定了Web應用默認的編碼。

1.8.3 信息發(fā)布實現過程

信息發(fā)布用到的數據表:tb_info。

用戶通過單擊頁面頂部的“發(fā)布信息”超鏈接,即進入信息發(fā)布頁面,在該頁面中填寫發(fā)布信息后,提交表單,在InfoAction處理類中獲取表單數據進行驗證,驗證成功后向數據表中插入數據,完成信息的發(fā)布。下面按照這個操作流程,介紹信息發(fā)布的實現過程。

1.實現頁面頂部的“發(fā)布信息”超鏈接

在view目錄下的top.jsp文件中實現進入信息發(fā)布頁面的“發(fā)布信息”超鏈接。代碼如下:

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

<a href="info_Add.action?addType=linkTo" style="color:gray">[發(fā)布信息]</a>

該超鏈接所請求的路徑為info_Add.action,根據在Struts配置文件中的配置,由InfoAction類中的Add()方法處理該請求,參數addType通知Add()方法當前請求的操作,其值若為linkTo,表示僅僅是連接到信息發(fā)布頁面;若為add,則表示向數據表中插入記錄。

2.創(chuàng)建發(fā)布信息的addInfo.jsp頁面

在信息發(fā)布頁面中包含一個表單,該表單中的元素如表1.11所示。

addInfo.jsp頁面的關鍵代碼如下:

例程42 代碼位置:光盤\TM\01\pages\add\addInfo.jsp

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

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

<input type="hidden" name="addType" value="add"/>

<tr>

<td>信息類別:</td>

<td> <s2:select emptyOption="true" list="#session.typeMap" name="infoSingle.infoType"/></td>

<td>[信息標題最多不得超過 40 個字符]  </td>

</tr>

<tr> <td colspan="3"><s2:fielderror><s2:param value="%{'typeError'}"/></s2:fielderror></td></tr>

<tr>

<td>信息標題:</td>

<td colspan="2"><s2:textfield name="infoSingle.infoTitle"/></td>

</tr>

<tr><td colspan="3"><s2:fielderror><s2:param value="%{'titleError'}"/></s2:fielderror></td></tr>

……//省略了實現其他表單字段的代碼

</s2:form>

 

上一章目錄下一章

Copyright ? 讀書網 m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號