- 浏览: 66990 次
- 性别:
- 来自: 福州
-
文章分类
最新评论
-
yo8237233:
大侠 少一个函数啊 ~~~~~ 能不能把ChangePage ...
分页工具条自定义标签 -
lf008:
penggle 写道感谢楼主分享!我在运行这些sql的时候,如 ...
oracle——分析函数OVER () -
penggle:
感谢楼主分享!我在运行这些sql的时候,如果over()括号内 ...
oracle——分析函数OVER () -
lf008:
hezhou_0521 写道第一个用order by 不是更好 ...
oracle——分析函数OVER () -
hezhou_0521:
第一个用order by 不是更好吗?
oracle——分析函数OVER ()
我一直以来就用这个分页工具条自定义标签,你可以往分页工具条标签类里面添加你想要的样式,在页面上只需1句话就能实现分页功能。
下面2个附件分别是分页标签类和标签描述文件。
分页标签类代码如下
标签描述文件
在页面里这样调用
可能是我表述的有问题吧,其实就是分页工具条,分页数据是在service层调用查询工具类查出来,是不可能在分页工具条里做数据查询,这样必然导致分层不明。
下面2个附件分别是分页标签类和标签描述文件。
分页标签类代码如下
package com.jn0813a.bss.commons.web; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; /** * 分页工具条标签类 * * 功能:获取url地址所有参数、生成分页工具条 * * @author wuka * */ public class PageTag extends TagSupport { private static final long serialVersionUID = 9091187423099882366L; public static final int USER_PAGESIZE = 5;// 默认每页记录数 public static final String CLASS_STYLE_NAME = "image"; // 默认样式 private int currentPage; // 当前页 private int totalPage; // 总页数 private int pageCount = 0; // 一共有多少页 private int pageSize; // 每页显示页数 private String action; // 请求URL private String className; // 样式名 private HttpServletRequest request; // 请求 public static final String Text = "text"; public static final String Image = "image"; public static final String BbsText = "bbstext"; public static final String BbsImage = "bbsimage"; /** * 实现分页的方法. */ @Override public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); request = (HttpServletRequest) pageContext.getRequest(); if (new Integer(pageSize) == null) { throw new JspException("outpage标签中缺乏pagesize属性!"); } else if (pageSize == 0) { throw new JspException("outpage标签中的pagesize属性无值!"); } if (new Integer(totalPage) == null) { throw new JspException("outpage标签中缺乏rowcount属性!"); } if (new Integer(currentPage) == null) { throw new JspException("outpage标签中缺乏currpagenum属性!"); } if (action == null) { throw new JspException("outpage标签中缺乏action属性!"); } else if (action.length() == 0) { throw new JspException("outpage标签中的action属性无值!"); } // 判断页面边界 if (this.currentPage == Integer.MAX_VALUE || this.currentPage > getPagecount()) { this.currentPage = getPagecount(); } // 如果页面标签中没写className属性,则应用默认的按钮样式 if (className == null || className.length() == 0) { className = CLASS_STYLE_NAME; } // 获取总页数 pageCount = this.getPagecount(); try { out.println(pagetool(className)); } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } @Override public int doAfterBody() throws JspException { return super.doAfterBody(); } @Override public int doEndTag() throws JspException { return super.doEndTag(); } @Override public void release() { super.release(); } /** * 获取总页数. * * @return int 返回总记录数. */ public int getPagecount() { try { this.pageCount = ((this.totalPage - 1) / this.pageSize) + 1; } catch (Exception ex) { this.pageCount = 0; } return this.pageCount; } /** * 得到所有的参数查询字符串. * * @param request * http请求. * @return 返回参数字符串. */ private String getParams(HttpServletRequest request) { Enumeration paramnames = request.getParameterNames(); StringBuffer sb = new StringBuffer(); while (paramnames.hasMoreElements()) { String paramname = (String) paramnames.nextElement(); if (paramname.equals("currentpage")) continue; String[] paramvalues = request.getParameterValues(paramname); if (null != paramvalues) { for (int i = 0; i < paramvalues.length; i++) { sb.append("&" + paramname + "=" + paramvalues[i]); } } } return sb.toString(); } /** * 分页工具条 * * @param fileName * String * @return String */ public String pagetool(String flag) { if (flag == null) flag = className; StringBuffer str = new StringBuffer(); String url = action + getParams(request); // getParamUrl(); // //url?参数123... int ProPage = this.currentPage - 1; int Nextpage = this.currentPage + 1; // 文字的分页 if (flag.equals(PageTag.Text)) { str.append("<form method='post' name='pageform' action=''>"); str .append("<table width='100%' border='0' cellspacing='0' cellpadding='0'>"); str.append("<tr>"); str.append("<td width='3%'> </td>"); str.append("<td height='26' align='right'>"); str.append("共有记录" + this.totalPage + "条 "); str.append("共" + this.pageCount + "页 "); str.append("每页" + this.pageSize + "记录 "); str.append("现在" + this.currentPage + "/" + this.pageCount + "页"); str.append("</td><td>"); if (this.currentPage > 1) { str.append(" <a href='" + url + "¤tpage=1'>首页</a>"); str.append(" "); str.append("<a href='" + url + "¤tpage=" + ProPage + "'>上一页</a>"); str.append(" "); } else { str.append(" 首页"); str.append(" "); str.append("上一页"); str.append(" "); } if (this.currentPage < this.pageCount) { str.append("<a href='" + url + "¤tpage=" + Nextpage + "'>下一页</a>"); str.append(" "); } else { str.append("下一页"); str.append(" "); } if (this.pageCount > 1 && this.currentPage != this.pageCount) { str.append("<a href='" + url + "¤tpage=" + pageCount + "'>尾页</a>"); str.append(" "); } else { str.append("尾页"); str.append(" "); } str.append("转到"); str .append("<select name='currentpage' onchange='javascript:ChangePage(this.value);'>"); for (int j = 1; j <= pageCount; j++) { str.append("<option value='" + j + "'"); if (currentPage == j) { str.append("selected"); } str.append(">"); str.append("" + j + ""); str.append("</option>"); } str.append("</select>页"); str.append("</td><td width='3%'> </td></tr></table>"); str.append("<script language='javascript'>"); str.append("function ChangePage(testpage){"); str.append("document.pageform.action='" + url + "¤tpage='+testpage+'';"); str.append("document.pageform.submit();"); str.append("}"); str.append("</script>"); str.append("</form>"); } else if (flag.equals(PageTag.Image)) { StringBuffer buffer = new StringBuffer(""); buffer.append(this.getStyle()); buffer .append("<form method='post' name='pageform' action=''><table cellspacing='0' style='margin:0 auto;margin-top:10px;' align='right'><tr><td><div class='splitpagebox'>"); buffer .append("<span class='splitpagebox_pre1'><a href='#' disabled=\"disabled\"><font color=\"gray\">每页" + this.pageSize + "条记录</font></a></span>"); buffer .append("<span class='splitpagebox_pre1'><a href='#' disabled=\"disabled\"><font color=\"gray\">共有" + this.totalPage + "条记录</font></a></span>"); buffer .append("<span class='splitpagebox_pre'><a href='#' disabled=\"disabled\">" + this.currentPage + "/" + this.pageCount + "</a></span>"); if (this.currentPage > 1) { buffer .append("<span class='splitpagebox_pre'><a href='" + url + "¤tpage=1'>第一页</a></span><span class='splitpagebox_pre'><a href='" + url + "¤tpage=" + ProPage + "'>上一页</a></span>"); } else { buffer .append("<span class='splitpagebox_pre'><a href=\"#1\" disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">第一页</font> </a></span><span class='splitpagebox_pre'><a href=\"#1\" id='_preHref' disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">上一页</font> </a></span>"); } int startPage = ((this.currentPage - 1) / 5 * 5) + 1; int endPage = ((this.currentPage - 1) / 5 * 5) + 5; if (endPage > this.pageCount) { endPage = this.pageCount; } for (int p = startPage; p <= endPage; p++) { if (p == this.currentPage) { buffer.append("<span class='splitpagebox_num_nonce'>" + p); } else { buffer.append("<span class='splitpagebox_num'>"); buffer.append("<a href='" + url + "¤tpage=" + p + "'>"); buffer.append(p + "</a>"); } buffer.append("</span>"); } if (this.currentPage < this.pageCount) { buffer .append("<span class='splitpagebox_next'><a href='" + url + "¤tpage=" + Nextpage + "'>下一页</a></span><span class='splitpagebox_next'><a href='" + url + "¤tpage=" + pageCount + "'>尾 页</a></span>"); } else { buffer .append("<span class='splitpagebox_next'><a href=\"#1\" disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">下一页</font> </a></span><span class='splitpagebox_next'><a href=\"#1\" id='_preHref' disabled=\"disabled\" onClick=\"return false;\"><font color=\"gray\">尾 页</font> </a></span>"); } buffer .append("<span> 第<input type=\"text\" size=\"3\" name=\"currentpage\" id=\"go_to\"/>页</span><span class='splitpagebox_num'><a href=\"javascript:ChangePage(document.all.go_to.value);\" target='mainframe'>转入</a> </span>"); // buffer.append("</td></tr></table></td></tr></table>"); buffer.append("</div></td></tr></table>"); buffer.append("<script language='javascript'>"); buffer.append("function ChangePage(testpage){"); buffer.append("if(testpage==''){alert('无效页数');return;}"); buffer.append("if(testpage=='0'){testpage='1';}"); buffer.append("var Number='0123456789';"); buffer.append("for(var x=0;x<testpage.length;x++){"); buffer.append("var c=testpage.charAt(x);"); buffer.append("if(Number.indexOf(c)==-1){alert('无效页数');return;}"); buffer.append("}"); buffer.append("document.pageform.action='" + url + "¤tpage='+testpage+'';"); buffer.append("document.pageform.submit();"); buffer.append("}"); buffer.append("</script>"); buffer.append("</form>"); return buffer.toString(); } else if (flag.equals(PageTag.BbsText)) { /** * 论坛形式的分页[直接以数字方式体现] */ str .append("<table width='100%' border='0' cellspacing='0' cellpadding='0'>"); str.append("<tr>"); str.append("<td width='3%'> </td>"); str.append("<td height='26' align='center'>"); str.append("记录" + this.totalPage + "条 "); str.append("共" + this.pageCount + "页 "); str.append("每页" + this.pageSize + "记录 "); str.append("现在" + this.currentPage + "/" + this.pageCount + "页"); str.append("</td><td align='left'>"); // 设定是否有首页的链接 if (this.currentPage > 1) { str.append("<a href='" + url + "¤tpage=1'>首页</a>"); str.append(" "); } // 设定是否有上一页的链接 if (this.currentPage > 1) { str.append("<a href='" + url + "¤tpage=" + ProPage + "'>上一页</a>"); str.append(" "); } // 如果总页数只有10的话 if (this.pageCount <= 10) { for (int i = 1; i <= this.pageCount; i++) { if (this.currentPage == i) { str.append("<font color=red>[" + i + "]</font> "); } else { str.append("<a href='" + url + "¤tpage=" + i + "'>" + i + "</a> "); } } } else { // 说明总数有超过10页 // 制定特环的开始页和结束页 int endPage = this.currentPage + 4; if (endPage > this.pageCount) { endPage = this.pageCount; } int startPage = 0; if (this.pageCount >= 8 && this.currentPage >= 8) { startPage = this.currentPage - 5; } else { // 表示从第一页开始算 startPage = 1; } System.out.println(startPage); System.out.println(endPage); for (int i = startPage; i <= endPage; i++) { if (this.currentPage == i) { str.append("<font color=red>[" + i + "]</font> "); } else { str.append("<a href='" + url + "¤tpage=" + i + "'>" + i + "</a> "); } } } // 设定是否有下一页的链接 if (this.currentPage < this.pageCount) { str.append("<a href='" + url + "¤tpage=" + Nextpage + "'>下一页</a>"); str.append(" "); } // 设定是否有尾页的链接 if (this.pageCount > 1 && this.currentPage != this.pageCount) { str.append("<a href='" + url + "¤tpage=" + pageCount + "'>尾页</a>"); str.append(" "); } str.append("</td><td width='3%'> </td></tr></table>"); } else if (flag.equals(PageTag.BbsImage)) { /** * 论坛形式的分页[以图片的方式体现] */ // 设定分页显示的CSS str.append("<style>"); str .append("BODY {FONT-SIZE: 13px;FONT-FAMILY:宋体;WIDTH: 60%; PADDING-LEFT: 25px;}"); str .append("DIV.meneame {PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 80%; PADDING-BOTTOM: 3px; MARGIN: 3px; COLOR: #ff6500; PADDING-TOP: 3px; TEXT-ALIGN: center}"); str .append("DIV.meneame A {BORDER-RIGHT: #ff9600 1px solid; PADDING-RIGHT: 7px; BACKGROUND-POSITION: 50% bottom; BORDER-TOP: #ff9600 1px solid; PADDING-LEFT: 7px; BACKGROUND-IMAGE: url('" // + this.request.getContextPath() + "/meneame.jpg'); PADDING-BOTTOM: 5px; BORDER-LEFT: #ff9600 1px solid; COLOR: #ff6500; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ff9600 1px solid; TEXT-DECORATION: none}"); str .append("DIV.meneame A:hover {BORDER-RIGHT: #ff9600 1px solid; BORDER-TOP: #ff9600 1px solid; BACKGROUND-IMAGE: none; BORDER-LEFT: #ff9600 1px solid; COLOR: #ff6500; BORDER-BOTTOM: #ff9600 1px solid; BACKGROUND-COLOR: #ffc794}"); str .append("DIV.meneame SPAN.current {BORDER-RIGHT: #ff6500 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #ff6500 1px solid; PADDING-LEFT: 7px; FONT-WEIGHT: bold; PADDING-BOTTOM: 5px; BORDER-LEFT: #ff6500 1px solid; COLOR: #ff6500; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ff6500 1px solid; BACKGROUND-COLOR: #ffbe94}"); str .append("DIV.meneame SPAN.disabled {BORDER-RIGHT: #ffe3c6 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #ffe3c6 1px solid; PADDING-LEFT: 7px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ffe3c6 1px solid; COLOR: #ffe3c6; MARGIN-RIGHT: 3px; PADDING-TOP: 5px; BORDER-BOTTOM: #ffe3c6 1px solid}"); str.append("</style>"); str.append("<div class=\"meneame\">"); // 判定是否有上一页 if (this.currentPage > 1) { str.append("<a href='" + url + "¤tpage=1' hidefocus=\"true\">首页</a>"); str.append(" "); str.append("<a href='" + url + "¤tpage=" + ProPage + "' hidefocus=\"true\">上一页</a>"); str.append(" "); } else { str.append("<span class=\"disabled\">首页</span>"); str.append(" "); str.append("<span class=\"disabled\">上一页</span>"); str.append(" "); } // 显示中间的图片 if (this.pageCount <= 10) { for (int i = 1; i <= this.pageCount; i++) { if (this.currentPage == i) { str.append("<span class=\"current\">" + i + "</span>"); } else { str.append("<a href='" + url + "¤tpage=" + i + "' hidefocus=\"true\">" + i + "</a> "); } } } else { // 说明总数有超过10页 // 制定特环的开始页和结束页 int endPage = this.currentPage + 4; if (endPage > this.pageCount) { endPage = this.pageCount; } int startPage = 0; if (this.pageCount >= 8 && this.currentPage >= 8) { startPage = this.currentPage - 5; } else { // 表示从第一页开始算 startPage = 1; } System.out.println(startPage); System.out.println(endPage); for (int i = startPage; i <= endPage; i++) { if (this.currentPage == i) { str.append("<span class=\"current\">" + i + "</span>"); } else { str.append("<a href='" + url + "¤tpage=" + i + "' hidefocus=\"true\">" + i + "</a> "); } } } // 判断下一页和尾页 if (this.currentPage < this.pageCount) { if (this.currentPage < this.pageCount - 10) { str.append("..."); str.append("<a href='" + url + "¤tpage=" + (this.pageCount - 1) + "' hidefocus=\"true\">" + (this.pageCount - 1) + "</a> "); str.append("<a href='" + url + "¤tpage=" + this.pageCount + "' hidefocus=\"true\">" + this.pageCount + "</a> "); } str.append("<a href='" + url + "¤tpage=" + Nextpage + "' hidefocus=\"true\">下一页</a>"); str.append(" "); } else { str.append("<span class=\"disabled\">下一页</span>"); str.append(" "); } if (this.pageCount > 1 && this.currentPage != this.pageCount) { str.append("<a href='" + url + "¤tpage=" + pageCount + "' hidefocus=\"true\">尾页</a>"); str.append(" "); } else { str.append("<span class=\"disabled\">尾页</span>"); str.append(" "); } str.append("</div>"); } // url = ""; return str.toString(); } // private StringBuffer style=new StringBuffer(""); private StringBuffer getStyle() { StringBuffer style = new StringBuffer(""); style .append("<style type=\"text/css\">") .append( ".splitpagebox{overflow:hidden; zoom:1; font-size:12px; font-family:arial,helvetica,sans-serif;}") .append( ".splitpagebox span{float:left; margin-right:2px; overflow:hidden; text-align:center; background:#fff;}") .append( ".splitpagebox span a{display:block; overflow:hidden; zoom:1; _float:left;}") .append( ".splitpagebox span.splitpagebox_pre_nolink{border:1px #ddd solid; width:53px; height:21px; line-height:21px; text-align:center; color:#999; cursor:default;}") .append( ".splitpagebox span.splitpagebox_pre{color:#3568b9; height:23px;}") .append( ".splitpagebox span.splitpagebox_pre a,.splitpagebox span.splitpagebox_pre a:visited,.splitpagebox span.splitpagebox_next a,.splitpagebox span.splitpagebox_next a:visited{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; text-align:center; width:53px; cursor:pointer; height:21px; line-height:21px;}") .append( ".splitpagebox span.splitpagebox_pre1 a{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; text-align:center; width:90px; cursor:pointer; height:21px; line-height:21px;}") .append( ".splitpagebox span.splitpagebox_pre a:hover,.splitpagebox span.splitpagebox_pre a:active,.splitpagebox span.splitpagebox_next a:hover,.splitpagebox span.splitpagebox_next a:active{color:#363636; border:1px #2e6ab1 solid;}") .append( ".splitpagebox span.splitpagebox_num_nonce{padding:0 8px; height:23px; line-height:23px; _height:21px; _line-height:21px; color:#fff; cursor:default; background:#296cb3; font-size:85%;}") .append( ".splitpagebox span.splitpagebox_num{color:#3568b9; height:23px; font-size:85%;}") .append( ".splitpagebox span.splitpagebox_num a,.splitpagebox span.splitpagebox_num a:visited{border:1px #9aafe5 solid; color:#3568b9; text-decoration:none; padding:0 8px; cursor:pointer; height:21px; line-height:21px;}") .append( ".splitpagebox span.splitpagebox_num a:hover,.splitpagebox span.splitpagebox_num a:active{border:1px #2e6ab1 solid;color:#363636;}") .append( ".splitpagebox span.splitpagebox_num_ellipsis{color:#393733; width:28px; background:none; font-size:85%; line-height:29px;}") .append( ".splitpagebox span.splitpagebox_next_nolink{border:1px #ddd solid; width:53px; height:21px; line-height:21px; text-align:center; color:#999; cursor:default;}") .append("</style>"); return style; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } public int getPageCount() { return this.getPagecount(); } }
标签描述文件
<?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>page</shortname> <uri>/page</uri> <!-- 分页标签 --> <tag> <name>outpage</name> <tagclass>com.jn0813a.bss.commons.web.PageTag</tagclass> <bodycontent>JSP</bodycontent> <attribute> <name>currentPage</name> <!-- 当前页数 --> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>totalPage</name> <!-- 总数 --> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>pageSize</name> <!-- 每页条数 --> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>action</name> <!-- URL请求路径 --> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>className</name> <!-- 样式 --> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>
在页面里这样调用
<page:outpage pageSize="5" totalPage="${requestScope.pageBean.totalPage}" currentPage="${requestScope.pageBean.currentPage}" action="${path}${requestScope.action}"></page:outpage>
- PageTag.rar (4.5 KB)
- 下载次数: 74
- page.rar (590 Bytes)
- 下载次数: 62
评论
3 楼
yo8237233
2013-09-05
大侠 少一个函数啊 ~~~~~ 能不能把ChangePage 贴出来啊~~~ 谢谢
2 楼
lf008
2010-01-14
chenshuang1227 写道
分页的数据呢,你的分页标签只有一个工具条,数据也没有。
可能是我表述的有问题吧,其实就是分页工具条,分页数据是在service层调用查询工具类查出来,是不可能在分页工具条里做数据查询,这样必然导致分层不明。
1 楼
chenshuang1227
2009-10-20
分页的数据呢,你的分页标签只有一个工具条,数据也没有。
相关推荐
- 自定义标签需要生成HTML代码来呈现分页条。例如,淘宝分页样式可能包括上一页、下一页、数字链接等元素,这些都需要在Java类中动态生成。 - 考虑到不同的分页样式,可以设计多个标签,每个对应一种风格,或者...
总之,自定义标签是Web开发中的重要工具,尤其在处理复杂逻辑和重复任务时,能够显著提高开发效率和代码质量。对于熟悉自定义标签,不仅能够提升开发技能,还能更好地理解和优化Web应用的架构。通过学习和使用自定义...
在JSP中,自定义标签库(Tag Library)是一种强大的工具,它可以让我们创建自己的标签,以更简洁、可读的方式来处理复杂的逻辑。对于分页查询,我们可以创建一个名为`<condition-pager>`的自定义标签,它接受查询...
在Struts2框架中,我们可以创建一个自定义标签库,包含用于分页的TLD(Tag Library Descriptor)文件,定义标签的属性如当前页码、每页显示条数等。然后,编写对应的Action类,该类将处理分页逻辑,包括计算总页数、...
在使用这个名为`pageTag`的分页工具条插件时,开发者首先需要将其导入到项目中,然后在JSP页面中引用相关的标签库。通过配置参数,如每页显示的记录数,以及当前页码,插件会自动生成相应的HTML结构并渲染在页面上。...
在 Struts 自制标签分页封装的场景中,我们通常是为了提高应用的可维护性和易用性,通过自定义标签来实现页面的动态分页功能。在不依赖 Struts 1.3 框架包的情况下,我们可以自己编写相关的组件来达到相同的效果。 ...
本项目结合了JSP自定义标签、JPA(Java Persistence API)、Hibernate ORM框架以及Struts2框架,实现了高效且灵活的分页功能。下面我们将详细探讨这些技术及其在分页中的应用。 首先,JSP自定义标签(Custom Tags)...
Java 分页标签是一种自定义标签库,用于在Java Web应用程序中实现页面的分页功能。在Web开发中,当数据量庞大时,一次性加载所有...通过理解上述核心概念,开发者可以更好地利用这样的分页工具,优化他们的Web应用。
自定义分页控件的目的是为了满足特定项目需求,可能需要添加额外功能,如跳转到第一页、最后一页的按钮,或者每页显示条数的下拉框等。通过理解和掌握以上知识点,我们可以创建出高效且易于维护的自定义分页控件。在...
标题中的“jsp分页显示标签”指的是JSP中可以使用的特定标签库,如JSTL(JavaServer Pages Standard Tag Library)或自定义标签,来简化分页逻辑的实现。JSTL的`<c:forEach>`标签可以用于循环输出分页按钮,而`...
本主题围绕“自定义通用分页一行代码解决分页问题”展开,介绍如何通过提供的BaseDao、PageBean分页工具类以及PageBeanTag助手类实现高效且简洁的分页功能。 首先,`BaseDao`是数据库操作的基类,通常包含了基本的...
本文将详细介绍一个自定义的Java分页工具类`PageUtils`,并探讨其在Struts、Spring、MyBatis和JSP等框架和技术中的具体应用。 #### 二、分页工具类`PageUtils` `PageUtils`类是一个实现了`Serializable`接口的Java...
**JPager 分页标签库详解** 在Web开发中,数据分页是一项常见且重要的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,我们通常会将数据分页展示。`jpager` 是一个专为 JSP 页面设计的分页标签库,它...
总结起来,"菜鸟用标签做分页"是一个关于使用JSP标签实现Web应用分页功能的教学主题,它涵盖了分页的基本原理、自定义标签的使用以及前后端的交互过程。对于初学者来说,掌握这部分知识对于提升Web开发技能非常有...
`jsp分页标签JPage`是一个在Java Web开发中常见的自定义标签库,用于实现页面数据的分页展示。在这个项目中,作者提供了两种不同的分页样式:一种是基础的“上一页”和“下一页”的切换,另一种则是模仿百度搜索结果...
在JSP中,自定义标签库(Tag Library)是一种强大的工具,可以创建可重用的UI组件,例如我们的分页组件。 分页标签通常会包含以下关键元素: 1. **总记录数**:这是数据库中待分页的数据总数,用于计算总页数。 2....
本资源包“分页工具-jsp中分页集成jar包”提供了在JSP(JavaServer Pages)环境中进行分页操作的解决方案。下面将详细解释这个包中的核心组件和使用方法。 1. **pager-taglib.jar**: 这是一个包含自定义标签库的...
在JSP中,我们可以利用自定义标签库(Tag Library)或者第三方组件如JSTL(JavaServer Pages Standard Tag Library)的`<c:forEach>`和`<fmt:formatNumber>`等标签来实现分页。 1. **JSP自定义标签库:** 开发者...