jsp数据库分页技术

来源:互联网 发布:js excel 导入 编辑:程序博客网 时间:2024/05/17 09:22

今天下来,湛江格斗联盟系统做完一半有多了。用户管理中心明天再收拾一下手尾就完成了,管理员中心和用户管理中心差不多的,只是两者管理的权限不一样,把用户管理中心的代码改一下就可以。所以这个系统很快可以完成,相信很快就有时间看张孝祥老师的Java 基础加强视频了。然后再系统的复习一遍Java,做好入学考核的准备!


我今天做了会员管理页面,我觉得分页技术比较关键。
以前用PHP做聊天系统时(只做过很小型的聊天系统jsp数据库分页技术 - 焚狼水手 - 焚狼水手),分页都是用select * from myTable order by id desc limit $offset,$pagesize 语句在数据库中选择每一页的数据,然后再页面里显示的;不过这招在SQL server里是不管用的。这次我得突破这个约束,按老师说的,先把所有符合条件的数据查询出来,再在结果集中取得每页数据。经过N次的调试,数据分页显示成功!把代码贴出来,

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="page.Show"%>
<%@ page import="db.Conn"%>
<%@ page import="java.sql.*" %>
<%request.setCharacterEncoding("gb2312");%>
 <%
 Show show   = new Show();
 Conn conn= new Conn();
 ResultSet rs;
 String sqlstr ="select * from user";
 String strPage;//接收页码
 String mychose; //存储复选框是否全选信息
 rs=conn.getRs(sqlstr);
  //分页
  //每页显示数目,总页数,记录总数,当前页,前一页,下一页,
 int pageSize,pageCount,rowCount,currPage,prePage,nextPage;
 pageSize=10;
 strPage = request.getParameter("currPage");
 mychose = request.getParameter("chose");
 
 if(strPage==null){
 currPage=1;
 }else{
 //如果传入参数不为空,把该参数转换为整型
 currPage=Integer.parseInt(strPage);
 }
   
 rs.last();
 rowCount  =rs.getRow();
 pageCount =(rowCount+pageSize-1)/pageSize;
 %>
 <form method="get" action="dele_user.jsp">
 <table border="1">
  <tr>
  <th>选择</th>
    <th>用户名</th>
    <th>密码</th>
    <th>性别</th>
    <th>年龄</th>
    <th>邮箱</th>
     <th>操作</th>
  </tr>
 <%
if(pageCount>0){
//将记录指针定位到待显示页的第一条记录上
rs.absolute((currPage-1) * pageSize + 1);
//显示数据
int i = 0,k=1;
int user_id;
String user_name,user_pass,user_sex,user_age,user_email;
while(i<pageSize&& !rs.isAfterLast()){
user_id  =rs.getInt(1);
user_name=rs.getString(2);
user_pass=rs.getString(3);
user_sex=rs.getString(4);
user_age=rs.getString(5);
user_email=rs.getString(6);
%>

  <tr>
    <td><input type="checkBox" name="chose" value="<%=user_id %>"<%=mychose %>/></td>
    <td><%=user_name %></td>
    <td><%=user_pass %></td>
    <td><%=user_sex %></td>
    <td><%=user_age%></td>
    <td><%=user_email %></td>
    <td><a href="dele_user.jsp?dele_id=<%=user_id %>" onclick="return window.confirm('此动作不可恢复,确定删除该会员吗')">删除</a></td>
    
  </tr>
  
   
<%
i++;
rs.next();
}
%>
<tr>
<td colspan ="7"><%="共"+pageCount+"页" %>
<%if(currPage>1){%>
<a href="mana_user.jsp?currPage=<%=currPage-1%>">上一页</a><%}%>

<%while(k<=pageCount){%>
<a href="mana_user.jsp?currPage=<%=k%>"><%=k %></a>
<% k++;}%>
<%if(currPage<pageCount){%><a href="mana_user.jsp?currPage=<%=currPage+1%>">下一页</a>
<%="当前第"+currPage+"页" %>
</td>
</tr>
<%
 }
%>
<tr>
<td colspan="2"><a href="mana_user.jsp?chose=checked">全选</a>
<td colspan="2"><a href="mana_user.jsp?chose=''">全不选</a>
<td colspan="3"><input type="submit" value="删除选中项" onclick="return window.confirm('此动作不可恢复,确定删除所选会员吗?')"/>

</td>
</tr>
</table>
</form>

这个是管理页面,如果只把会员列出来,而没有操作的话。和不列出来没神马区别,所以至少得让管理员可以对会员做删除操作。所以在每个会员信息后面加了一项“删除”连接:
<td><a href="dele_user.jsp?dele_id=<%=user_id %>" onclick="return window.confirm('此动作不可恢复,确定删除该会员吗')">删除</a></td>
如果我想批量删除会员呢?没错,建立一个表单,每个会员添加一个复选框。关键是怎样点击“全选”按钮每个复选框都变成选中状态。javascript 应该可以完成这项工作,但考虑到javascript 不稳定,而且调试很麻烦。所以决定用Java实现:
jsp数据库分页技术 - 焚狼水手 - 焚狼水手
 
首先使用户点击“全选”选项时,向本页面提交一个参数:<a href="mana_user.jsp?chose=checked">全选</a>这个参数为chose.参数值为checked;然后接收这个参数值:String mychose = request.getParameter("chose");页面接收到这个chose 的值后,把它作为checkbox  的一个属性  <td><input type="checkBox" name="chose" value="<%=user_id %>"<%=mychose %>/></td>这样当用户点击全选时,上面的语句实际就等价于 <td><input type="checkBox" name="chose" value="<%=user_id %>checked />这样当前的每项都被选中了。

为避免误删,在用户点击删除选项时,还得确认一下用户是否真的要删除。用如下javascript 语句实现:
<input type="submit" value="删除选中项" onclick="return window.confirm('此动作不可恢复,确定删除所选会员吗?')"/>
jsp数据库分页技术 - 焚狼水手 - 焚狼水手
 这样就OK了!

好了,现在很晚了。又到了学校拉闸限电的时间啦。明天再继续写吧。晚安!

原创粉丝点击