首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

jsp分页这样写

2011-12-12 
jsp分页这么写?jsp分页这么写?帮忙给个例子,我学习下谢谢[解决办法]1,初始化一些必要参数:%//变量声明Int

jsp分页这么写?
jsp分页这么写?帮忙给个例子,我学习下   谢谢

[解决办法]
1,初始化一些必要参数:

<%//变量声明
Integer fid=new Integer(-1);
int intPageSize; //一页显示的记录数
int intRowCount; // 记录总数
int intPageCount; //总页数
int intPage; // 待显示页码
java.lang.String strPage;
int i;
//设置一页显示的记录数
intPageSize= 8;
//取得待显示页码
strPage = request.getParameter( "page ");
if(strPage==null){//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
}
else{//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
if(intPage
<1) intPage = 1;
}

2,此处获得可逆的数据集合:(可逆:不但数据集合可以向下循环,并且需要向上循环,此处代码实现就不多说了)

ToolKit toolKit=new ToolKit();//连接数据库的一些设置和一些控制数据库方法
Connection cn = toolKit.openConn();//打开数据库连接,调用打开连接的方法
String sql = "Select * From FTMEDB.SUBJECT_SEGMENT where USERID=? order by DATEID desc ";
PreparedStatement sqlStmt=cn.prepareStatement(sql,java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);//这样写目的是为了获得可逆数据集合
sqlStmt.setString(1,(String)session.getAttribute( "id "));//通过使用封装好的PreparedStatement 类,添加条件。
ResultSet sqlRst = sqlStmt.executeQuery(); //执行SQL语句并获取结果集

3,开始获得一些分页所需要的数据,如:总页数,总记录数
if(sqlRst.next()){
sqlRst.last();//光标在最后一行
}
intRowCount = sqlRst.getRow();//获得当前行号,获取记录总数
intPageCount = (intRowCount+intPageSize-1) / intPageSize;//记算总页数
if(intPage> intPageCount) intPage = intPageCount;//调整待显示的页码
%>

4,判断一些条件,记录数大于0时操作

if( intPageCount> 0){
sqlRst.absolute((intPage-1) * intPageSize + 1);//将记录指针定位到待显示页的第一条记录上
//显示数据
int j=(intPage-1)*intPageSize+1; //获得在总记录中当前页第一条记录的记录行号,然后循环体中循环递加就可以得到当页每个记录的记录号
i = 0;
while(i <intPageSize && ! sqlRst.isAfterLast()){
//循环获得sqlRst集合的数据
sqlRst.next();
i++;
j++;
}
}
//关闭结果集
sqlRst.close();
//关闭SQL语句对象
sqlStmt.close();
//关闭数据库
cn.close();%>

5,实现页面显示页码数和当前页码数和记录总数:

<form method= "POST " name= "form1 " action= "km_clsjdmain.jsp?filialesId= <%=fid%> " onsubmit= "return validation(this) " > <DIV align=right>

<%=intPage%> 页 共
<%=intPageCount%> 页

<%if( intPage> 1){%>
<a href= "km_clsjdmain.jsp?page= <%=intPage-1%> "> 上一页 </a> //需要传过去上个页码
<%}%>
<%if( intPage
<intPageCount){%>
<a href= "km_clsjdmain.jsp?page= <%=intPage+1%> "> 下一页 </a> //需要传过去下个页码
<%}%>
转到第:
<input type= "text " name= "page " size= "8 "> 页
<span>
<input class=buttonface type= "submit " value= "GO " name= "cndok ">
</span>
</DIV> </form>

6,当选择填写5步中的text文本进行查询时需要用到下面js语句:

<script type= "text/javascript ">
<!---
function validation(frm){
var myRegExp =/^[0-9]*[1-9][0-9]*$/;


if(frm.page.value == ' ')
{
alert( "页数必须填写 ");
frm.page.focus();
return false;
}
if( !myRegExp.test(frm.page.value) )
{
alert( "页数只能为正整数 ");
frm.page.focus();
return false;
}
}
//--->
</script>


[解决办法]
<body>
<%
ArrayList result = (ArrayList)session.getAttribute( "result "); //得到数据
String currentPage = (String)request.getParameter( "page "); //得到当前页数
if(currentPage == null){
currentPage = "1 "; //如果第一次 页数是1
}

int cPage = Integer.parseInt(currentPage);
int pageSize = 10;
int start = (cPage-1)*pageSize;
int end = cPage*pageSize-1;
int pageCount = (result.size()+pageSize -1)/pageSize;

if(cPage < 1){
cPage = 1;
}
if(cPage > pageCount){
cPage = pageCount;
}
%>
<%
Iterator it = result.iterator();
int i = 0;
while(it.hasNext()){
Data data = (Data)it.next();
if(start <=i && i <=end){
%>
<ul type= "disc ">
<li> <%=data.getOrderID() %> </li>
<li> <%=data.getProductName() %> </li>
<li> <%=data.getUnitPrice() %> </li>
<li> <%=data.getQuantity() %> </li>
</ul>
<%
}
i++;
}
%>
<%if(cPage > 1){%>
<a href= "ShowDetails.jsp?page=1 "> 首 页 </a>
<a href= "ShowDetails.jsp?page= <%=cPage-1 %> "> 上一页 </a>
<%}else{%>
首 页 上一页
<%}if(cPage < pageCount) {%>
<a href= "ShowDetails.jsp?page= <%=cPage+1 %> "> 下一页 </a>
<a href= "ShowDetails.jsp?page= <%=pageCount%> "> 末 页 </a>
<%}else{%>
下一页 末 页
<%} %> <br />
第 <%=cPage %> 页/第 <%=pageCount%> 页
</body>

热点排行