服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

查询分页与checkbox全选提交

最近项目需要,因为时间问题我用最简单的方法做了一个查询分页+checkbox的全选提交,我觉得非常适合小项目和类似邮件列表的功能.下面贴出我的代码,希望朋友们多给我提毛病.
主要代码都写在jsp里.下面是一个apply_note.jsp:
<%@page contenttype="text/html;charset=gbk" language="java"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.deepdo.common.connect.consql"%>
<%@ taglib uri="/web-inf/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/web-inf/struts-bean.tld" prefix="bean" %>
<style type=text/css>
td,th,p,span,div,a,a {font-size:12px;text-decoration:none}
.blak a {color:#000; text-decoration:none}
.blak a:hover {color:#f00; text-decoration:underline}
</style>
<body>
<jsp:include page="/include/deepdo.jsp" flush="true"/>
<table width="700" border="0" align="center" cellpadding="0" cellspacing="0"  height="450">
  <tr>
 <td valign="top" class="bg_td1" height="450" width="160">
 <jsp:include page="/include/navigation.jsp" flush="true"/>
 </td>
 <td valign="top" class="bg_td1" height="450" width="540">
 <table width="590" border="0" align="center" cellpadding="2" cellspacing="2" bgcolor="#faf9f5">
          <tr>
            <td background="http://www.itus.cnresume/images/color.jpg" class="font4"> <img src="http://www.itus.cnresume/images/dot.gif">
              工作申请记录</td>
          </tr>
        </table>
        <table width="590" border="0" align="center" cellpadding="4" cellspacing="2">
        <%
  //变量声明
  connection sqlcon; //数据库连接对象
  statement sqlstmt; //sql语句对象
  resultset sqlrst; //结果集对象
  string strcon; //数据库连接字符串
  string strsql; //sql语句
  int intpagesize; //一页显示的记录数
  int introwcount; //记录总数
  int intpagecount; //总页数
  int intpage; //待显示页码
  string strpage;
  int i;
  //设置一页显示的记录数
  intpagesize = 10;
  //取得待显示页码
  strpage = request.getparameter("page");
  if(strpage==null){//表明在querystring中没有page这一个参数,此时显示第一页数据
  intpage = 1;
  }
  else{//将字符串转换成整型
  intpage = java.lang.integer.parseint(strpage);
  if(intpage<1) intpage = 1;
  }
  //获取一个tomcat配置的连接池
  sqlcon = consql.getcon();
  //创建一个可以滚动的只读的sql语句对象
  sqlstmt = sqlcon.createstatement(java.sql.resultset.type_scroll_insensitive,java.sql.resultset.concur_read_only);
  //准备sql语句
  strsql = "select * from apply_note where userid="+request.getattribute("userid");
  //执行sql语句并获取结果集
  sqlrst = sqlstmt.executequery(strsql);
  //获取记录总数
  sqlrst.last();
  introwcount = sqlrst.getrow();
  //记算总页数
  intpagecount = (introwcount+intpagesize-1) / intpagesize;
  //调整待显示的页码
  if(intpage>intpagecount) intpage = intpagecount;
  %>
  <tr>
  <td align="center" bgcolor="#efefef" width="150" height="27">已经申请过的职位</td>
  <td align="center" bgcolor="#efefef" width="140" height="27">公司名称</td>
  <td align="center" bgcolor="#efefef" width="75" height="27">申请时间</td>
  <td align="center" bgcolor="#efefef" width="25" height="27"><input type=checkbox name="selectall" onclick="selectall();"></td>
  </tr>
  <%
  if(intpagecount>0){
  //将记录指针定位到待显示页的第一条记录上
  sqlrst.absolute((intpage-1) * intpagesize + 1);
  //显示数据
  i = 0;
  while(i<intpagesize && !sqlrst.isafterlast()){
  %>
  <form name ="noteform" action="noteremove.do" method="post">
  <tr>
  <td><a href=<%=sqlrst.getstring("url")%> target="_blank"><%=sqlrst.getstring("job")%></a></td>
  <td><%=sqlrst.getstring("unit")%></td>
  <td><%=sqlrst.getstring("date_time")%></td>
  <td width="26" align="center"><input type=checkbox name="id" value=<%=sqlrst.getstring("id")%>></td>
  </tr>
  <%
  sqlrst.next();
  i++;
  }
  }
  %>
  <tr>
  <td>
  <a href="note.do?page=1">首页</a>&nbsp;&nbsp;
  <%if(intpage>1){%><a href="note.do?page=<%=intpage-1%>">上一页</a><%}
  else {%><a href="#" title="已经是第一页">上一页</a><%}%>&nbsp;&nbsp;
  <%if(intpage<intpagecount){%><a href="note.do?page=<%=intpage+1%>">下一页</a><%}
  else {%><a href="#" title="已经是最后一页">下一页</a><%}%>&nbsp;&nbsp;
  <a href=note.do?page=<%=intpagecount%>>末页</a>
  </td>
  <td>
  共 <%=intpagecount%> 页申请记录&nbsp;&nbsp;
  当前为第 <%=intpage%> 页&nbsp;&nbsp;
  </td>
  <td>&nbsp;</td>
  <td align="center"><input type="submit" value="删除" onclick="managesubmit();"></td>
  <input type="hidden" name="checkvalue" value="">
  </tr>
  </form>
  <%
  //关闭结果集
  sqlrst.close();
  //关闭sql语句对象
  sqlstmt.close();
  //关闭数据库
  sqlcon.close();
  %> 
        </table>
    </td>
  </tr>
</table>
<jsp:include page="/include/tail.html" flush="true"/>
</body>
<script language="javascript">
function managesubmit(){
 var chkels=document.getelementsbyname("id");
 var checkedids="";
 for(var i=0;i<chkels.length;i++){
  if(chkels.item(i).type != "checkbox")continue;
  var oel = chkels.item(i);
  if(oel.checked) {
   checkedids = checkedids + (oel.value + ",");
  }
 }
 document.noteform.checkvalue.value = checkedids;
 if ( checkedids == "" ) return false;
 return true;
}

function selectall(){
 var chkel = document.getelementsbyname("selectall").item(0);
 var chkels=document.getelementsbyname("id");
 for(var i=0;i<chkels.length;i++){
  if(chkels.item(i).type != "checkbox")continue;
  var oel = chkels.item(i);
  oel.status=chkel.status;
 }
}
</script>
</html>
下面是一个action,基本没处理业务逻辑,就是从cookie里获得了用户的id.
noteaction.java

package com.deepdo.apply.action;

import java.util.map;

import javax.servlet.http.cookie;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

import org.apache.struts.action.action;
import org.apache.struts.action.actionform;
import org.apache.struts.action.actionforward;
import org.apache.struts.action.actionmapping;

import com.deepdo.apply.form.noteform;
import com.deepdo.common.cookie.cookieutil;

public class noteaction extends action{

 public actionforward execute(actionmapping mapping,actionform form,httpservletrequest request,httpservletresponse response) {
  noteform noteform = (noteform) form;
  string page = noteform.getpage();
  string userid = null;
  string deepid = null;
  string ddsessid = null;
  string fettle = null;
  //获取cookie中用户的id
  map map = null;
  cookie[] cookies = request.getcookies();
  if(cookies!=null){
   int usecook = 0;
   for(int i = 0; i < cookies.length; i++){
    if((cookies[i].getname()).equals("deepdoid")){
     deepid = cookies[i].getvalue();
     usecook++;
     }
    if((cookies[i].getname()).equals("ddosessid")){
     ddsessid = cookies[i].getvalue();
     usecook++;
     }
   }
   if(usecook==2){
    map = cookieutil.getcookie(deepid,ddsessid);
    if(map!=null){
     userid=(string)map.get("userid");
     fettle=(string)map.get("purview");
     int in = integer.valueof(fettle).intvalue();
     if(in <= 0) {
      return mapping.findforward("control");
     }
    }
   }
  }
  system.out.println("从cookie中获取的username是"+userid);
  if(userid==null) {
   system.out.println("用户未登陆");
   return mapping.findforward("forward");
  }
  request.setattribute("page",page);
  request.setattribute("userid",userid);
  return mapping.findforward("apply_note");
 }
}

这样处理分页感觉超级简单,这个action就是起到了一个中转的作用,没有实际业务功能,如果没有他,那个jsp只需要修改一下上下页的连接地址为本身.就可以自己实现查询分页功能.jsp页最后的两个js方法是负责处理checkbox全选和,和提交checkbox的值为的问题的方法.希望朋友们帮忙指点一下我代码中的不足,互相学习互相进步.

扫描关注微信公众号