JSP中分页条中page:page是什么意思?jsp 如何将查询结果实现分页,最好简单易懂…
本文目录
- JSP中分页条中page:page是什么意思
- jsp 如何将查询结果实现分页,最好简单易懂…
- jsp 分页显示
- 在JSP中如何实现分页技术啊
- jsp如何 实现 内容分页
- JSP分页问题
- jsp中的分页怎么写
- jsp如何用c标签实现分页
- jsp中如何分页显示查询到的数据
- jsp 分页怎么传值
JSP中分页条中page:page是什么意思
JSP中定义翻页的标签是:page:page
针对上述代码:
第一个page是简称
《description》xxxxxx《/description》《tlib-version》2.0《/tlib-version》《short-name》page《/short-name》《uri》/page《/uri》
第二个page是定义的标签名称
《tag》《name》page《/name》《tag-class》com.xxxxx.xxxx.xxxxxx.xxxxxx.tags.PagerTag《/tag-class》《body-content》JSP《/body-content》《attribute》《name》page《/name》《required》true《/required》《rtexprvalue》true《/rtexprvalue》《/attribute》《/tag》
jsp 如何将查询结果实现分页,最好简单易懂…
jsp中分页最快捷的办法是用分页组件:分页组件代码使用taglib实现的:《%@ tag language="java" pageEncoding="UTF-8"%》 《%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%》 《%@ attribute name="curIndex" type="java.lang.Long" required="true"%》 《%@ attribute name="pageSize" type="java.lang.Long" required="true"%》 《%@ attribute name="pagerRange" type="java.lang.Long" required="true"%》 《%@ attribute name="totalPage" type="java.lang.Long" required="true"%》 《%@ attribute name="formId" type="java.lang.String" required="true"%》 《% long begin = Math.max(1, curIndex - pagerRange/2); long end = Math.min(begin + (pagerRange-1),totalPage); request.setAttribute("p_begin", begin); request.setAttribute("p_end", end); %》 《table class="pager"》 《tr》 《% if (curIndex!=1){%》 《td》《a href="javascript:gotoPage(1)"》首页《/a》《/td》 《td》《a href="javascript:gotoPage(《%=curIndex-1%》)"》上一页《/a》《/td》 《%}else{%》 《td class="disabled"》《a href="#"》首页《/a》《/td》 《td class="disabled"》《a href="#"》上一页《/a》《/td》 《%}%》 《c:forEach var="i" begin="${p_begin}" end="${p_end}"》 《c:choose》 《c:when test="${i == curIndex}"》 《td class="active"》《a href="#"》${i}《/a》《/td》 《/c:when》 《c:otherwise》 《td》《a href="javascript:gotoPage(${i})"》${i}《/a》《/td》 《/c:otherwise》 《/c:choose》 《/c:forEach》 《% if (curIndex!=totalPage){%》 《td》《a href="#"》下一页《/a》《/td》 《td》《a href="#"》末页《/a》《/td》 《%}else{%》 《td class="disabled"》《a href="javascript:gotoPage(《%=curIndex+1%》)"》下一页《/a》《/td》 《td class="disabled"》《a href="javascript:gotoPage(《%=totalPage%》)"》末页《/a》《/td》 《%}%》 《td》《a》共${totalPage}页《/a》《/td》 《td class="input_li"》跳转到:《input type="text" id="p_pageIndex" size="2" value="《c:out value="${pageIndex}"/》"/》页 《input type="button" id="gotoBtn" onclick="gotoPageByBtn()" value="GO"/》《/td》 《td class="input_li"》 每页: 《select id="p_pageSizeSelect" onchange="gotoPage(《%=curIndex%》)"》 《option value="10" 《c:if test="${pageSize==10}"》selected《/c:if》》10条《/option》 《option value="20" 《c:if test="${pageSize==20}"》selected《/c:if》》20条《/option》 《option value="50" 《c:if test="${pageSize==50}"》selected《/c:if》》50条《/option》 《/select》 《/td》 《/tr》 《/table》 jsp中使用方法:《%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%》《%@ taglib uri="/WEB-INF/tld/fmt.tld" prefix="fmt"%》《%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%》《head》《style》《!--分页样式--》.pager { font: 12px Arial, Helvetica, sans-serif;}.pager a {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;margin-right:2px;line-height:30px;vertical-align:middle;}.pager .active a{color:red;border:none;}.pager a:visited {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;}.pager a:hover {color: #fff; background: #ffa501;border-color:#ffa501;text-decoration: none;}.pager .input_li{padding: 1px 6px;}《/style》《script》《!--分页跳转脚本--》function gotoPage(pageIndex){var queryForm = document.getElementById("queryForm");var action = queryForm.action;var pageSize = document.getElementById("p_pageSizeSelect").value;action += "?pageIndex=" + pageIndex + "&pageSize=" + pageSize;//alert(action);queryForm.action = action;queryForm.submit();}function gotoPageByBtn(){var pageIndex = document.getElementById("p_pageIndex").value;var pageIndexInt = parseInt(pageIndex);var totalPage = ${totalPage}; if(pageIndexInt》0 && pageIndexInt《totalPage){gotoPage(pageIndex);}else{alert("输入页数超出范围!");}}《/script》《/head》《body》《form id="queryForm" action="${basePath}/log/list" method="post"》《table》《tr》《td》用户名:《/td》《td》《input type="text" name="userName" value="《c:out value="${userName}"/》"/》 《/td》《td》《input type="submit" text="查询"/》《/td》《/tr》《/table》《/form》《tags:pager pagerRange="10" pageSize="${pageSize}" totalPage="${totalPage}" curIndex="${pageIndex}" formId="queryForm"》《/tags:pager》《table class="border"》《thead》《tr》《th width="100"》用户名称《/th》《th width="500"》操作内容《/th》《th width="200"》操作时间《/th》《/tr》《/thead》《tbody》《c:forEach items="${logList}" var="log"》《tr》《td》${log.userName}《/td》《td》${log.result}《/td》《td》《fmt:formatDate value="${log.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/》《/td》《/tr》《/c:forEach》《/tbody》《/table》《tags:pager pagerRange="10" pageSize="${pageSize}" totalPage="${totalPage}" curIndex="${pageIndex}" formId="queryForm"》《/tags:pager》《/body》
jsp 分页显示
包com.chinabyte.common; 进口java.util.Vector中; / ** *公共列表 * / 公共类CommonList扩展向量{/ ** *页 * / 公众诠释由pageNo; / ** *的每页 * / 公众诠释pageSize的记录数; / ** *总页数 * / 公众诠释页次; / ** *总记录数 * / 公众诠释RECNUM; / ** *开始记录数 * / 公众诠释startPos; / ** *结束记录 * / 公众诠释endpos的; / ** *默认页面大小 * / 公众最终静态诠释defaultPageSize = 20; 公共静态最终字符串COMMONLIST_TAG_KEY =“commonlist_tag_key”; 公共CommonList (){公共CommonList(INT由pageNo,诠释pageSize的){如果(由pageNo 《0){由pageNo = 0; } this.pageNo =由pageNo; this.pageSize = pageSize的; } / ** *计算其他属性 *记录@参数RECNUM总数 * @参数由pageNo此页 * @参数pageSize的页面大小 * / 公共CommonList(INT RECNUM,诠释由pageNo,整型的pageSize){计算(RECNUM,由pageNo,pageSize的); } / ** *计算其他属性 * @参数RECNUM总记录数 * / 公共无效计算(INT RECNUM){计算(RECNUM,由pageNo,pageSize的); } / ** *计算其他属性记录@参数RECNUM总数 * @参数由pageNo此页 * @参数pageSize的页面大小 * / 公共无效计算(INT RECNUM,诠释由pageNo,诠释pageSize的){如果(RECNUM 《1)的回报; 如果(页地址== 0)返回; 如果(由pageNo 《1)由pageNo = 1; this.pageNo =由pageNo; this.pageSize = pageSize的; this.recNum = RECNUM; 如果(页地址》 0){如果(RECNUM%pageSize的》 0)页次= RECNUM / pageSize的+ 1; 页次= RECNUM / pageSize的; 如果(由pageNo》页次)这一点。由pageNo =页次; 如果(this.pageNo 《1)this.pageNo = 1; startPos =(this.pageNo - 1)* pageSize的+ 1; endpos的= this.pageNo * pageSize的; }否则{ startPos = 0; endpos的= RECNUM; } } / ** *显示分页标记 * @参数CL * @返回结果列表 * / 公共静态字符串GETPAGE(CommonList CL){返回GETPAGE(CL ,10,NULL); } / ** *显示分页标记 * @参数CL名单 * @参数页次 * @返回结果的数量 * / 公共静态字符串GETPAGE(CommonList CL,诠释页次)显示{返回GETPAGE(CL,页次,NULL); } / ** *显示分页标记 * @参数CL名单 * @参数页次数 * @参数strPage分页显示参数 * @返回结果 * / 公共静态字符串GETPAGE(CommonList CL,诠释页次,弦乐strPage){字符串右值= NULL; StringBuffer的SB =新的StringBuffer( ); 尝试{如果(CL = NULL){如果(strPage = NULL && strPage.equals(“!”)) strPage =!“,\” “+ strPage +”\“”; strPage =“”; 如果(页次《1)页次= 10; sb.append(“共的记录,“+ cl.pageNo +”;/“+ cl.pageNum +”页“); 如果(cl.pageNo 》 1){ sb.append(“。 | 的 ”); } 整数currentNum =(cl.pageNo%页次== 0(cl.pageNo /页次) - 1:(整型? )(cl.pageNo /页次))*页次; 如果(currentNum 《0)currentNum = 0; 如果(cl.pageNo》页次)sb.append(“ ... ”); 为(int i = 0;我 cl.pageNum | | cl.pageNum 《2)破; sb.append(““+(currentNum + I + 1 == cl.pageNo?” “+(currentNum + I + 1)+” “:(currentNum + I + 1)+”“)+”“); } 如果(cl.pageNum》(currentNum +页次))某人。追加(“ ... ”); 如果(cl.pageNo 《CL。页次){ sb.append(“》 的》 | ”); } 右值= sb.toString(); }否则{右值=“”; } }赶上(例外五){右值=“”; } {终于 SB = NULL; } / / CL =空; 返回右值; } 公共字符串的toString(){回报“com.chinabyte.common.CommonList {”+ “由pageNo =“+由pageNo + ”这样,pageSize =“+ pageSize的+ 」,页次=”+页次+ “RECNUM =”+ RECNUM + “,startPos =” + startPos + “endpos的=”+ endpos的+ “}”; } / *请记住以下注释* / / * JS网页代码功能tunePage(toPageNo,由pageNo){尝试{变种topage = 1;!如果(typeof运算(toPageNo)=“数字”| | toPageNo 《 1)topage = 1; 否则topage = toPageNo; 变种孩子= window.location.searchSubject; 如果(typeof运算(由pageNo)==“未定义”| |由pageNo ==“” )由pageNo =“由pageNo”; 变种新闻=“”; 如果(olds.length》 1){孩子= olds.substring(1,olds.length); 无功阵列= olds.split(“&”); 为(VAR = 0;我 {如果 1){新闻+ =“和”+数组由; } } 如果(news.length》 1){新闻=“?” + news.substring(1,news.length)+“&”+由pageNo +“=”+ topage; } 其他{新闻+ =“?”由pageNo +“=”+ topage; } } 其他{新闻= +由pageNo +“=”+ topage“?”; } =视音频+ window.location.pathname新闻; } 赶上(五){ =视音频+ window.location.pathname视音频。 searchSubject; } } 函数s所有(thisObj,DOBJ){尝试{变种L =的eval(DOBJ +“长”; ); 如果(typeof运算(L)==“未定义”){的eval(DOBJ)检查= thisObj.checked;。 其他{为(VAR = 0;我《L,我+ +){如果的eval(DOBJ +“(EVAL(DOBJ +”“)检查= thisObj.checked;。 赶上(五){} } * / }
在JSP中如何实现分页技术啊
title: JSP分页技术实现 summary:使用工具类实现通用分页处理 author: evan_zhao email: evan_zhao@hotmail.com 目前比较广泛使用的分页方式是将查询结果缓存在HttpSession或有状态bean中,翻页的时候从缓存中取出一页数据显示。这种方法有两个主要的缺点:一是用户可能看到的是过期数据;二是如果数据量非常大时第一次查询遍历结果集会耗费很长时间,并且缓存的数据也会占用大量内存,效率明显下降。 其它常见的方法还有每次翻页都查询一次数据库,从ResultSet中只取出一页数据(使用rs.last();rs.getRow()获得总计录条数,使用rs.absolute()定位到本页起始记录)。这种方式在某些数据库(如oracle)的JDBC实现中差不多也是需要遍历所有记录,实验证明在记录数很大时速度非常慢。 至于缓存结果集ResultSet的方法则完全是一种错误的做法。因为ResultSet在Statement或Connection关闭时也会被关闭,如果要使ResultSet有效势必长时间占用数据库连接。 因此比较好的分页做法应该是每次翻页的时候只从数据库里检索页面大小的块区的数据。这样虽然每次翻页都需要查询数据库,但查询出的记录数很少,网络传输数据量不大,如果使用连接池更可以略过最耗时的建立数据库连接过程。而在数据库端有各种成熟的优化技术用于提高查询速度,比在应用服务器层做缓存有效多了。 在oracle数据库中查询结果的行号使用伪列ROWNUM表示(从1开始)。例如select * from employee where rownum《10 返回前10条记录。但因为rownum是在查询之后排序之前赋值的,所以查询employee按birthday排序的第100到120条记录应该这么写: select * from ( select my_table.*, rownum as my_rownum from ( select name, birthday from employee order by birthday ) my_table where rownum 《120 ) where my_rownum》=100 mySQL可以使用LIMIT子句: select name, birthday from employee order by birthday LIMIT 99,20 DB2有rownumber()函数用于获取当前行数。 SQL Server没研究过,可以参考这篇文章: 1.Page.java 2.RowSetPage.java(RowSetPage继承Page) 3.PagedStatement.java 4.PagedStatementOracleImpl.java(PagedStatementOracleImpl继承PagedStatement) 您可以任意使用这些源代码,但必须保留author evan_zhao@hotmail.com字样 /////////////////////////////////// // // Page.java // author: evan_zhao@hotmail.com // /////////////////////////////////// package page; import java.util.List; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; /** * Title: 分页对象《br》 * Description: 用于包含数据及分页信息的对象《br》 * Page类实现了用于显示分页信息的基本方法,但未指定所含数据的类型, * 可根据需要实现以特定方式组织数据的子类,《br》 * 如RowSetPage以RowSet封装数据,ListPage以List封装数据《br》 * Copyright: Copyright (c) 2002 《br》 * @author evan_zhao@hotmail.com 《br》 * @version 1.0 */ public class Page implements java.io.Serializable { public static final Page EMPTY_PAGE = new Page(); public static final int DEFAULT_PAGE_SIZE = 20; public static final int MAX_PAGE_SIZE = 9999; private int myPageSize = DEFAULT_PAGE_SIZE; private int start; private int avaCount,totalSize; private Object data; private int currentPageno; private int totalPageCount; /** * 默认构造方法,只构造空页 */ protected Page(){ this.init(0,0,0,DEFAULT_PAGE_SIZE,new Object()); } /** * 分页数据初始方法,由子类调用 * @param start 本页数据在数据库中的起始位置 * @param avaCount 本页包含的数据条数 * @param totalSize 数据库中总记录条数 * @param pageSize 本页容量 * @param data 本页包含的数据 */ protected void init(int start, int avaCount, int totalSize, int pageSize, Object data){ this.avaCount =avaCount; this.myPageSize = pageSize; this.start = start; this.totalSize = totalSize; this.data=data; //System.out.println("avaCount:"+avaCount); //System.out.println("totalSize:"+totalSize); if (avaCount》totalSize) { //throw new RuntimeException("记录条数大于总条数?!"); } this.currentPageno = (start -1)/pageSize +1; this.totalPageCount = (totalSize + pageSize -1) / pageSize; if (totalSize==0 && avaCount==0){ this.currentPageno = 1; this.totalPageCount = 1; } //System.out.println("Start Index to Page No: " + start + "-" + currentPageno); } public Object getData(){ return this.data; } /** * 取本页数据容量(本页能包含的记录数) * @return 本页能包含的记录数 */ public int getPageSize(){ return this.myPageSize; } /** * 是否有下一页 * @return 是否有下一页 */ public boolean hasNextPage() { /* if (avaCount==0 && totalSize==0){ return false; } return (start + avaCount -1) 《 totalSize; */ return (this.getCurrentPageNo()《this.getTotalPageCount()); } /** * 是否有上一页 * @return 是否有上一页 */ public boolean hasPreviousPage() { /* return start 》 1; */ return (this.getCurrentPageNo()》1); } /** * 获取当前页第一条数据在数据库中的位置 * @return */ public int getStart(){ return start; } /** * 获取当前页最后一条数据在数据库中的位置 * @return */ public int getEnd(){ int end = this.getStart() + this.getSize() -1; if (end《0) { end = 0; } return end; } /** * 获取上一页第一条数据在数据库中的位置 * @return 记录对应的rownum */ public int getStartOfPreviousPage() { return Math.max(start-myPageSize, 1); } /** * 获取下一页第一条数据在数据库中的位置 * @return 记录对应的rownum */ public int getStartOfNextPage() { return start + avaCount; } /** * 获取任一页第一条数据在数据库中的位置,每页条数使用默认值 * @param pageNo 页号 * @return 记录对应的rownum */ public static int getStartOfAnyPage(int pageNo){ return getStartOfAnyPage(pageNo, DEFAULT_PAGE_SIZE); } /** * 获取任一页第一条数据在数据库中的位置 * @param pageNo 页号 * @param pageSize 每页包含的记录数 * @return 记录对应的rownum */ public static int getStartOfAnyPage(int pageNo, int pageSize){ int startIndex = (pageNo-1) * pageSize + 1; if ( startIndex 《 1) startIndex = 1; //System.out.println("Page No to Start Index: " + pageNo + "-" + startIndex); return startIndex; } /** * 取本页包含的记录数 * @return 本页包含的记录数 */ public int getSize() { return avaCount; } /** * 取数据库中包含的总记录数 * @return 数据库中包含的总记录数 */ public int getTotalSize() { return this.totalSize; } /** * 取当前页码 * @return 当前页码 */ public int getCurrentPageNo(){ return this.currentPageno; } /** * 取总页码 * @return 总页码 */ public int getTotalPageCount(){ return this.totalPageCount; } /** * * @param queryJSFunctionName 实现分页的JS脚本名字,页码变动时会自动回调该方法 * @param pageNoParamName 页码参数名称 * @return */ public String getHTML(String queryJSFunctionName, String pageNoParamName){ if (getTotalPageCount()《1){ return "《input type=’hidden’ name=’"+pageNoParamName+"’ value=’1’ 》"; } if (queryJSFunctionName == null || queryJSFunctionName.trim().length()《1) { queryJSFunctionName = "gotoPage"; } if (pageNoParamName == null || pageNoParamName.trim().length()《1){ pageNoParamName = "pageno"; } String gotoPage = "_"+queryJSFunctionName; StringBuffer html = new StringBuffer("\n"); html.append("《script language=\"Javascript1.2\"》\n") .append("function ").append(gotoPage).append("(pageNo){ \n") .append( " var curPage=1; \n") .append( " try{ curPage = document.all \n"); } html.append( "《/td》《/tr》《/table》 \n"); return html.toString(); } } /////////////////////////////////// // // RowSetPage.java // author: evan_zhao@hotmail.com // /////////////////////////////////// package page; import javax.sql.RowSet; /** * 《p》Title: RowSetPage《/p》 * 《p》Description: 使用RowSet封装数据的分页对象《/p》 * 《p》Copyright: Copyright (c) 2003《/p》 * @author evan_zhao@hotmail.com * @version 1.0 */ public class RowSetPage extends Page { private javax.sql.RowSet rs; /** *空页 */ public static final RowSetPage EMPTY_PAGE = new RowSetPage(); /** *默认构造方法,创建空页 */ public RowSetPage(){ this(null, 0,0); } /** *构造分页对象 *@param crs 包含一页数据的OracleCachedRowSet *@param start 该页数据在数据库中的起始位置 *@param totalSize 数据库中包含的记录总数 */ public RowSetPage(RowSet crs, int start, int totalSize) { this(crs,start,totalSize,Page.DEFAULT_PAGE_SIZE); } /** *构造分页对象 *@param crs 包含一页数据的OracleCachedRowSet *@param start 该页数据在数据库中的起始位置 *@param totalSize 数据库中包含的记录总数 *@pageSize 本页能容纳的记录数 */ public RowSetPage(RowSet crs, int start, int totalSize, int pageSize) { try{ int avaCount=0; if (crs!=null) { crs.beforeFirst(); if (crs.next()){ crs.last(); avaCount = crs.getRow(); } crs.beforeFirst(); } rs = crs; super.init(start,avaCount,totalSize,pageSize,rs); }catch(java.sql.SQLException sqle){ throw new RuntimeException(sqle.toString()); } } /** *取分页对象中的记录数据 */ public javax.sql.RowSet getRowSet(){ return rs; } } /////////////////////////////////// // // PagedStatement.java // author: evan_zhao@hotmail.com // /////////////////////////////////// package page; import foo.DBUtil; import java.math.BigDecimal; import java.util.List; import java.util.Iterator; import java.util.Collections; import java.sql.Connection; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement; import java.sql.PreparedStatement; import java.sql.Timestamp; import javax.sql.RowSet; /** * 《p》Title: 分页查询《/p》 * 《p》Description: 根据查询语句和页码查询出当页数据《/p》 * 《p》Copyright: Copyright (c) 2002《/p》 * @author evan_zhao@hotmail.com * @version 1.0 */ public abstract class PagedStatement { public final static int MAX_PAGE_SIZE = Page.MAX_PAGE_SIZE; protected String countSQL, querySQL; protected int pageNo,pageSize,startIndex,totalCount; protected javax.sql.RowSet rowSet; protected RowSetPage rowSetPage; private List boundParams; /** * 构造一查询出所有数据的PageStatement * @param sql query sql */ public PagedStatement(String sql){ this(sql,1,MAX_PAGE_SIZE); } /** * 构造一查询出当页数据的PageStatement * @param sql query sql * @param pageNo 页码 */ public PagedStatement(String sql, int pageNo){ this(sql, pageNo, Page.DEFAULT_PAGE_SIZE); } /** * 构造一查询出当页数据的PageStatement,并指定每页显示记录条数 * @param sql query sql * @param pageNo 页码 * @param pageSize 每页容量 */ public PagedStatement(String sql, int pageNo, int pageSize){ this.pageNo = pageNo; this.pageSize = pageSize; this.startIndex = Page.getStartOfAnyPage(pageNo, pageSize); this.boundParams = Collections.synchronizedList(new java.util.LinkedList()); this.countSQL = "select count(*) from ( " + sql +") "; this.querySQL = intiQuerySQL(sql, this.startIndex, pageSize); } /** *生成查询一页数据的sql语句 *@param sql 原查询语句 *@startIndex 开始记录位置 *@size 需要获取的记录数 */ protected abstract String intiQuerySQL(String sql, int startIndex, int size); /** *使用给出的对象设置指定参数的值 *@param index 第一个参数为1,第二个为2
jsp如何 实现 内容分页
看了楼上两位回答,完全不知所云,连问题点都没找到。问题中说了“文章内容包含HTML标签”,这与传分页参数和dao有关系?内容中包含html,那就说明从数据中截取分页内容时会出现如下情况:1。取出的分页内容中,html标签不完整(比如《a href=,后面就没了。。。),针对这种情况,我们应该实现一个向前搜索和向后搜索内容以保证html标签完整性的功能。2。有可能出现标签不成对的情况,比如有《form》,没有《/form》这种情况,那么这个问题也是我们需要去搜索内容来解决的。或者说做的过分点,我们写一个缺少结束标签的自动补足模块。3。出现类似有《/form》,但是没有《form》的情况,这就有点伤脑筋了,是向前搜索内容直到补足还是直接在保存内容时就做分页处理分页以保证《form》《/form》标签模块的完整性这些策略就只有楼主你来思考了,呵呵。不知道楼主你想说的是不是这些问题呢,说实在的,对包含html的内容进行分页有点繁琐,还不如直接把内容页面做“静态化”处理,这样分页都免了。当然还有一种办法就是在用户输入内容时就做好分页工作(对用户行为做限制),这样或许会好一点
JSP分页问题
SQL语句有问题,使用字查询不可以用?给值,请拼接字符串另外jsp分页不推荐你这么写,这样你每分一次都要浪费很多精力推荐新建一个分页的类PageBean里面包括6个属性1.currentPage(代表当前页默认为1)2.pageSize(一页显示的条数)3.resultCount(总记录数)4.pageSize(总页数,在SETTER方法里面给值this.pageSize=this.resultCount-1/this.pageSize+1)5.list(获取当前页显示的所有记录集合,通过实现类的查询方法给值,可以在你上面写的方法那里做下修改)6.url(获得你分页显示的超连接,在GET方法里面传入页面地址,然后根据pageBean的4个方法,获得分页连接,在JSP页面只需要调用小脚本输出pageBean.getUrl就可以了,重复使用很方便)4个方法都是返回INT类型分别是获取首页,上一页,下一页,尾页注意在上一页和下页方法中判断,超出页面索引时候进行处理就可以了
jsp中的分页怎么写
《 language="java"%》 《 import="java.sql.*"%》 《 contentType="text/html;charset=GB2312"%》 《 import="book.db"%》 《html》 《head》 《/head》 《body》 //开始实现连接 《jsp:useBean id="book" class="book.db" scope="session"/》 《% book.getCon(); ResuletSet rs=book.st.executeQuery("select top 10 from book"); %》 //定义全局变量实现分页 《%int pagesize=10;//分页每页记录数 int total;//总的记录数 int pagecount;//分页数目 int page=0;//当前页 String strpage=Request.getParameter("pages");//从页面得到页数 if(strpage=null){ page=1; } else{ page=Interger.parseInt(strpage); if(page《1) { page=1; } } rs.next(); total=rs.getRow();//得到总的记录数 pagecount=(pagesize+total-1)/pagesize;//得到总页数 if(page》pagecount) page=pagecount; int i=0; %》 //插入表单 《form》 《table width="800" border="0" cellpadding="0" cellspacing="0" id="center"》 《tr》 《td width="227"》书名《/td》 《td width="98"》作者《/td》 《td width="108"》出版社《/td》 《td width="178"》价格《/td》 《/tr》 //开始实现输出 《% if(pagecount》0){ rs.absolute(pagesize*(page-1)+1);//定位记录位置 while(i《pagesize&&!rs.isAfterLast()){%》 《tr align="center"》 《td 》《%=rs.getString(1)%》《/td》 《td 》《%=rs.getString(2)%》《/td》 《td 》《%=rs.getString(3)%》《/td》 《td 》《%=rs.getString(4)%》《/td》 《/tr》 《% rs.next(); i++; }}rs.close();%》//关闭; 《/table》 《table width="801" height="89"》 《tr》 《td width="48%"》 共《%=pagecount%》 页;第《%=page%》页 《/td》 《td width="52%"》 //实现连接判断 《%if(page《=1){%》 首页 《%}%》 《%else{%》 《a href="a.jsp? pages=1"》首页《/a》 《%}%》 《%if(page》1){% 《a href="a.jsp pages=《%=page+1"%》"》下页《/a》 《%}%》 下页 《%if(page《pagecount){%》 《a href="a.jsp? pages=《%=page-1%》"》上页《/a》 《%}%》 上页 《%if(page==pagecount){%》 《a href="a.jsp pages=pagecount"》尾页《/a》 《%}%》 尾页 《/tr》《/table》 《%}%》 《% book.close(); %》 《/form》 《/body》 《/html》
jsp如何用c标签实现分页
jsp用c标签实现分页的方式如下:
《%@ tag language="java" pageEncoding="UTF-8"%》《%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%》《%@ attribute name="curIndex" type="java.lang.Long" required="true"%》《%@ attribute name="pageSize" type="java.lang.Long" required="true"%》《%@ attribute name="pagerRange" type="java.lang.Long" required="true"%》《%@ attribute name="totalPage" type="java.lang.Long" required="true"%》《%@ attribute name="formId" type="java.lang.String" required="true"%》《%long begin = Math.max(1, curIndex - pagerRange/2);long end = Math.min(begin + (pagerRange-1),totalPage);request.setAttribute("p_begin", begin);request.setAttribute("p_end", end);%》《table class="pager"》《tr》 《% if (curIndex!=1){%》 《td》《a href="javascript:gotoPage(1)"》首页《/a》《/td》 《td》《a href="javascript:gotoPage(《%=curIndex-1%》)"》上一页《/a》《/td》 《%}else{%》 《td class="disabled"》《a href="#"》首页《/a》《/td》 《td class="disabled"》《a href="#"》上一页《/a》《/td》 《%}%》 《c:forEach var="i" begin="${p_begin}" end="${p_end}"》 《c:choose》 《c:when test="${i == curIndex}"》 《td class="active"》《a href="#"》${i}《/a》《/td》 《/c:when》 《c:otherwise》 《td》《a href="javascript:gotoPage(${i})"》${i}《/a》《/td》 《/c:otherwise》 《/c:choose》 《/c:forEach》 《% if (curIndex!=totalPage){%》 《td》《a href="#"》下一页《/a》《/td》 《td》《a href="#"》末页《/a》《/td》 《%}else{%》 《td class="disabled"》《a href="javascript:gotoPage(《%=curIndex+1%》)"》下一页《/a》《/td》 《td class="disabled"》《a href="javascript:gotoPage(《%=totalPage%》)"》末页《/a》《/td》 《%}%》 《td》《a》共${totalPage}页《/a》《/td》 《td class="input_li"》跳转到:《input type="text" id="p_pageIndex" size="2" value="《c:out value="${pageIndex}"/》"/》页 《input type="button" id="gotoBtn" onclick="gotoPageByBtn()" value="GO"/》《/td》 《td class="input_li"》 每页: 《select id="p_pageSizeSelect" onchange="gotoPage(《%=curIndex%》)"》 《option value="10" 《c:if test="${pageSize==10}"》selected《/c:if》》10条《/option》 《option value="20" 《c:if test="${pageSize==20}"》selected《/c:if》》20条《/option》 《option value="50" 《c:if test="${pageSize==50}"》selected《/c:if》》50条《/option》 《/select》 《/td》《/tr》《/table》
控制分页的代码如下
《%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c"%》《%@ taglib uri="/WEB-INF/tld/fmt.tld" prefix="fmt"%》《%@ taglib tagdir="/WEB-INF/tags" prefix="tags"%》《head》《style》《!--分页样式--》.pager { font: 12px Arial, Helvetica, sans-serif;}.pager a {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;margin-right:2px;line-height:30px;vertical-align:middle;}.pager .active a{color:red;border:none;}.pager a:visited {padding: 1px 6px; border: solid 1px #ddd; background: #fff; text-decoration: none;}.pager a:hover {color: #fff; background: #ffa501;border-color:#ffa501;text-decoration: none;}.pager .input_li{padding: 1px 6px;}《/style》《script》《!--分页跳转脚本--》function gotoPage(pageIndex){var queryForm = document.getElementById("queryForm");var action = queryForm.action;var pageSize = document.getElementById("p_pageSizeSelect").value;action += "?pageIndex=" + pageIndex + "&pageSize=" + pageSize;//alert(action);queryForm.action = action;queryForm.submit();}function gotoPageByBtn(){var pageIndex = document.getElementById("p_pageIndex").value;var pageIndexInt = parseInt(pageIndex);var totalPage = ${totalPage};if(pageIndexInt》0 && pageIndexInt《totalPage){gotoPage(pageIndex);}else{alert("输入页数超出范围!");}}《/script》《/head》《body》《form id="queryForm" action="${basePath}/log/list" method="post"》《table》《tr》《td》用户名:《/td》《td》《input type="text" name="userName" value="《c:out value="${userName}"/》"/》 《/td》《td》《input type="submit" text="查询"/》《/td》《/tr》《/table》《/form》《tags:pager pagerRange="10" pageSize="${pageSize}" totalPage="${totalPage}" curIndex="${pageIndex}" formId="queryForm"》《/tags:pager》《table class="border"》《thead》《tr》《th width="100"》用户名称《/th》《th width="500"》操作内容《/th》《th width="200"》操作时间《/th》《/tr》《/thead》《tbody》《c:forEach items="${logList}" var="log"》《tr》《td》${log.userName}《/td》《td》${log.result}《/td》《td》《fmt:formatDate value="${log.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/》《/td》《/tr》《/c:forEach》《/tbody》《/table》《tags:pager pagerRange="10" pageSize="${pageSize}" totalPage="${totalPage}" curIndex="${pageIndex}" formId="queryForm"》《/tags:pager》《/body》
jsp中如何分页显示查询到的数据
jsp中分页显示查询到的数据是通过foreach标签控制的,一般是显示首页,下一页,上一页,尾页这些连接项。
1、构建一个PageControl对象将分页所涉及到的一些关键的"控制数据"予以封装.
具体说明如下:
public int curPage ; //当前是第几页
public int maxPage ; //一共有多少页
public int maxRowCount ; //一共有多少行
public int rowsPerPage ; //每页有多少行
public yourDataType yourdata ;//装载每页的数据 关于每页所要显示的"实体数据"的载体,其实现方式多种多样,比如说在IBM电子商务系统MPE中是以bean的形式,这是一种面向对象的实现,比较的简略的实现可用java.util.Vector等,为了避免分散对核心问题的的注意力,这里用youDataType予以抽象.
public void countMaxPage() { //根据总行数计算总页数if (this.maxRowCount % this.rowsPerPage==0){this.maxPage = this.maxRowCount/this.rowsPerPage;}else{this.maxPage = this.maxRowCount/this.rowsPerPage + 1;}}
this.rowsPerPage其实应从配置文件中获得,这样做的好处是程序能在运行中读取从而实现动态(再)配置,简略的做法是直接写在程序中。
2、在servlet的service()方法中只需进行如下操作:
PageControl pageCtl = yourBusinessObject.listData(req.getParameter("jumpPage"));req.setAttribute("pageCtl",pageCtl);获取到显示第几页控制参数
3、pageman.jsp页面的控制输出代码
每页《%=pageCtl.rowsPerPage%》行共《%=pageCtl.maxRowCount%》行第《%=pageCtl.curPage%》页共《%=pageCtl.maxPage%》页《BR》《%if(pageCtl.curPage==1){ out.print(" 首页 上一页"); }else{ %》 《A HREF="javascript:gotoPage(1)"》首页《/A》《A HREF="javascript:gotoPage(《%=pageCtl.curPage-1%》)"》上一页《/A》《%}%》《%if(pageCtl.curPage==pageCtl.maxPage){ out.print("下一页 尾页"); }else{ %》 《A HREF="javascript:gotoPage(《%=pageCtl.curPage+1%》)"》下一页《/A》《A HREF="javascript:gotoPage(《%=pageCtl.maxPage%》)"》尾页《/A》《%}%》转到第《SELECT name="jumpPage" onchange="Jumping()"》《% for(int i=1;i《=pageCtl.maxPage;i++) {if (i== pageCtl.curPage){%》《OPTION selected value=《%=i%》》《%=i%》《/OPTION》《%}else{%》《OPTION value=《%=i%》》《%=i%》《/OPTION》《%}}%》《/SELECT》页在页面上会呈现出形如下图:
jsp 分页怎么传值
jsp分页是这样实现的例如SQL语句 string sql = "select * from tabel limit 0,30 ";则查询返回满足条件的前30条值,首先你得设置每页显示的数据条数,当前页数,然后通过浏览器地址栏传值(如果浏览器传值你不知道的话,百度一下,或者随便打开一个网页,看他的地址栏,当前页的URL是http://zhidao.baidu.com/question/569920471.html?push=keyword 最后的?push=keyword就是浏览器传值);然后通过Servlet接收传过来的参数值,就像表单传给jsp页面的值接收一样,然后,在Servlet中计算sql语句中参数值即,其实位置,数据条数,当中还得加一些处理比如如何让设置的值不超过数据库中的数据条数,蛮简单的,细节问题
本文相关文章:
“网络游戏”是什么意思?最火的游戏2021排行前10名,2021大型网游游戏排行榜
2024年9月10日 10:35
大白菜超级u盘启动制作工具(大白菜超级U盘启动制作工具,这4个模式都是什么意思)
2024年9月9日 12:45
应用商店免费下载安装(vivo手机应用商店免下载安装是什么意思)
2024年9月8日 13:15
ostrich(ostrich指什么 ostrich是什么意思)
2024年8月30日 23:45
cad2012激活教程图解(2012版cad怎样激活,要注册机是什么意思)
2024年8月25日 14:45
favors是什么意思?favor是什么意思 favor是何意思
2024年8月24日 23:55
更多文章:
OPPO手机送的会员卡有什么用?大家说的手机会员卡是什么怎么用的
2024年5月28日 04:15
宏基4750zg(宏基4750zg笔记本的内存条是几代的加个1g内存条要多少钱)
2024年6月2日 19:57
office2007兼容包(office2007的兼容包下到哪了)
2024年3月28日 16:01