|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开js|分页
我们查询数据库的时分,假如查询出来的了局是良多条,好比1000条,那末,假如都显现到一个页面上几乎是使人没法忍耐的事变!以是我们要分页显现,每页显现10或20行,分页的目标就如许复杂.
分页的办法有良多种,大概有些效力要高些,我这里只能参考最复杂能完成的办法:现查询出有几笔记录,然后盘算出一共分几页,然后分离显现每页.
查询出有几笔记录:
selectcount(*)fromlearning
盘算分几页:
if(counts%pageSizes==0){pageCounts=counts/pageSizes;}
else{pageCounts=counts/pageSizes+1;}
inti=(intPage-1)*pageSizes;(书上的算法很笨,用我这里本人想的,没有错)
下面就是判别是不是最初一页显现满,如,93笔记录,每页显现5条,那末最初一页要显现3条,一共19页显现!入手下手思索的时分我思索100页,哈哈,很特别的,不具有代表性,看来头脑的办法很主要,弱智吧?
然后就是分离显现这些页了,
Stringquery="Select*"+
"fromlearning"+
"wherearticle_idlike%";
这里我们碰到贫苦了,怎样显现?是先查出5条放在那里?一个甚么样的数据布局里?仍是分别数据库的纪录的条数?大概从这里我们能够思索出分页最少有2种办法:这里我们接纳后一种,这类办法的内容是:rs的遍历和每页几笔记录的分离:
inti=(intPage-1)*pageSizes;//判别每页能遍历到第几笔记录
ps=conn.prepareStatement(query);
ResultSetrs1=ps.executeQuery();
for(intj=0;j<i;j++)
rs1.next();//当是第一页的时分,rs从第0条入手下手,假如是第二页,从第(2-1)*5条元组入手下手遍历,假如第3页,将从第10条入手下手遍历
最初:while(rs1.next()&&i<pageSizes){i++;}很关头,即把持了每页显现的条数,又把持了编历的局限.
最初有一个成绩是:ResultSetrs1为何不必本来的rs?假如不睬解这个,能够说没有了解到这类分页的做法,由于rs在查询纪录总数的时分已指向了第一个,假如持续利用,将从查询出来的第二笔记录入手下手显现了!这个成绩是我刚调试好分页时分呈现的bug,看来都是先呈现成绩,再剖析缘故原由,再真正了解历程发生的缘故原由.
上面还要在显现分页的内容以外加一个from,内里供应链接来对以后页数的id+1(减1)来显现上一页或下一页的内容!
刚了解了分页,就即刻记上去,加深印象,更不敢独享意会后的高兴!
以下是JSP分页的代码:
*****************************
<%Cookiecookies[]=request.getCookies();if(cookies==null){response.sendRedirect("login.jsp");}%><%@includefile="articleconn.jsp"%><html>
<head><metahttp-equiv="Content-Type"content="text/html;charset=big5"><title>办理文件</title><metaname="GENERATOR"content="MicrosoftFrontPage4.0"><!--linkrel="stylesheet"href="CSS/article.css"--></head>
<%request.setCharacterEncoding("big5");Stringquery="Select*"+"fromlearning"+"wherearticle_idlike%";StringqueryCount="selectcount(*)fromlearning";StringstrPage=request.getParameter("strPage");intintPage;if(strPage==null){intPage=1;}elseintPage=Integer.parseInt(strPage);
intpageSizes=5;intcounts=1;intpageCounts=1;
try{PreparedStatementps=conn.prepareStatement(queryCount);ResultSetrs=ps.executeQuery();if(rs.next()){counts=Integer.parseInt(rs.getString(1));}
%><bodybgcolor="#FFFFFF"><p></p><tablewidth="700"border="1"cellspacing="0"cellpadding="0"align="center"bordercolorlight="#000000"bordercolordark="#FFFFFF"><trbgcolor="#99CCFF"><tdheight="10"bgcolor="#B5D85E"><divalign="center"><b>管理界面</b></div></td></tr><tr><tdheight="49"><%--分--%><palign="left"><ahref="add.jsp">增加信息</a><ahref="index.jsp">前往首</a></p><tableborder="1"cellspacing="0"width="90%"bgcolor="#F0F8FF"bordercolorlight="#000000"bordercolordark="#FFFFFF"align="center"><tr><tdwidth="12%"align="center"><strong>ID</strong></td><tdwidth="13%"align="center"><b>型</b></td><tdwidth="47%"align="center"><strong>信息名Q</strong></td><tdwidth="14%"align="center"><strong>修改</strong></td><tdwidth="14%"align="center"><strong>h除</strong></td></tr><%if(counts%pageSizes==0){pageCounts=counts/pageSizes;}else{pageCounts=counts/pageSizes+1;}inti=(intPage-1)*pageSizes;
ps=conn.prepareStatement(query);ResultSetrs1=ps.executeQuery();for(intj=0;j<i;j++)rs1.next();out.println(rs+"<BR><BR><BR>");out.println(rs.next());i=0;while(rs1.next()&&i<pageSizes){%><tr><tdwidth="12%"height="7"><palign="center"><%=rs1.getString("article_id")%></p></td><tdwidth="13%"height="7"><divalign="center"><%=rs1.getString("types")%></div></td><tdwidth="47%"height="7"><%=rs1.getString("title")%></td><tdwidth="14%"align="center"height="7"><ahref="edit.jsp?id=<%=rs1.getString("article_id")%>">修改</a></td><tdwidth="14%"align="center"height="7"><ahref="delete.jsp?id=<%=rs1.getString("article_id")%>">h除</a></td></tr><%i++;}%></table><%
}catch(SQLExceptionse1){se1.printStackTrace();}finally{}
stmt.close();conn.close();%></td></tr></table><formaction="manage.jsp"method="post">第<%=intPage%>,共<%=pageCounts%><%if(intPage<pageCounts)%><ahref="manage.jsp?strPage=<%=intPage+1%>">下一</a><%if(intPage>1)%><ahref="manage.jsp?strPage=<%=intPage-1%>">上一</a>
</form>
<P></P></body>
</html>
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊 |
|