jsp tag应用例子: 数据分页显示
来源:互联网 发布:吾生也有涯,而知也无涯 编辑:程序博客网 时间:2024/04/30 23:14
定制自己的jsp tag需要做以下几个步骤
1,理清标签的需求,需要定制哪些属性,分页标签的使用:
<pagin:pagination paginationParamName="paginate" paginScope="3"></pagin:pagination>
属性分为必须属性和可选属性,
上面paginationParamName是必须属性,指向request中分页类的一个实例名。
paginScope是可选属性,默认6,指的是页码显示范围(如等于6时: 1 2 3 4 5 6)
formName是可选属性,默认是document.forms[0]
callBack是可选属性,默认是null,当指定一个函数名时,分页码或按钮被点击时,会触发相应的callBack方法,
函数可以定义为function callBackName(pn){}
2,在tld描述文件中描述tag,存为pagination.tld文件并置于WEB-INF下
3,根据tld中的属性增加相应的get set 方法,实现 BodyTag 接口, tag-class 实现如下:
(注意,BodyTag在j2ee.jar包中有定义) org.metas.pagination.PaginationTag
4,tag实用方法
jsp:
5,属性paginationParam关联的接口
6,pagination的CSS样式
7,以Oracle为例,分页SQL:
8,结束
1,理清标签的需求,需要定制哪些属性,分页标签的使用:
<pagin:pagination paginationParamName="paginate" paginScope="3"></pagin:pagination>
属性分为必须属性和可选属性,
上面paginationParamName是必须属性,指向request中分页类的一个实例名。
paginScope是可选属性,默认6,指的是页码显示范围(如等于6时: 1 2 3 4 5 6)
formName是可选属性,默认是document.forms[0]
callBack是可选属性,默认是null,当指定一个函数名时,分页码或按钮被点击时,会触发相应的callBack方法,
函数可以定义为function callBackName(pn){}
2,在tld描述文件中描述tag,存为pagination.tld文件并置于WEB-INF下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>pagination</short-name>
<uri></uri>
<display-name>pagination</display-name>
<description>pagination</description>
<tag>
<name>pagination</name>
<tag-class>org.metas.pagination.PaginationTag</tag-class>
<body-content>JSP</body-content>
<description>pagination</description>
<attribute>
<name>paginationParamName</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<description>pagination component</description>
</attribute>
<attribute>
<name>paginScope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<description>number of page NOs to show</description>
</attribute>
<attribute>
<name>formName</name>
<rtexprvalue>false</rtexprvalue>
<description>formName</description>
</attribute>
<attribute>
<name>callBack</name>
<rtexprvalue>false</rtexprvalue>
<description>callBack</description>
</attribute>
</tag>
</taglib>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>pagination</short-name>
<uri></uri>
<display-name>pagination</display-name>
<description>pagination</description>
<tag>
<name>pagination</name>
<tag-class>org.metas.pagination.PaginationTag</tag-class>
<body-content>JSP</body-content>
<description>pagination</description>
<attribute>
<name>paginationParamName</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
<description>pagination component</description>
</attribute>
<attribute>
<name>paginScope</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
<description>number of page NOs to show</description>
</attribute>
<attribute>
<name>formName</name>
<rtexprvalue>false</rtexprvalue>
<description>formName</description>
</attribute>
<attribute>
<name>callBack</name>
<rtexprvalue>false</rtexprvalue>
<description>callBack</description>
</attribute>
</tag>
</taglib>
3,根据tld中的属性增加相应的get se
(注意,BodyTag在j2ee.jar包中有定义) org.metas.pagination.PaginationTag
/**
*
*/
package org.metas.pagination;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.Tag;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.metas.dao.result.PaginateParameter;
/**
* @author wzh
*
*/
public class PaginationTag implements BodyTag {
private Log log = LogFactory.getLog(PaginationTag.class);
//TagSupport
private PageContext pageContext;
//attribute
private String paginationParamName;
private String paginScope = "6";
private String formName = "document.forms[0]";
private String callBack = null;
private PaginateParameter paginationParam;
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.BodyTag#doInitBody()
*/
public void doInitBody() throws JspException {
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.BodyTag#setBodyContent(javax.servlet.jsp.tagext.BodyContent)
*/
public void setBodyContent(BodyContent bc) {
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.IterationTag#doAfterBody()
*/
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#doEndTag()
*/
public int doEndTag() throws JspException {
try {
this.writeHtml();
} catch (IOException e) {
log.error(e.getMessage());
}
return EVAL_PAGE;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#doStartTag()
*/
public int doStartTag() throws JspException {
return SKIP_BODY;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#getParent()
*/
public Tag getParent() {
return null;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#release()
*/
public void release() {}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#setPageContext(javax.servlet.jsp.PageContext)
*/
public void setPageContext(PageContext pc) {
this.pageContext = pc;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#setParent(javax.servlet.jsp.tagext.Tag)
*/
public void setParent(Tag arg0) {}
private int getAsNumber(String param)throws JspTagException{
if(null == param
|| "".equals(param))
return 0;
try{
return Integer.parseInt(param);
}catch(NumberFormatException ex){
log.error(ex.getMessage());
throw new JspTagException(ex.getMessage());
}
}
private void writeScript(JspWriter out, int start, int end, int currentPageNo)throws JspTagException, IOException{
out.println("<script language='javascript'>");
out.println("<!--");
out.print("var start = ");
out.print(start);
out.println(";");
out.print("var end = ");
out.print(end);
out.println(";");
out.println("var callBackFunc;");
if(null != this.callBack){
out.print(" callBackFunc = ");
out.print(this.callBack);
out.println(";");
}
out.print(" var frm = ");out.print(this.formName);out.println(";");
out.println("function setParam(value){");
out.println(" if(callBackFunc){ callBackFunc(value); return;}");
out.print(" if(!frm.pageNo){");
out.println(" var pn = document.createElement('<input type="hidden" name=pageNo value="1">');");
out.println(" frm.appendChild(pn);");
out.println(" }");
out.println(" frm.pageNo.value = value;");
out.println(" frm.submit();");
out.println("}");
out.println("function gotoPrevious(){");
out.print(" setParam(start-1);");
out.println("}");
out.println("function gotoNext(){");
out.print(" setParam(end + 1);");
out.println("}");
out.println("function goto(pageNo){");
out.print(" setParam(pageNo);");
out.println("}");
out.println("-->");
out.println("</script>");
}
private void writeHtml()throws JspTagException, IOException{
if(null == this.pageContext)
return;
paginationParam = (PaginateParameter)this.pageContext.getRequest().getAttribute(this.paginationParamName);
if(null == this.paginationParamName)
return;
JspWriter out = this.pageContext.getOut();
int paginNum = this.getAsNumber(this.getPaginScope());
int pageNo = paginationParam.getCurrentPageNo();
int scope = pageNo / paginNum;
int scopeStart = scope * paginNum;//start from Zero
int scopeEnd = (scope + 1)* paginNum - 1;
int pgCnt = this.paginationParam.getPageCnt();
while(scopeEnd >= pgCnt)
scopeEnd--;
writeScript(out, scopeStart, scopeEnd, pageNo);
out.println("<div>");
out.print("<span>");
out.print(pageNo + 1);
out.print(" of ");
out.print(pgCnt);
out.println("</span>");
if(pgCnt > 1)
out.println("<div id='btn_first' onclick='goto(0);'> </div>");
if(scopeStart != 0){
out.println("<div id='btn_previous' onclick='gotoPrevious()'> </div>");
}
for(;scopeStart<= scopeEnd;scopeStart++){
out.print("<div ><a href='#' onclick='goto(");
out.print(scopeStart);
out.print(")'");
if(pageNo == scopeStart)
out.print(" class='pn_selected' ");
out.println(">");
out.print(scopeStart + 1);
out.println("</a></div>");
}
if(scopeEnd != pgCnt - 1){
out.println("<div id='btn_next' onclick='gotoNext()'> </div>");
}
if(pgCnt > 1){
out.print("<div id='btn_last' onclick='goto(");
out.print(pgCnt-1);
out.println(");'> </div>");
}
out.println("</div>");
}
public String getFormName() {
return formName;
}
public void setFormName(String formName) {
this.formName = formName;
}
public String getPaginationParamName() {
return paginationParamName;
}
public void setPaginationParamName(String paginationParamName) {
this.paginationParamName = paginationParamName;
}
public String getCallBack() {
return callBack;
}
public void setCallBack(String callBack) {
this.callBack = callBack;
}
public String getPaginScope() {
return paginScope;
}
public void setPaginScope(String paginScope) {
this.paginScope = paginScope;
}
}
*
*/
package org.metas.pagination;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.Tag;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.metas.dao.result.PaginateParameter;
/**
* @author wzh
*
*/
public class PaginationTag implements BodyTag {
private Log log = LogFactory.getLog(PaginationTag.class);
//TagSupport
private PageContext pageContext;
//attribute
private String paginationParamName;
private String paginScope = "6";
private String formName = "document.forms[0]";
private String callBack = null;
private PaginateParameter paginationParam;
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.BodyTag#doInitBody()
*/
public void doInitBody() throws JspException {
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.BodyTag#setBodyContent(javax.servlet.jsp.tagext.BodyContent)
*/
public void setBodyContent(BodyContent bc) {
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.IterationTag#doAfterBody()
*/
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#doEndTag()
*/
public int doEndTag() throws JspException {
try {
this.writeHtml();
} catch (IOException e) {
log.error(e.getMessage());
}
return EVAL_PAGE;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#doStartTag()
*/
public int doStartTag() throws JspException {
return SKIP_BODY;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#getParent()
*/
public Tag getParent() {
return null;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#release()
*/
public void release() {}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#setPageContext(javax.servlet.jsp.PageContext)
*/
public void setPageContext(PageContext pc) {
this.pageContext = pc;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.Tag#setParent(javax.servlet.jsp.tagext.Tag)
*/
public void setParent(Tag arg0) {}
private int getAsNumber(String param)throws JspTagException{
if(null == param
|| "".equals(param))
return 0;
try{
return Integer.parseInt(param);
}catch(NumberFormatException ex){
log.error(ex.getMessage());
throw new JspTagException(ex.getMessage());
}
}
private void writeScript(JspWriter out, int start, int end, int currentPageNo)throws JspTagException, IOException{
out.println("<script language='javascript'>");
out.println("<!--");
out.print("var start = ");
out.print(start);
out.println(";");
out.print("var end = ");
out.print(end);
out.println(";");
out.println("var callBackFunc;");
if(null != this.callBack){
out.print(" callBackFunc = ");
out.print(this.callBack);
out.println(";");
}
out.print(" var frm = ");out.print(this.formName);out.println(";");
out.println("function setParam(value){");
out.println(" if(callBackFunc){ callBackFunc(value); return;}");
out.print(" if(!frm.pageNo){");
out.println(" var pn = document.createElement('<input type="hidden" name=pageNo value="1">');");
out.println(" frm.appendChild(pn);");
out.println(" }");
out.println(" frm.pageNo.value = value;");
out.println(" frm.submit();");
out.println("}");
out.println("function gotoPrevious(){");
out.print(" setParam(start-1);");
out.println("}");
out.println("function gotoNext(){");
out.print(" setParam(end + 1);");
out.println("}");
out.println("function goto(pageNo){");
out.print(" setParam(pageNo);");
out.println("}");
out.println("-->");
out.println("</script>");
}
private void writeHtml()throws JspTagException, IOException{
if(null == this.pageContext)
return;
paginationParam = (PaginateParameter)this.pageContext.getRequest().getAttribute(this.paginationParamName);
if(null == this.paginationParamName)
return;
JspWriter out = this.pageContext.getOut();
int paginNum = this.getAsNumber(this.getPaginScope());
int pageNo = paginationParam.getCurrentPageNo();
int scope = pageNo / paginNum;
int scopeStart = scope * paginNum;//start from Zero
int scopeEnd = (scope + 1)* paginNum - 1;
int pgCnt = this.paginationParam.getPageCnt();
while(scopeEnd >= pgCnt)
scopeEnd--;
writeScript(out, scopeStart, scopeEnd, pageNo);
out.println("<div>");
out.print("<span>");
out.print(pageNo + 1);
out.print(" of ");
out.print(pgCnt);
out.println("</span>");
if(pgCnt > 1)
out.println("<div id='btn_first' onclick='goto(0);'> </div>");
if(scopeStart != 0){
out.println("<div id='btn_previous' onclick='gotoPrevious()'> </div>");
}
for(;scopeStart<= scopeEnd;scopeStart++){
out.print("<div ><a href='#' onclick='goto(");
out.print(scopeStart);
out.print(")'");
if(pageNo == scopeStart)
out.print(" class='pn_selected' ");
out.println(">");
out.print(scopeStart + 1);
out.println("</a></div>");
}
if(scopeEnd != pgCnt - 1){
out.println("<div id='btn_next' onclick='gotoNext()'> </div>");
}
if(pgCnt > 1){
out.print("<div id='btn_last' onclick='goto(");
out.print(pgCnt-1);
out.println(");'> </div>");
}
out.println("</div>");
}
public String getFormName() {
return formName;
}
public void setFormName(String formName) {
this.formName = formName;
}
public String getPaginationParamName() {
return paginationParamName;
}
public void setPaginationParamName(String paginationParamName) {
this.paginationParamName = paginationParamName;
}
public String getCallBack() {
return callBack;
}
public void setCallBack(String callBack) {
this.callBack = callBack;
}
public String getPaginScope() {
return paginScope;
}
public void setPaginScope(String paginScope) {
this.paginScope = paginScope;
}
}
jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.List"%>
<%@page import="org.metas.dao.result.MailItem"%>
<%@page import="org.metas.dao.result.PaginateParameter"%>
<%@taglib uri="/WEB-INF/pagination.tld" prefix="pagin" %>
<%
PaginateParameter paginate = (PaginateParameter)request.getAttribute("paginate");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>mailing-list</title>
<style>
</style>
</head>
<link href="style/style1.css" type="text/css" rel="stylesheet"/>
<body>
<a href="<%=request.getContextPath()%>/index.jsp">main page</a><br>
<table cellspacing=0 cellpadding=0 border=1 style="width:100%;height:100%;">
<tr style='height:36px;text-align: center;background-color: buttonface;'>
<td>
mail_no
</td>
<td>
LINKED_EVENT
</td>
<td>
SEND_FROM
</td>
<td>
CC
</td>
<td>
SEND_TIME
</td>
</tr>
<col align='center'>
<col align='center'>
<col align='center'>
<col align='center'>
<col align='center'>
<%
List retList = (List)request.getAttribute("result");
if(null != retList){
for(int i=0;i<retList.size();i++){
MailItem item = (MailItem)retList.get(i);
%>
<tr>
<td><%=item.getMailNo() %></td>
<td><%=item.getLinkedEvent() %></td>
<td><%=item.getSendFrom() %></td>
<td><%=item.getCc() %></td>
<td><%=item.getSendTime() %></td>
</tr>
<%
}
}
%>
</table>
<form name="frmPaginate" method="POST" action='<%=request.getContextPath()%>/mailList.do' target='_self'>
<div class="pagination" style="width:100%;height:9px;text-align: center;">
<pagin:pagination paginationParamName="paginate" paginScope="3"></pagin:pagination>
<div>
</form>
</body>
</html>
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.List"%>
<%@page import="org.metas.dao.result.MailItem"%>
<%@page import="org.metas.dao.result.PaginateParameter"%>
<%@taglib uri="/WEB-INF/pagination.tld" prefix="pagin" %>
<%
PaginateParameter paginate = (PaginateParameter)request.getAttribute("paginate");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>mailing-list</title>
<style>
</style>
</head>
<link href="style/style1.css" type="text/css" rel="stylesheet"/>
<body>
<a href="<%=request.getContextPath()%>/index.jsp">main page</a><br>
<table cellspacing=0 cellpadding=0 border=1 style="width:100%;height:100%;">
<tr style='height:36px;text-align: center;background-color: buttonface;'>
<td>
mail_no
</td>
<td>
LINKED_EVENT
</td>
<td>
SEND_FROM
</td>
<td>
CC
</td>
<td>
SEND_TIME
</td>
</tr>
<col align='center'>
<col align='center'>
<col align='center'>
<col align='center'>
<col align='center'>
<%
List retList = (List)request.getAttribute("result");
if(null != retList){
for(int i=0;i<retList.size();i++){
MailItem item = (MailItem)retList.get(i);
%>
<tr>
<td><%=item.getMailNo() %></td>
<td><%=item.getLinkedEvent() %></td>
<td><%=item.getSendFrom() %></td>
<td><%=item.getCc() %></td>
<td><%=item.getSendTime() %></td>
</tr>
<%
}
}
%>
</table>
<form name="frmPaginate" method="POST" action='<%=request.getContextPath()%>/mailList.do' target='_self'>
<div class="pagination" style="width:100%;height:9px;text-align: center;">
<pagin:pagination paginationParamName="paginate" paginScope="3"></pagin:pagination>
<div>
</form>
</body>
</html>
package org.metas.dao.result;
public interface PaginateParameter {
/**
* get item count per-page
* @return
*/
public int getPageSize();
/**
* set item count per-page
* @param size
*/
public void setPageSize(int size);
/**
* get current page number
* @return
*/
public int getCurrentPageNo();
/**
* set current page number
* @param current
*/
public void setCurrentPageNo(int current);
/**
* get total item count in all pages
* @return
*/
public int getTotalItemCnt();
/**
* set total item count
* @param cnt
*/
public void setTotalItemCnt(int cnt);
/**
* count the page
* @return
*/
public int getPageCnt();
/**
* source query SQL for pagination
* @return
*/
public String getQuerySQL();
/**
* get the start paging number
* @return
*/
public int getStartRow();
/**
* get the end paging number
* @return
*/
public int getEndRow();
/**
* mapping for the disabled attribute of next page button for HTML
* @return
*/
public boolean isNextDisabled();
/**
* mapping for the disabled attribute of previous button for HTML
* @return
*/
public boolean isPrevDisabled();
/**
* mapping for the disabled attribute of first button for HTML
* @return
*/
public boolean isFirstDisabled();
/**
* mapping for the disabled attribute of last button for HTML
* @return
*/
public boolean isLastDisabled();
}
public interface PaginateParameter {
/**
* get item count per-page
* @return
*/
public int getPageSize();
/**
* set item count per-page
* @param size
*/
public void setPageSize(int size);
/**
* get current page number
* @return
*/
public int getCurrentPageNo();
/**
* set current page number
* @param current
*/
public void setCurrentPageNo(int current);
/**
* get total item count in all pages
* @return
*/
public int getTotalItemCnt();
/**
* set total item count
* @param cnt
*/
public void setTotalItemCnt(int cnt);
/**
* count the page
* @return
*/
public int getPageCnt();
/**
* source query SQL for pagination
* @return
*/
public String getQuerySQL();
/**
* get the start paging number
* @return
*/
public int getStartRow();
/**
* get the end paging number
* @return
*/
public int getEndRow();
/**
* mapping for the disabled attribute of next page button for HTML
* @return
*/
public boolean isNextDisabled();
/**
* mapping for the disabled attribute of previous button for HTML
* @return
*/
public boolean isPrevDisabled();
/**
* mapping for the disabled attribute of first button for HTML
* @return
*/
public boolean isFirstDisabled();
/**
* mapping for the disabled attribute of last button for HTML
* @return
*/
public boolean isLastDisabled();
}
.pagination div{
width:100%;
height: 9px;
text-align: center;
vertical-align: middle;
display: inline;
}
.pagination #btn_first{
width:20px;
height: 15px;
cursor: hand;
background: url(../image/First.gif) no-repeat center ;
padding: 10px;
display: inline;
}
.pagination #btn_last{
width:20px;
height: 15px;
cursor: hand;
background: url(../image/Last.gif) no-repeat center;
display: inline ;
padding: 10px;
}
.pagination #btn_previous{
width:55px;
height: 15px;
cursor: hand;
background: url(../image/Previous.gif) no-repeat center ;
display: inline;
padding: 20px;
}
.pagination #btn_next{
width:55px;
height: 15px;
cursor: hand;
background: url(../image/Next.gif) no-repeat center;
display: inline ;
padding: 20px;
}
.pagination div div{
display: inline ;
width:30px;
padding: 10px;
}
.pagination div div a{
font-size: 12px;
}
.pagination div span{
float:left;
margin-top: 6px;
height: 100%
vertical-align: bottom;
font-size: 12px;
}
width:100%;
height: 9px;
text-align: center;
vertical-align: middle;
display: inline;
}
.pagination #btn_first{
width:20px;
height: 15px;
cursor: hand;
background: url(../image/First.gif) no-repeat center ;
padding: 10px;
display: inline;
}
.pagination #btn_last{
width:20px;
height: 15px;
cursor: hand;
background: url(../image/Last.gif) no-repeat center;
display: inline ;
padding: 10px;
}
.pagination #btn_previous{
width:55px;
height: 15px;
cursor: hand;
background: url(../image/Previous.gif) no-repeat center ;
display: inline;
padding: 20px;
}
.pagination #btn_next{
width:55px;
height: 15px;
cursor: hand;
background: url(../image/Next.gif) no-repeat center;
display: inline ;
padding: 20px;
}
.pagination div div{
display: inline ;
width:30px;
padding: 10px;
}
.pagination div div a{
font-size: 12px;
}
.pagination div span{
float:left;
margin-top: 6px;
height: 100%
vertical-align: bottom;
font-size: 12px;
}
7,以Oracle为例,分页SQL:
<select id="queryResultItemByPage"
parameterClass="org.metas.dao.result.impl.PaginateParameterImpl"
resultClass="MailItem"
resultMap="mailItem-map"
>
<![CDATA[
SELECT * FROM
(
SELECT r.*, ROWNUM as row_number FROM
( $querySQL$ ) r
WHERE ROWNUM < #endRow#
) WHERE #startRow# <= row_number
]]>
</select>
parameterClass="org.metas.dao.result.impl.PaginateParameterImpl"
resultClass="MailItem"
resultMap="mailItem-map"
>
<![CDATA[
SELECT * FROM
(
SELECT r.*, ROWNUM as row_number FROM
( $querySQL$ ) r
WHERE ROWNUM < #endRow#
) WHERE #startRow# <= row_number
]]>
</select>
8,结束
- jsp tag应用例子: 数据分页显示
- 修改脚本输出(适应IE和firefox) ---答复 jsp tag应用例子: 数据分页显示
- jsp分页显示数据
- jsp分页显示数据
- JSP分页显示数据
- JSP数据库数据分页显示
- JSP 分页显示数据 (Oracle)
- JSP页面分页显示数据
- Java jsp 分页显示数据
- JSP页面分页显示数据
- JSP完成数据分页显示
- Repeater显示数据的例子,带分页
- JSP自定义分页标签TAG
- JSP数据分页显示代码(完整、高效)
- JSP数据库操作例程 - 数据分页显示
- JSP数据库操作例程 - 数据分页显示
- JSP数据库操数据分页显示
- JSP数据库操作数据分页显示
- Windows平台内核级文件访问
- 个人空间双喜临门:频道首页新版发布 AND 1.3.2版正式上线
- Linux快速入门
- ASP.NET中常用的优化性能方法详解(一)
- 什么是SAAS?
- jsp tag应用例子: 数据分页显示
- C# 实现阴阳历算法
- 什么是部分容积效应和周围间隙现象?
- 博客首篇:控制台上“画”个五角星玩玩
- blowfish算法及实现
- oracle-序列(SEQUENCE)
- 一著名软件公司的java 笔试算法题
- 使用mount命令挂载CDROM
- ClickOnce介绍