jsp 中分页显示,按条的读取list已存的list.size()=20条元素,要实现每页一条数据

代码如下:
<table width="60%" border="0" cellspacing="0" cellpadding="0" align="center">
<%
int PageSize = 1;
int Page = 1;
int totalPage =1;
int totalrecond =0;
int count = 0;
ArrayList list=(ArrayList)request.getAttribute("Problem_Query");

totalrecond = list.size(); //得到记录总行数;
//System.out.println(list.size());
if(totalrecond%PageSize == 0) //如果是当前页码的整数倍
totalPage = totalrecond/PageSize;
else //如果还空余最后一页
totalPage=(int)Math.floor(totalrecond/PageSize) + 1;
if(totalPage==0)
totalPage=1;
if(request.getParameter("Page")==null || request.getParameter("Page").equals(""))
Page= 1;
else
try
{
Page= Integer.parseInt(request.getParameter("Page"));
}
catch(java.lang.NumberFormatException e)
{ //捕获用户从浏览器地址栏直接输入page=sdfafa所造成的异常
Page =1;
}
if(Page<1)Page =1;
if(Page>totalPage)
Page=totalPage;

if(list!=null)
{
Iterator it=list.iterator(); //统计结果
for(int j = 0; j < PageSize; ++j)

{
ProblemBean pb=(ProblemBean)it.next();
int Problem_Id=pb.getProblem_Id();
String Pro_Content=pb.getPro_Content();
int Pro_Degree=pb.getPro_Degree();
String AnswerA=pb.getAnswerA();
String AnswerB=pb.getAnswerB();
String AnswerC=pb.getAnswerC();
String AnswerD=pb.getAnswerD();
String AnswerE=pb.getAnswerE(); //显示题目
%>
<tr>
<th scope="row"><%=Problem_Id%></th>
<td><%=Pro_Content%></td>
<td>难度:<%=Pro_Degree%></td>
</tr>
<tr>
<th scope="row"><form id="form1" name="form1" method="post" action="Qusedetail.jsp">
<input type="radio" name="radiobutton" value="radiobutton" />
</form>
</th>
<td colspan="2"><%=AnswerA %></td>
</tr>
<tr>
<th scope="row"><input type="radio" name="radiobutton" value="radiobutton" /></th>
<td colspan="2"><%=AnswerB%></td>
</tr>
<tr>
<th scope="row"><input type="radio" name="radiobutton" value="radiobutton" /></th>
<td colspan="2"><%=AnswerC %></td>
</tr>
<tr>
<th scope="row"><input type="radio" name="radiobutton" value="radiobutton" /></th>
<td colspan="2"><%=AnswerD%></td>
</tr>
<% //*it++;
if(!it.hasNext()) break;}
}
%>
</table>

<form method="POST" action="Qusedetail.jsp">
第<%=Page%>页 共<%=totalPage%>页

<%if(Page<totalPage){%>
<a href="Qusedetail.jsp?Page=<%=Page+1%>">下一页</a>
<%}%>
<%if(Page>1){%>
<a href="Qusedetail.jsp?Page=<%=Page-1%>">上一页</a>
<%}%>
转到第:<input type="text" name="Page" size="8"> 页
<input type="submit" value="GO" name="cndok">
</form>
</tr>
</table>

第一次见过如此分页,你可以自己定义一个分页模型组件,来实现你的分页功能,你每次请求的时候,返回一个分页模型组件,这是我写的一个分页模型组件
package util.tool;
import java.util.List;

/**
* 自定义分页组件
* @author 李鹏飞
*/
public class PageModel {
private int currPage; //当前页
private int totalRecords; //总记录数
private List<?> list; //结果集
private int pageSize; //每页记录数
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
/**
* 获取总页数
* @return 总页数
*/
public int getTotalPage(){
return (totalRecords + pageSize- 1) / pageSize;
}
/**
* 获取第一页
* @return 第一页
*/
public int getFirstPage(){
return 1;
}
/**
* 获取上一页
* @return 上一页
*/
public int getPreviousPage(){
return currPage <= 1 ? 1 : currPage - 1;
}
/**
* 获取下一页
* @return 下一页
*/
public int getNextPage(){
if(currPage >= getTotalPage()){
return getLastPage();
}
return currPage + 1;
}
/**
* 获取最后一页
* @return 最后一页
*/
public int getLastPage(){
//如果总页数等于0返回1,否则返回总页数
return getTotalPage() <= 0 ? 1 : getTotalPage();
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-07
代码很抽象,类似答题系统的页面?
给你两个思路,一个是放后台,
第一次载入答题页面,将它绑定到session中,试卷提交后,从session中移除。
给个id与当前登录的用户绑定。
第二个就是放前台。将所有题目的加载到table中,用js+css控制。
例如
.show{
display: inline;
}
.hidden{
display: none;
}
初始化时候,只让第一个题目的class=“show”,其他的都为hidden.
点按钮的时候用js控制,效果也能达到。
试试吧。追问

^ ^..这的确是一个答题系统,为了统一套用,不想用css和js,我只想调用后台的Severlet.java将数据库的存放20道选择题的各种属性存放到list中,如选项.难易程度等,现在遇到的问题是将list中每一道题的属性显示到一个页面上..进行分页.具体点就是for循环里应该怎么写,可以在下面的分页按钮上进行跳转,现在跳转不了...求解答,加分50,好的100,保证..

追答

其实我是建议你用第二种,但你是在要第一种,我也没办法。
第一种
ArrayList list=(ArrayList)request.getAttribute("Problem_Query");
你在servlet绑定的时候就把它绑在session中,
然后拿的时候,
ArrayList list=(ArrayList)request.getSession().getAttribute("Problem_Query");
然后请求的时候,你只需要传个index给后台,
后台就只返回一个对象。就是一个题目。
在你答完提交的时候,
request.getSession().removeAttribute("Problem_Query")
这样就可以了。
你不会是要我把代码都给你敲出来吧。

本回答被提问者和网友采纳
相似回答