?? admindisplaymessageprocessor.java
字號(hào):
package org.sunxin.guestbook.controller;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.sunxin.guestbook.*;
import org.sunxin.guestbook.beans.*;
public class AdminDisplayMessageProcessor implements Processor
{
private String index_uri="admin_index.jsp";
public void perform(HttpServletRequest req,
HttpServletResponse resp,
ServletContext sc)
throws IOException, ServletException,GuestbookException
{
//判斷管理員是否已經(jīng)登錄。
HttpSession session=req.getSession();
String sessionManager=(String)session.getAttribute("manager");
if(null==sessionManager)
{
throw new UserException(
"您還沒(méi)有登錄,請(qǐng)先<a href=\"admin_logon.jsp\">登錄</a>!");
}
//在請(qǐng)求對(duì)象中保存manager屬性,XsltServlet將根據(jù)這個(gè)屬性的值來(lái)判斷
//是否將樣式表頂層參數(shù)user的值設(shè)置為“manager”。
req.setAttribute("manager","manager");
GuestbookDB gstDB = (GuestbookDB)sc.getAttribute("gstdb");
ResultSet rs=gstDB.getMessages();
try
{
if(null==rs)
{
throw new GuestbookException("系統(tǒng)出錯(cuò)");
}
//移動(dòng)游標(biāo)到結(jié)果集的最后一行。
rs.last();
//得到當(dāng)前行的行數(shù),也就得到了數(shù)據(jù)庫(kù)中留言的總數(shù)。
int rowCount = rs.getRow();
if (rowCount == 0)
{
StringBuffer sb=new StringBuffer(128);
sb.append("<page name=\"guestbook\">");
sb.append("<guestbook>");
sb.append("<link>");
sb.append("<firstpage>第一頁(yè)</firstpage>");
sb.append("<prevpage>上一頁(yè)</prevpage>");
sb.append("<nextpage>下一頁(yè)</nextpage>");
sb.append("<lastpage>最后頁(yè)</lastpage>");
sb.append("</link>");
sb.append("</guestbook>");
sb.append("</page>");
req.setAttribute("page", sb.toString());
return;
}
String strCurPage = req.getParameter("page");
//表示當(dāng)前顯示的頁(yè)數(shù)。
int curPage;
if (strCurPage == null)
curPage = 1;
else
curPage = Integer.parseInt(strCurPage);
//定義每頁(yè)顯示的留言數(shù)。
int countPerPage = 5;
//計(jì)算顯示所有留言需要的總頁(yè)數(shù)。
int pageCount = (rowCount + countPerPage - 1) / countPerPage;
//移動(dòng)游標(biāo)到結(jié)果集中指定的行。如果顯示的是第一頁(yè),curPage=1,
//游標(biāo)移動(dòng)到第1行。
rs.absolute( (curPage - 1) * countPerPage + 1);
StringBuffer sb=new StringBuffer(1024);
sb.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
// sb.append(File.separator);
sb.append("<page name=\"guestbook\">");
sb.append("<guestbook>");
sb.append("<link>");
//如果是第1頁(yè),則顯示不帶鏈接的文字,如果不是第1頁(yè),
//則給用戶(hù)提供跳轉(zhuǎn)到第一頁(yè)和上一頁(yè)的鏈接。
if(curPage==1)
{
sb.append("<firstpage>第一頁(yè)</firstpage>");
sb.append("<prevpage>上一頁(yè)</prevpage>");
}
else
{
sb.append("<firstpage>");
sb.append("<a href=\""+index_uri+"?page=1\">第一頁(yè)</a>");
sb.append("</firstpage>");
sb.append("<prevpage>");
sb.append("<a href=\""+index_uri+"?page="+(curPage-1)+"\">上一頁(yè)</a>");
sb.append("</prevpage>");
}
if(curPage==pageCount)
{
sb.append("<nextpage>下一頁(yè)</nextpage>");
sb.append("<lastpage>最后頁(yè)</lastpage>");
}
else
{
sb.append("<nextpage>");
sb.append("<a href=\""+index_uri+"?page=" + (curPage + 1) +
"\">下一頁(yè)</a>");
sb.append("</nextpage>");
sb.append("<lastpage>");
sb.append("<a href=\""+index_uri+"?page=" + pageCount +
"\">最后頁(yè)</a>");
sb.append("</lastpage>");
}
sb.append("</link>");
int i=0;
ResultSetMetaData rsMetaData=rs.getMetaData();
int fieldCount=rsMetaData.getColumnCount();
sb.append("<record>");
//以循環(huán)的方式取出每頁(yè)要顯示的數(shù)據(jù),因?yàn)樵谇懊驷槍?duì)要顯示的頁(yè)數(shù),
//調(diào)用了rs.absolute((curPage-1)*countPerPage+1);
//所以是從游標(biāo)所在的位置取出當(dāng)前頁(yè)要顯示的數(shù)據(jù)。
while(i<countPerPage && !rs.isAfterLast())
{
sb.append("<row>");
for(int j=1;j<=fieldCount;j++)
{
String columnName=rsMetaData.getColumnName(j);
sb.append("<field name=\""+columnName.toLowerCase()+"\">");
if(5==j)
{
Timestamp ts=rs.getTimestamp("gst_time");
long lms=ts.getTime();
Date date=new Date(lms);
Time time=new Time(lms);
sb.append(date+" "+time);
}
else
sb.append(rs.getString(j));
sb.append("</field>");
}
sb.append("</row>");
i++;
rs.next();
}
rs.close();
sb.append("</record>");
sb.append("</guestbook>");
sb.append("</page>");
req.setAttribute("page", sb.toString());
}
catch (SQLException sx)
{
throw new ServletException("系統(tǒng)出錯(cuò)");
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -