一,首先複製三個類
類一PageContextTag
package log.tags;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
public class PageContextTag extends TagSupport{
private static final long serialVersionUID = 1L;
private String href;
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public int doEndTag() throws JspTagException {
try {
HttpServletRequest re = (HttpServletRequest)pageContext.getRequest();
String out = re.getRequestURL().toString();
int index = out.indexOf("/", out.indexOf("/", 7)+1);
out = "<base href=\""+out.substring(0,index)+"/\">";
pageContext.getOut().write(out);
}catch(Exception e){
e.printStackTrace();
}
return EVAL_PAGE;
}
}
類二PageTag
package log.tags;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.TagSupport;
/**
* describe: 翻頁標籤
* @author zhangming
* @date 2010-3-18
*/
public class PageTag extends TagSupport{
private String method; //action對應查詢方法
private String tarAction; //action
private String tarFrame; //對應frame
public int doStartTag() throws JspTagException {
return SKIP_BODY;
}
public int doEndTag() throws JspTagException {
try {
StringBuffer out = new StringBuffer();
out.append("<!------------------------------ start pageTag ------------------------------>\r\n");
out.append("<script type=\"text/javascript\" language=\"javaScript\">\r\n");
out.append(" function turn(control,aa){\r\n");
out.append(" var indexint=parseInt(document.getElementById(\"currp\").innerHTML);\r\n");
out.append(" var countpage=parseInt(document.getElementById(\"countpage\").innerHTML);\r\n");
out.append(" if(control==\"first\"){\r\n");
out.append(" if(indexint==1||indexint==0) {\r\n");
//out.append(" alert(\"這是首頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = 1;\r\n");
out.append(" }if(control==\"previous\"){\r\n");
out.append(" if(indexint==1||indexint==0) {\r\n");
//out.append(" alert(\"這是首頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = indexint-1;\r\n");
out.append(" }if(control==\"next\"){\r\n");
out.append(" if(indexint==countpage) {\r\n");
//out.append(" alert(\"這是尾頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = indexint+1;\r\n");
out.append(" }if(control==\"last\"){\r\n");
out.append(" if(indexint==countpage) {\r\n");
//out.append(" alert(\"這是尾頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = parseInt(document.getElementById(\"countpage\").innerHTML);\r\n");
out.append(" }document.forms[0].currPage.value=indexint; \r\n");
out.append(" document.forms[0].action=\""+tarAction+"\";\r\n");
out.append(" document.forms[0].target=\""+tarFrame+"\";\r\n");
out.append(" document.forms[0].submit();\r\n");
out.append(" }\r\n");
out.append(" function goTo(){\r\n");
out.append(" var re = /^\\+?[1-9][0-9]*$/;\r\n");
out.append(" var obj= document.getElementById(\"currPage\");\r\n");
out.append(" var countPage= document.getElementById(\"countpage\").innerHTML;\r\n");
out.append(" if (!re.test(obj.value))\r\n");
out.append(" {\r\n");
out.append(" alert(\"請輸入正確的頁數\");\r\n");
out.append(" obj.focus();\r\n");
out.append(" }else{\r\n");
out.append(" if(countPage<obj.value) obj.value=countPage;\r\n");
out.append(" document.forms[0].action=\""+tarAction+"\";\r\n");
out.append(" document.forms[0].target=\""+tarFrame+"\";\r\n");
out.append(" document.forms[0].submit();\r\n");
out.append(" }\r\n");
out.append(" }\r\n");
out.append("</script>\r\n");
out.append(" <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:0px\">\r\n");
out.append(" <tr> \r\n");
out.append(" <td width=\"20\" height=\"25\" align=\"right\"><img src=\"/jjxf_MP/image/page/pic02.gif\" width=\"20\" height=\"11\"></td>\r\n");
out.append(" <td align=\"left\">查詢結果 共<span class=\"text\"> <span class=\"text\"><label id=\"icount\">0</label></span> \r\n");
out.append(" </span>條記錄,第<span class=\"text\"><label id=\"currp\">0</label>/<label id=\"countpage\">0</label></span> 頁</td>\r\n");
out.append(" <td align=\"right\"> <table align=\"right\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:0px\">\r\n");
out.append(" <tr> \r\n");
out.append(" <td width=\"18\"><a href=\"javascript:void(0)\" οnclick=\"turn('first',document.forms[0])\" ><img src=\"/jjxf_MP/image/page/sy1.gif\" alt=\"首頁\" name=\"firstpage\" id=\"firstpage\" width=\"16\" height=\"15\" border=\"0\"></a></td>\r\n");
out.append(" <td width=\"48\"><a href=\"javascript:void(0)\" οnclick=\"turn('previous',document.forms[0])\" ><img src=\"/jjxf_MP/image/page//syy1.gif\" alt=\"上一頁\" name=\"previouspage\" id=\"previouspage\" width=\"46\" height=\"15\" border=\"0\"></a></td>\r\n");
out.append(" <td width=\"48\"><a href=\"javascript:void(0)\" οnclick=\"turn('next',document.forms[0])\" ><img src=\"/jjxf_MP/image/page/xyy1.gif\" alt=\"下一頁\" name=\"nextpage\" id=\"nextpage\" width=\"46\" height=\"15\" border=\"0\"></a></td>\r\n");
out.append(" <td width=\"18\"><a href=\"javascript:void(0)\" οnclick=\"turn('last',document.forms[0])\" ><img src=\"/jjxf_MP/image/page/wy1.gif\" alt=\"尾頁\" name=\"lastpage\" id=\"lastpage\" width=\"16\" height=\"15\" border=\"0\"></a></td>\r\n");
out.append(" <td align=\"left\" class=\"STYLE2\"> 轉到第 <input type=\"text\" name=\"currPage\" id=\"currPage\" value=\"1\" style=\"width:30px\">頁 <input type=\"button\" name=\"go\" value=\"GO\" onClick=\"goTo();\"></td>\r\n");
out.append(" </tr>\r\n");
out.append(" </table></td>\r\n");
out.append(" </tr>\r\n");
out.append(" </table>\r\n");
out.append("<!------------------------------ end pageTag ------------------------------>\r\n");
pageContext.getOut().write(out.toString());
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
public void doInitBody() throws JspTagException {
}
public void setBodyContent(BodyContent bodyContent) {
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getTarAction() {
return tarAction;
}
public void setTarAction(String tarAction) {
this.tarAction = tarAction;
}
public String getTarFrame() {
return tarFrame;
}
public void setTarFrame(String tarFrame) {
this.tarFrame = tarFrame;
}
}
類三PageTagForMoreForm
package log.tags;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.TagSupport;
/**
* describe: 翻頁標籤
* @author zhangming
* @date 2010-3-18
*/
public class PageTagForMoreForm extends TagSupport{
private String method; //action對應查詢方法
private String tarAction; //action
private String tarFrame; //對應frame
private String tarForm;//對應的form
private String count;//對應的元素
public int doStartTag() throws JspTagException {
return SKIP_BODY;
}
public int doEndTag() throws JspTagException {
try {
StringBuffer out = new StringBuffer();
out.append("<!------------------------------ start pageTag ------------------------------>\r\n");
out.append("<script type=\"text/javascript\" language=\"javaScript\">\r\n");
out.append(" function turn"+count+"(control,aa){\r\n");
out.append(" var indexint=parseInt(document.getElementById(\"currp"+count+"\").innerHTML);\r\n");
out.append(" var countpage=parseInt(document.getElementById(\"countpage"+count+"\").innerHTML);\r\n");
out.append(" if(control==\"first\"){\r\n");
out.append(" if(indexint==1||indexint==0) {\r\n");
//out.append(" alert(\"這是首頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = 1;\r\n");
out.append(" }if(control==\"previous\"){\r\n");
out.append(" if(indexint==1||indexint==0) {\r\n");
//out.append(" alert(\"這是首頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = indexint-1;\r\n");
out.append(" }if(control==\"next\"){\r\n");
out.append(" if(indexint==countpage) {\r\n");
//out.append(" alert(\"這是尾頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = indexint+1;\r\n");
out.append(" }if(control==\"last\"){\r\n");
out.append(" if(indexint==countpage) {\r\n");
//out.append(" alert(\"這是尾頁!\");\r\n");
out.append(" return;\r\n");
out.append(" } \r\n");
out.append(" indexint = parseInt(document.getElementById(\"countpage"+count+"\").innerHTML);\r\n");
out.append(" }document."+tarForm+".currPage.value=indexint; \r\n");
out.append(" document."+tarForm+".action=\""+tarAction+"\";\r\n");
out.append(" document."+tarForm+".target=\""+tarFrame+"\";\r\n");
out.append(" document."+tarForm+".submit();\r\n");
out.append(" }\r\n");
out.append(" function goTo"+count+"(){\r\n");
out.append(" var re = /^\\+?[1-9][0-9]*$/;\r\n");
out.append(" var obj= document."+tarForm+".currPage;\r\n");
out.append(" var countPage= document.getElementById(\"countpage"+count+"\").innerHTML;\r\n");
out.append(" if (!re.test(obj.value))\r\n");
out.append(" {\r\n");
out.append(" alert(\"請輸入正確的頁數\");\r\n");
out.append(" obj.focus();\r\n");
out.append(" }else{\r\n");
out.append(" if(countPage<obj.value) obj.value=countPage;\r\n");
out.append(" document."+tarForm+".action=\""+tarAction+"\";\r\n");
out.append(" document."+tarForm+".target=\""+tarFrame+"\";\r\n");
out.append(" document."+tarForm+".submit();\r\n");
out.append(" }\r\n");
out.append(" }\r\n");
out.append("</script>\r\n");
out.append(" <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n");
out.append(" <tr> \r\n");
out.append(" <td width=\"20\" height=\"25\" align=\"right\"><img src=\"/jjxf_MP/image/page/pic02.gif\" width=\"20\" height=\"11\"></td>\r\n");
out.append(" <td class=\"biao\">查詢結果 共<span class=\"text\"> <span class=\"text\"><label id=\"icount"+count+"\">0</label></span> \r\n");
out.append(" </span>條記錄,第<span class=\"text\"><label id=\"currp"+count+"\">0</label>/<label id=\"countpage"+count+"\">0</label></span> 頁</td>\r\n");
out.append(" <td align=\"right\"> <table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n");
out.append(" <tr> \r\n");
out.append(" <td width=\"18\"><a href=\"javascript:void(0)\" οnclick=\"turn"+count+"('first',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page/sy1.gif\" alt=\"首頁\" name=\"firstpage"+count+"\" id=\"firstpage"+count+"\" width=\"16\" height=\"15\"
border=\"0\"></a></td>\r\n");
out.append(" <td width=\"48\"><a href=\"javascript:void(0)\" οnclick=\"turn"+count+"('previous',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page//syy1.gif\" alt=\"上一頁\" name=\"previouspage"+count+"\" id=\"previouspage"+count+"\" width=\"46\"
height=\"15\" border=\"0\"></a></td>\r\n");
out.append(" <td width=\"48\"><a href=\"javascript:void(0)\" οnclick=\"turn"+count+"('next',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page/xyy1.gif\" alt=\"下一頁\" name=\"nextpage"+count+"\" id=\"nextpage"+count+"\" width=\"46\" height=\"15\"
border=\"0\"></a></td>\r\n");
out.append(" <td width=\"18\"><a href=\"javascript:void(0)\" οnclick=\"turn"+count+"('last',document."+tarForm+")\" ><img src=\"/jjxf_MP/image/page/wy1.gif\" alt=\"尾頁\" name=\"lastpage"+count+"\" id=\"lastpage"+count+"\" width=\"16\" height=\"15\"
border=\"0\"></a></td>\r\n");
out.append(" <td align=\"left\" class=\"STYLE2\"> 轉到第 <input type=\"text\" name=\"currPage\" id=\"currPage\" value=\"1\" style=\"width:30px\">頁 <input type=\"button\" name=\"go\" value=\"GO\" onClick=\"goTo"+count+"();\"></td>\r\n");
out.append(" </tr>\r\n");
out.append(" </table></td>\r\n");
out.append(" </tr>\r\n");
out.append(" </table>\r\n");
out.append("<!------------------------------ end pageTag ------------------------------>\r\n");
pageContext.getOut().write(out.toString());
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
public void doInitBody() throws JspTagException {
}
public void setBodyContent(BodyContent bodyContent) {
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public String getTarAction() {
return tarAction;
}
public void setTarAction(String tarAction) {
this.tarAction = tarAction;
}
public String getTarFrame() {
return tarFrame;
}
public void setTarFrame(String tarFrame) {
this.tarFrame = tarFrame;
}
public String getTarForm() {
return tarForm;
}
public void setTarForm(String tarForm) {
this.tarForm = tarForm;
}
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
}
二在WEB-INFO下新建一個文件名爲tld,並創建一個tyTag.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.2</tlibversion>
<jspversion>1.1</jspversion>
<shortname>tyTag</shortname>
<uri>/tyTag</uri>
<tag>
<name>page</name>
<tagclass>log.tags.PageTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>tarAction</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>tarFrame</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<name>pageForMore</name>
<tagclass>log.tags.PageTagForMoreForm</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>tarAction</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>tarFrame</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>tarForm</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>count</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<name>base</name>
<tagclass>log.tags.PageContextTag</tagclass>
<bodycontent>JSP</bodycontent>
</tag>
</taglib>
三創建查詢結果類
package util;
import java.util.List;
/**
* 查詢結果
* @author Administrator
*
*/
public class QueryResult {
public List vector; // 查詢結果集合
public String countRows; //行數
public String countPages; //頁數
public List getVector() {
return vector;
}
public void setVector(List vector) {
this.vector = vector;
}
public String getCountRows() {
return countRows;
}
public void setCountRows(String countRows) {
this.countRows = countRows;
}
public String getCountPages() {
return countPages;
}
public void setCountPages(String countPages) {
this.countPages = countPages;
}
}
四在公共類裏面加上
package util;
public class testUtil {
/** 分頁顯示時每頁最多顯示的記錄數 */
public static final short MAX_RESULT_PER_PAGE = 10;
/**
* 根據記錄數得到頁數
*
* @param rows
* 總記錄數
* @param max_per_page
* 每頁顯示最大記錄數
* @return String
*/
public static String getCountPage(Integer rows, int max_per_page) {
int temp = (int) (rows.intValue() / max_per_page);
if (rows.intValue() % max_per_page != 0)
temp++;
return temp + "";
}
}
五、業務層的代碼
List<Register> list = hibernateTemplateDao.page_list(hql.toString(),
table, currPage, Constants.MAX_RESULT_PER_PAGE);
qs.setCountRows(totalRecord);
qs.setCountPages(GeneralUtil.getCountPage(new Integer(Integer
.parseInt(qs.getCountRows())), Constants.MAX_RESULT_PER_PAGE));
for (Register reg : list) {
reg.setCurrentStateCh(GeneralUtil.getCurrentChState(reg
.getCurrentState()));
}
qs.setVector(list);
六、邏輯層調用
@Action(value = "/commonQuery/commonQueryTable", results = { @Result(name = "commonQueryTable", location = "/page/caseQuery/commonQuery_main_table.jsp") })
public String commonQueryTable() throws Exception {
try {
QueryResult qs = commonQueryService.getAllCaseRegister(register,
regDateBegin, regDateEnd, currPage);
if (qs != null && qs.getCountRows().equals("0")) {
this.setCurrPage("0");
}
this.setQueryResult(qs);
} catch (Exception e) {
e.printStackTrace();
}
return "commonQueryTable";
}
七、jsp頁面調用
初始化頁面
<table width="100%" border="0" cellspacing="0" cellpadding="0"
cellpadding="1">
<tr>
<td>
<tytag:page tarFrame="frame1"
tarAction="${base}/caseCheck/queryCaseCheckTable.shtml"></tytag:page>
</td>
</tr>
</table>
顯示頁面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/tags/tytag" prefix="tytag"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<base href="<%=basePath%>">
<title>信訪登記</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="<%=basePath%>javascript/jquery-1.4.min.js"></script>
<script type="text/javascript" src="<%=basePath%>javascript/page.js"></script>
<link rel="stylesheet" href="<%=basePath%>css/main.css" />
<style type="text/css">
.textBg{
background-color:#e9e6e6 ;
}
.t1{
color:#0000FF ;
text-decoration:none ;
}
td{
text-align:center ;
}
.t2{
color:#000000 ;
text-decoration:none ;
}
.textonlyread{
background:#F0F0F0
}
fieldset legend {
color:#1E7ACE;
font-weight:bold;
}
.tr:hover {
border: #99BBE8 1px solid;
background: #99BBE8;
}
.STYLE1 {color: #FF0000}
</style>
</head>
<script type="text/javascript">
$(document).ready(function(){
loadtable();
})
function fillCurrentId(id){
window.parent.document.getElementById("registerId").value = id;
}
</script>
<body bgcolor="#FFFFFF">
<s:form>
<s:hidden name="countPage" id="countPage" />
<s:hidden name="countRow" id="countRow" />
<s:hidden name="currPage" id="currPage" />
<table width="99%" align="center" border="1" cellspacing="0" cellpadding="3">
<tr style="background-image: url('<%=basePath %>image/one_result.jpg')">
<th scope="col">序號</th>
<th scope="col">選擇</th>
<th scope="col">登記日期</th>
<th scope="col">登記人</th>
<th scope="col">被信訪人</th>
<th scope="col">辦理狀態</th>
<th scope="col">登記部門</th>
<th scope="col">承辦部門</th>
<th scope="col">主要違紀線索</th>
</tr>
<s:iterator value="vector" id="regInfo" status="st">
<tr class="tr" bgcolor="<s:if test='#st.odd==true'></s:if><s:else>#eceaeb</s:else>">
<td>
<s:property value="#st.index+1"/>
</td>
<td>
<input type="radio" name="radiobutton" value="<s:property value='id'/>" οnclick="fillCurrentId('${regInfo.id }')"/>
</td>
<td>
<s:date name="regTime" format="yyyy-MM-dd"/>
</td>
<td>
<s:property value="regUserName"/>
</td>
<td>
<s:property value="bePetName"/>
</td>
<td>
<s:property value="currentStateCh"/>
</td>
<td>
<s:property value="regUnit.unitName"/>
</td>
<td>
<s:property value="currentUnit.unitName"/>
</td>
<td title="<s:property value='brief'/>">
<s:if test="brief != null && brief.length() >14">
<s:property value="brief.substring(0,14)"/>...
</s:if>
<s:else>
<s:property value="brief"/>
</s:else>
</td>
</tr>
</s:iterator>
</table>
</s:form>
</body>
</html>