最近项目需要,因为时间问题我用最简单的方法做了一个查询分页+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>
<%if(intpage>1){%><a href="note.do?page=<%=intpage-1%>">上一页</a><%}
else {%><a href="#" title="已经是第一页">上一页</a><%}%>
<%if(intpage<intpagecount){%><a href="note.do?page=<%=intpage+1%>">下一页</a><%}
else {%><a href="#" title="已经是最后一页">下一页</a><%}%>
<a href=note.do?page=<%=intpagecount%>>末页</a>
</td>
<td>
共 <%=intpagecount%> 页申请记录
当前为第 <%=intpage%> 页
</td>
<td> </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的值为的问题的方法.希望朋友们帮忙指点一下我代码中的不足,互相学习互相进步.
闽公网安备 35060202000074号