import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;public class SplitPager extends BodyTagSupport {
private int pageSize;
private List pagelist;
private HttpServletRequest request;
private int i;
private List currentPageList;
private String emptyMessage;
private int pageFootStyle = 1;
private int pageNo = 1; public int doStartTag() throws JspException {
try {
this.request = (HttpServletRequest) this.pageContext.getRequest();
JspWriter out = this.pageContext.getOut();
HttpServletRequest request = (HttpServletRequest) this.pageContext
.getRequest();
String how = request.getParameter("howPage");
setPageNo();
if (how != null) {
setCurrentPageNo(Integer.parseInt(how));
}
this.i = 1;
this.currentPageList = getCurrentPageList();
this.pageContext.setAttribute("row", this.currentPageList.get(0));
} catch (Exception e) {
e.printStackTrace();
}
return super.doStartTag();
} public int doAfterBody() throws JspException {
try {
if (this.pagelist == null) {
return 0;
}
if (this.i < this.currentPageList.size()) {
this.pageContext.setAttribute("row",
this.currentPageList.get(this.i));
this.i += 1;
return 2;
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
} public int doEndTag() throws JspException {
try {
this.i = 1;
JspWriter out = this.pageContext.getOut();
if (this.pagelist == null) {
out.print("<center>" + this.emptyMessage + "</center>");
return 6;
}
String bodyContent = this.bodyContent.getString();
out.print(bodyContent);
out.print("<table align=\"right\"><tr><td><br/><form id=\"frm_page\" name=\"frm_page\" method=\"post\">");
// 将请求对象中的所有参数放入隐藏域中,这样在翻页时,是查询条件不会丢失
Enumeration<String> enumeration = request.getParameterNames();// 获取每一个参数的迭代器
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();// 获取请求参数名
if (!("howPage".equals(name)) && !("pageNo").equals(name)) {
String value = new String(request.getParameter(name)
.getBytes("iso-8859-1"));// 获取参数值
out.println("<input type=\"hidden\" id=\"" + name
+ "\" name=\"" + name + "\" value=\"" + value
+ "\"/>");
}
}
out.println("<input type=\"hidden\" id=\"howPage\" name=\"howPage\"/><input type=\"hidden\" id=\"pageNo\" name=\"pageNo\" value=\""
+ this.pageNo + "\"" + "/>");
out.println("<a href=javascript:document.getElementById(\"howPage\").value=1;document.frm_page.submit();>首页</a>");
if (this.pageNo > 1) {
out.println("<a href=javascript:document.getElementById(\"howPage\").value=2;document.frm_page.submit();>上页</a>");
} else if (this.pageFootStyle == 2) {
out.println("<a onclick=\"return false\" href=javascript:document.getElementById(\"howPage\").value=2;document.frm_page.submit();>上页</a>");
}
if (this.pageNo < getPageCount()) {
out.println("<a href=javascript:document.getElementById(\"howPage\").value=3;document.frm_page.submit();>下页</a>");
} else if (this.pageFootStyle == 2) {
out.println("<a onclick=\"return false\" href=javascript:document.getElementById(\"howPage\").value=3;document.frm_page.submit();>下页</a>");
}
out.println("<a href=javascript:document.getElementById(\"howPage\").value=4;document.frm_page.submit();>末页</a>");
out.println("第<font color=blue>"
+ this.pageNo
+ "</font>页/共<font color=blue>"
+ getPageCount()
+ "</font>页&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</form></td></tr></table>");
} catch (Exception e) {
e.printStackTrace();
}
return super.doEndTag();
} public void setPageList(List pagelist) {
this.pagelist = pagelist;
} public void setPageNo() {
if (this.request.getParameter("pageNo") == null) {
this.pageNo = 1;
} else {
this.pageNo = Integer.parseInt(this.request.getParameter("pageNo")
.toString());
}
} private int getPageCount() {
int size = this.pagelist.size();
return ((size % this.pageSize == 0) ? size / this.pageSize : size
/ this.pageSize + 1);
} public void setEmptyMessage(String emptyMessage) {
this.emptyMessage = emptyMessage;
} public int getPageFootStyle() {
return pageFootStyle;
} public void setPageFootStyle(int pageFootStyle) {
this.pageFootStyle = pageFootStyle;
} private List getCurrentPageList() {
int startIndex = (this.pageNo - 1) * this.pageSize;
int endIndex = startIndex + this.pageSize;
if (endIndex > this.pagelist.size()) {
endIndex = this.pagelist.size();
}
List saveList = new ArrayList();
for (int i = startIndex; i < endIndex; ++i) {
saveList.add(this.pagelist.get(i));
}
return saveList;
} private void setCurrentPageNo(int how) {
switch (how) {
case 1:
this.pageNo = 1;
break;
case 2:
if (this.pageNo <= 1)
return;
this.pageNo -= 1;
break;
case 3:
if (this.pageNo >= getPageCount())
return;
this.pageNo += 1;
break;
case 4:
this.pageNo = getPageCount();
}
}
}<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page import="java.util.List" %>
<%@ page import="com.yxq.valuebean.WordBean" %>
<html>
<head>
<title>聆音博客-查看留言</title>
</head>
<body>
    <center>
        <table width="778" height="600" border="0" cellspacing="0" cellpadding="0" bgcolor="#F0EAED">
            <tr height="281"><td colspan="2"><jsp:include page="../view/FrontTop.jsp" /></td></tr>
            <tr>
                <td width="230" valign="top"><jsp:include page="../view/FrontLeft.jsp"/></td>
                <td width="548" align="center" valign="top">
                 <table width="95%" border="0" cellspacing="0" cellpadding="0" style="word-break:break-all">
                   <% 
         List wordlist=(List)request.getAttribute("wordList"); 
             if(wordlist==null||wordlist.size()==0)
             out.print("<tr height='60'><td align='center'>暂无留言可显示!</td></tr>");
             else{
                      int num=wordlist.size();     
                     out.print("<tr height='60'><td align='center'>【我的留言 共 "+num+" 条】</td></tr>");                            
             int i=0;
                         while(i<wordlist.size()){
                          WordBean wordSingle=(WordBean)wordlist.get(i);            
                        %>
  <tr height="50">
  <td style="text-indent:20">
      ▲ <b><%=wordSingle.getWordAuthor() %></b>
  </td>
  </tr>
  <tr align="right" height="20"><td width="40%"><%=wordSingle.getWordTime()%>&nbsp;&nbsp;</td></tr>
  <tr height="60"><td style="text-indent:20" colspan="2" valign="top">&nbsp;&nbsp;&nbsp;&nbsp;<%=wordSingle.getWordContent()%></td></tr> 
                <tr height="1"><td background="images/line.jpg" colspan="2"></td></tr>
                        <%
                         i++;
                         }
                         }
             %>
             </table>
             <form action="WordServlet" method="post">
             <input type="hidden" name="action" value="add">
             <table width="95%" border="0" cellspacing="8" cellpadding="0" style="margin-top:10">
             <tr height="30"><td colspan="2" align="center"><b>给我留言</b></td></tr>
             <tr>
             <td width="25%" align="center">留 言 者:</td>
             <td><input type="text" name="wordAuthor" size="40" value="匿名好友"></td>
             </tr>            
             <tr>
             <td width="25%" align="center">留言标题:</td>
             <td><input type="text" name="wordTitle" size="60"></td>
             </tr>
             <tr>
             <td align="center">留言内容:</td>
             <td><textarea name="wordContent" rows="10" cols="50"></textarea></td>
             </tr>
             <tr>
               <td></td>
             <td>
             <input type="submit" value="提交" style="width:50">
             <input type="reset" value="重置" style="width:50">
             </td>            
             </tr>
             </table>
             </form>
                </td>
            </tr>
            <tr height="100"><td colspan="2"><%@ include file="../view/FrontEnd.jsp" %></td></tr>
        </table>
    </center>
</body>
</html>如题,有一个实现分页功能的SplitPager.java类,如何在查看所有留言的使用实现分页显示,求指教。

解决方案 »

  1.   

    看见JSP页面里面的代码块就犯愁.
    还有,用JAVA写JSP,愁上加愁.
    兄弟,学习一下EL表达式和Jstl标签,要容易的多.
      

  2.   

    jsp尽量没java代码,而且分页可以封装下,以后可以共用的
      

  3.   

    学下jstl和spring mvc吧,这样的 代码太难维护和调试啦~
      

  4.   

    http://download.csdn.net/detail/lixin1639790/3981656下个翻页类,然后将它保存在session里面就可以了。。