今天下来,湛江格斗联盟系统做完一半有多了。用户管理中心明天再收拾一下手尾就完成了,管理员中心和用户管理中心差不多的,只是两者管理的权限不一样,把用户管理中心的代码改一下就可以。所以这个系统很快可以完成,相信很快就有时间看张孝祥老师的Java 基础加强视频了。然后再系统的复习一遍Java,做好入学考核的准备!
我今天做了会员管理页面,我觉得分页技术比较关键。
以前用PHP做聊天系统时(只做过很小型的聊天系统
),分页都是用select * from myTable order by id desc limit $offset,$pagesize 语句在数据库中选择每一页的数据,然后再页面里显示的;不过这招在SQL server里是不管用的。这次我得突破这个约束,按老师说的,先把所有符合条件的数据查询出来,再在结果集中取得每页数据。经过N次的调试,数据分页显示成功!把代码贴出来,
![jsp数据库分页技术 - 焚狼水手 - 焚狼水手 jsp数据库分页技术 - 焚狼水手 - 焚狼水手](https://i-blog.csdnimg.cn/blog_migrate/bd9bd1a68bef391d0f344400e8600586.gif)
<%@ 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 %>" οnclick="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="删除选中项" οnclick="return window.confirm('此动作不可恢复,确定删除所选会员吗?')"/>
</td>
</tr>
</table>
</form>
这个是管理页面,如果只把会员列出来,而没有操作的话。和不列出来没神马区别,所以至少得让管理员可以对会员做删除操作。所以在每个会员信息后面加了一项“删除”连接:
<td><a href="dele_user.jsp?dele_id=<%=user_id %>" οnclick="return window.confirm('此动作不可恢复,确定删除该会员吗')">删除</a></td>
如果我想批量删除会员呢?没错,建立一个表单,每个会员添加一个复选框。关键是怎样点击“全选”按钮每个复选框都变成选中状态。javascript 应该可以完成这项工作,但考虑到javascript 不稳定,而且调试很麻烦。所以决定用Java实现:
![jsp数据库分页技术 - 焚狼水手 - 焚狼水手 jsp数据库分页技术 - 焚狼水手 - 焚狼水手](http://img687.ph.126.net/ecVlXGq7Rmg7XNPpLlI6Tg==/2822912541432437704.png)
首先使用户点击“全选”选项时,向本页面提交一个参数:
<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="删除选中项" οnclick="return window.confirm('此动作不可恢复,确定删除所选会员吗?')"/>
![jsp数据库分页技术 - 焚狼水手 - 焚狼水手 jsp数据库分页技术 - 焚狼水手 - 焚狼水手](http://img770.ph.126.net/f3CFUg6MW7jQVlktBbNZOA==/1244682347015674638.png)
好了,现在很晚了。又到了学校拉闸限电的时间啦。明天再继续写吧。晚安!