日韩精品 中文字幕 动漫,91亚洲午夜一区,在线不卡日本v一区v二区丶,久久九九国产精品自在现拍

正文

都市供求信息網(25)

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


接下來判斷用戶訪問的頁碼是否為第一頁,若不是,則生成查詢其他頁記錄的SQL語句。實現(xiàn)代碼如下:

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

int currentP=createPage.getCurrentP(); //獲取當前頁碼

if(currentP>1){ //如果不是第一頁

int top=(currentP-1)*perR;

if(mark.equals("1")){

sqlsub="SELECT TOP "+perR+" * FROM tb_info i WHERE (info_type = ?) AND (info_payfor = ?) AND (info _state = ?) AND (info_date < (SELECT MIN(info_date) FROM (SELECT TOP "+top+" (info_date) FROM tb_info WHERE (info_type = i.info_type) AND (info_payfor = i.info_payfor) AND (info_state = i.info_state) ORDER BY info_date DESC) AS mindate)) ORDER BY info_date DESC";

}

else if(mark.equals("2")){

sqlsub="SELECT TOP "+perR+" * FROM tb_info i WHERE (info_type = ?) AND (info_date < (SELECT MIN(info_date) FROM (SELECT TOP "+top+" (info_date) FROM tb_info WHERE (info_type = i.info_type) ORDER BY info_date DESC) AS mindate)) ORDER BY info_date DESC";

}

else if(mark.equals("3")){

sqlsub="SELECT TOP "+perR+" * FROM tb_info i WHERE (info_type = ?) AND (info_state = ?) AND (info _date < (SELECT MIN(info_date) FROM (SELECT TOP "+top+" (info_date) FROM tb_info WHERE (info_type = i.info_type) AND (info_state = i.info_state) ORDER BY info_date DESC) AS mindate)) ORDER BY info_date DESC";

}

else if(mark.equals("4")){

sqlsub="SELECT TOP "+perR+" * FROM tb_info i WHERE (info_type = ?) AND (info_payfor = ?) AND (info _date < (SELECT MIN(info_date) FROM (SELECT TOP "+top+" (info_date) FROM tb_info WHERE (info_type = i.info_type) AND (info_payfor = i.info_payfor) ORDER BY info_date DESC) AS mindate)) ORDER BY info_date DESC";

}

}

最后查詢數(shù)據(jù)庫,獲取符合條件并在當前頁中顯示的信息。實現(xiàn)代碼如下:

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

List adminlistshow=myOp.OpListShow(sqlsub, params);

request.setAttribute("adminlistshow",adminlistshow);

request.setAttribute("createpage",createPage);

4.配置cityinfo.xml文件

本系統(tǒng)中所有訪問后臺操作的請求,都將其訪問路徑設置為admin_xxx.action,然后在cityinfo.xml配置文件中,將該路徑模式與AdminAction后臺處理類進行指定,這樣所有訪問admin_*.action的請求都會由AdminAction類進行處理。其配置代碼如下:

例程61 代碼位置:光盤\TM\01\WEB-INF\classes\cityinfo.xml

<!-- 后臺管理員操作 -->

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

<result name="input">/pages/admin/view/AdminTemp.jsp</result> <!-- 指定表單驗證失敗后返回的資源-->

<result>/pages/admin/view/AdminTemp.jsp</result> <!-- 指定信息顯示請求處理成功后返回的資源 -->

</action>

5.創(chuàng)建顯示信息的JSP文件

在獲取了符合條件的信息后,應返回JSP頁面進行顯示。其關鍵代碼如下:

例程62 代碼位置:光盤\TM\01\pages\admin\info\listshow.jsp

<s2:set name="listshow" value="#request.adminlistshow"/>

……//省略了部分代碼

<s2:iterator status="status" value="listshow">

<s2:if test="#status.odd">

<tr></s2:if>

<s2:else>

<tr bgcolor="#F9F9F9"></s2:else>

<td><b><s2:property value="#status.index+1"/></b></td> <!-- 輸出序號 -->

<td><s2:property value="id"/></td> <!-- 輸出信息ID值 -->

<td><a href="admin_CheckShow.action? checkID =<s2:property value='id'/>"><s2:property value="getSubInfoTitle(17)"/></a></td> <!-- 以超鏈接形式輸出信息標題 -->

<td><s2:property value="infoDate"/></td> <!-- 輸出信息發(fā)布時間 -->

