一个jsp的分页问题,高手进来看看。为什么循环现实的时候,输出的有重复的。
这个是显示界面的分页和显示信息的代码:<%intpageSize=10;//每页显示的条数intpageNow=1;//默认显示第一页intallItem=Integer...
这个是显示界面的分页和显示信息的代码:
<%
int pageSize=10; //每页显示的条数
int pageNow=1; //默认显示第一页
int allItem=Integer.parseInt(request.getSession().getAttribute("tiao").toString());//所有的条数
int pageCount=0; //页数
if(allItem%pageSize==0)
pageCount=allItem/pageSize;
else
pageCount=allItem/pageSize+1;
%>
<%
ArrayList list= (ArrayList)session.getAttribute("listArrayList");
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++)
{
for(int j=0;j<list.size();j=j+8)
{
String title=(String)list.get(j);
String author=(String)list.get(j+1);
String keywords=(String)list.get(j+2);
String kind=(String)list.get(j+3);
String url=(String)list.get(j+4);
String date=(String)list.get(j+5);
String describer=(String)list.get(j+6);
String publisher=(String)list.get(j+7);
%>
<table class=result id=k width="600" border="0" >
<tbody>
<tr>
<td> <div align="left">类型: <%=kind %>
<a href="yulan.jsp"><%=title %></a>
<br/>
关键字: <%=keywords %><br/>
资源描述: <%=describer %><br/>
作者: <%=author %> || 出版日期: <%=date %> || 出版社: <%=publisher %> || <a href="${pageContext.request.contextPath}/download filename=<%=url %>">点击这里下载</a><br/>
地址: <%=url %> </div> </td></tr></tbody></table><br/>
<%}} %>
<a href="show.jsp?page=1">首页</a>
<a href="show.jsp?page=<%=pageNow - 1 < 1 ? 1 : pageNow - 1%>">上一页</a>
<a href="show.jsp?page=<%=pageNow + 1 > pageCount ? pageCount : pageNow + 1%>">下一页</a>
<a href="show.jsp?page=<%=allItem %>">尾页</a>
当前第<%=pageNow %>页,总共<%=pageCount %>页
下面是我输出后的显示界面截图:
仔细看一下 第一条和第五条、第二条和第六条是一样的。是不是我的for循环写的有问题啊?我没有用数据库,用的是xml资源描述语言,搜索信息已经在servlet保存到session里了。
以下是servlet里的保存到session里的代码:
for ( i = 0; i < hits.scoreDocs.length; i++)
{
ScoreDoc sdoc = hits.scoreDocs[i];
Document doc = indexSearch.doc(sdoc.doc);
t=doc.get("title"); a=doc.get("author"); k=doc.get("keywords");kd=doc.get("kind");
u=doc.get("url");dt=doc.get("date");db=doc.get("describe"); p=doc.get("publisher") list.add(t);list.add(a); list.add(k); list.add(kd); list.add(u); list.add(dt); list.add(db); list.add(p); }
session.setAttribute("listArrayList",list);
各位高手看看 哪里错了啊?怎么循环显示啊?
还有显示界面的这句代码:
;<a href="${pageContext.request.contextPath}/download filename=<%=url %>">点击这里下载</a>//点击文本可以实现下载,执行的代码我放到servlet里了servlet名叫download。
我没用EL语言啊能不能改一下啊?加上这句报错<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>/
晕啊 我都整了好几天了哦,还是没整出来!!!!各位高手给看看,我快疯了!!!回答的满意我给加双倍的分数!!!急用急急~~~~~~ 展开
<%
int pageSize=10; //每页显示的条数
int pageNow=1; //默认显示第一页
int allItem=Integer.parseInt(request.getSession().getAttribute("tiao").toString());//所有的条数
int pageCount=0; //页数
if(allItem%pageSize==0)
pageCount=allItem/pageSize;
else
pageCount=allItem/pageSize+1;
%>
<%
ArrayList list= (ArrayList)session.getAttribute("listArrayList");
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++)
{
for(int j=0;j<list.size();j=j+8)
{
String title=(String)list.get(j);
String author=(String)list.get(j+1);
String keywords=(String)list.get(j+2);
String kind=(String)list.get(j+3);
String url=(String)list.get(j+4);
String date=(String)list.get(j+5);
String describer=(String)list.get(j+6);
String publisher=(String)list.get(j+7);
%>
<table class=result id=k width="600" border="0" >
<tbody>
<tr>
<td> <div align="left">类型: <%=kind %>
<a href="yulan.jsp"><%=title %></a>
<br/>
关键字: <%=keywords %><br/>
资源描述: <%=describer %><br/>
作者: <%=author %> || 出版日期: <%=date %> || 出版社: <%=publisher %> || <a href="${pageContext.request.contextPath}/download filename=<%=url %>">点击这里下载</a><br/>
地址: <%=url %> </div> </td></tr></tbody></table><br/>
<%}} %>
<a href="show.jsp?page=1">首页</a>
<a href="show.jsp?page=<%=pageNow - 1 < 1 ? 1 : pageNow - 1%>">上一页</a>
<a href="show.jsp?page=<%=pageNow + 1 > pageCount ? pageCount : pageNow + 1%>">下一页</a>
<a href="show.jsp?page=<%=allItem %>">尾页</a>
当前第<%=pageNow %>页,总共<%=pageCount %>页
下面是我输出后的显示界面截图:
仔细看一下 第一条和第五条、第二条和第六条是一样的。是不是我的for循环写的有问题啊?我没有用数据库,用的是xml资源描述语言,搜索信息已经在servlet保存到session里了。
以下是servlet里的保存到session里的代码:
for ( i = 0; i < hits.scoreDocs.length; i++)
{
ScoreDoc sdoc = hits.scoreDocs[i];
Document doc = indexSearch.doc(sdoc.doc);
t=doc.get("title"); a=doc.get("author"); k=doc.get("keywords");kd=doc.get("kind");
u=doc.get("url");dt=doc.get("date");db=doc.get("describe"); p=doc.get("publisher") list.add(t);list.add(a); list.add(k); list.add(kd); list.add(u); list.add(dt); list.add(db); list.add(p); }
session.setAttribute("listArrayList",list);
各位高手看看 哪里错了啊?怎么循环显示啊?
还有显示界面的这句代码:
;<a href="${pageContext.request.contextPath}/download filename=<%=url %>">点击这里下载</a>//点击文本可以实现下载,执行的代码我放到servlet里了servlet名叫download。
我没用EL语言啊能不能改一下啊?加上这句报错<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>/
晕啊 我都整了好几天了哦,还是没整出来!!!!各位高手给看看,我快疯了!!!回答的满意我给加双倍的分数!!!急用急急~~~~~~ 展开
2个回答
展开全部
<%
ArrayList list= (ArrayList)session.getAttribute("listArrayList");
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++)
{
for(int j=0;j<list.size();j=j+8)
{
String title=(String)list.get(j);
String author=(String)list.get(j+1);
String keywords=(String)list.get(j+2);
String kind=(String)list.get(j+3);
String url=(String)list.get(j+4);
String date=(String)list.get(j+5);
String describer=(String)list.get(j+6);
String publisher=(String)list.get(j+7);
%>
简单看了下你的程序,发现你第一个for循环应该是错了,改了再试试吧
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++)
这里最后的i++应该改成i=i+pageSize;
因为看你的程序,你是想跟据页号不同来显示,可是第一页时i=0,第二页时i应该从10开始循环,可是你i++后,i就从1开始了循环
看看这样改对不对
PS:再说说你的程序为什么会出现第6项开始出现重复
你的list中应该有5组记录吧,也就是40项,因为你第一个for循环错误,所以当pageNow=1时,i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize))相当于i<5==true,所以执行第2个for循环,输出了前40项,即前5条记录;然后i++,i=1,又把前40项输出了一遍,直到输出5遍位置(tiao里存的应该是几组记录吧),不知道你的页面显示是重复了几遍,如果是5遍的话,应该是这种情况
ArrayList list= (ArrayList)session.getAttribute("listArrayList");
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++)
{
for(int j=0;j<list.size();j=j+8)
{
String title=(String)list.get(j);
String author=(String)list.get(j+1);
String keywords=(String)list.get(j+2);
String kind=(String)list.get(j+3);
String url=(String)list.get(j+4);
String date=(String)list.get(j+5);
String describer=(String)list.get(j+6);
String publisher=(String)list.get(j+7);
%>
简单看了下你的程序,发现你第一个for循环应该是错了,改了再试试吧
for(int i = (pageNow - 1) * pageSize ; i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize)) ; i++)
这里最后的i++应该改成i=i+pageSize;
因为看你的程序,你是想跟据页号不同来显示,可是第一页时i=0,第二页时i应该从10开始循环,可是你i++后,i就从1开始了循环
看看这样改对不对
PS:再说说你的程序为什么会出现第6项开始出现重复
你的list中应该有5组记录吧,也就是40项,因为你第一个for循环错误,所以当pageNow=1时,i < ((pageNow * pageSize) > allItem ? allItem : (pageNow * pageSize))相当于i<5==true,所以执行第2个for循环,输出了前40项,即前5条记录;然后i++,i=1,又把前40项输出了一遍,直到输出5遍位置(tiao里存的应该是几组记录吧),不知道你的页面显示是重复了几遍,如果是5遍的话,应该是这种情况
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询