<td><s2:if test="infoPayfor==1">是</s2:if><s2:else>否</s2:else></td> <!-- 輸出付費狀態(tài)-->

<td><s2:if test="infoState==1"><font color="red">是</font></s2:if><s2:else><b><font color="blue">否</font></b></s2:else></td> <!-- 輸出審核狀態(tài)-->

<td><a href="admin_CheckShow.action? checkID =<s2:property value='id'/>">√審核</a></td>

<td><a href="admin_Delete.action? deleteID=<s2:property value='id'/>" onclick="return really()">×刪除</a></td>

</tr>

</s2:iterator>

代碼貼士

set標簽用來為變量賦值,并將該變量保存到指定范圍內。其中,name屬性指定變量名,value屬性指定變量值,代碼中value的屬性值#request.adminlistshow等價于request.getAttribute("adminlistshow");可通過scope屬性指定變量的存儲范圍,可選值為application、session、request、page和action。

注意,該property標簽并不是輸出字符串id,而是輸出當前遍歷出的元素的getId()方法返回的值。

1.11.4 信息審核的實現(xiàn)過程

信息審核用到的數(shù)據(jù)表:tb_info。

根據(jù)信息審核功能的介紹,進行信息審核操作,需要先進入信息審核頁面,顯示被審核信息的詳細內容,然后管理員通過單擊“通過審核”按鈕,完成信息審核操作。下面按照這個流程來介紹信息審核的實現(xiàn)過程。

1.在信息列表顯示頁面中實現(xiàn)進入審核頁面的超鏈接

在信息列表顯示頁面中提供了信息標題和“審核”超鏈接,單擊超鏈接后即可進入信息審核頁面。實現(xiàn)代碼如下:

例程63 代碼位置:光盤\TM\01\pages\admin\info\listshow.jsp

<td><a href="admin_CheckShow.action? checkID=<s2:property value='id'/>"><s2:property value="getSubInfoTitle(17)"/> </a></td>

……

<td><a href="admin_CheckShow.action? checkID =<s2:property value='id'/>">√審核</a></td>

根據(jù)在cityinfo.xml文件中對admin_*.action的配置,上述代碼實現(xiàn)的超鏈接被觸發(fā)后,將由AdminAction類中的CheckShow()方法進行處理。

2.在AdminAction類中創(chuàng)建CheckShow()方法

該方法用來顯示被審核信息的詳細內容。在該方法中,首先需要獲取請求中傳遞的信息ID值,然后生成查詢SQL語句,最后調用業(yè)務處理對象的OpSingleShow()方法返回封裝信息的InfoSingle類對象。實現(xiàn)代碼如下:

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

/** 功能:管理員操作-顯示要審核的信息 */

public String CheckShow(){

request.setAttribute("mainPage","../info/checkshow.jsp");

comebackState(); //恢復在“顯示方式”中選擇的狀態(tài)的方法

String sql="SELECT * FROM tb_info WHERE (id = ?)";

String checkID=request.getParameter("checkID"); //獲取請求中傳遞的信息ID值

if(checkID==null||checkID.equals(""))

checkID="-1";

Object[] params={checkID};

OpDB myOp=new OpDB();

infoSingle=myOp.OpSingleShow(sql, params); //返回InfoSingle類對象

if(infoSingle==null){ //信息不存在

request.setAttribute("mainPage","/pages/error.jsp");

addFieldError("AdminShowNoExist",getText("city.singleshow.no.exist")); //保存提示信息

}

return SUCCESS;

}

代碼中調用的comebackState()方法用來恢復在“顯示方式”中選擇的狀態(tài)。實現(xiàn)代碼如下:

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

/* 功能:恢復在“顯示方式”中選擇的狀態(tài) */

private void comebackState(){

/* 獲取session中保存的選擇狀態(tài)。

* 將選擇狀態(tài)保存在session中,

* 是在管理員單擊“顯示”按鈕請求列表顯示時,

* 在ListShow()方法中實現(xiàn)的

*/

Integer getInfoType=(Integer)session.get("infoType");

String getPayForType=(String)session.get("payforType");

String getStateType=(String)session.get("stateType");

/* 恢復選擇的狀態(tài) */

if(getPayForType!=null&&getStateType!=null&&getInfoType!=null){

showType.setInfoType(getInfoType.intValue());

showType.setPayforType(getPayForType);

showType.setStateType(getStateType);

}

}


上一章目錄下一章

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