posts - 70,comments - 408,trackbacks - 0

          最近項目需要,因為時間問題我用最簡單的方法做了一個查詢分頁+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="resume/images/color.jpg" class="font4"> <img src="resume/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.

          這樣處理分頁感覺超級簡單,這個Action就是起到了一個中轉的作用,沒有實際業務功能,如果沒有他,那個JSP只需要修改一下上下頁的連接地址為本身.就可以自己實現查詢分頁功能.JSP頁最后的兩個JS方法是負責處理CheckBox全選和,和提交CheckBox的值為的問題的方法.希望朋友們幫忙指點一下我代碼中的不足,互相學習互相進步.

          posted on 2006-06-02 10:57 我心依舊 閱讀(3984) 評論(2)  編輯  收藏

          FeedBack:
          # re: 簡單的查詢分頁+CheckBox的全選提交,解決方法.
          2006-06-11 11:09 | 青誠
          你的這段程序邏輯上是沒有問題,但如果是數據量非常大的話,運行起來就會有問題。另外最關鍵的是你在jsp里面頻繁的打開關閉連接等是很浪費資源的,還有我認為在jsp就只應該完成顯示功能,不應該包含具體的業務邏輯。  回復  更多評論
            
          # re: 簡單的查詢分頁+CheckBox的全選提交,解決方法.
          2007-03-29 16:16 | shining
          暈啊 將那么多java代碼寫在jsp頁面上,這也算MVC嗎???
          給你一些建議吧!
          1)將分頁邏輯封裝在一個bean里面,bean里面只接收3個參數(起始頁,分頁單位,待分頁的List), 在Action里面分好頁后將bean傳給jsp,再在jsp中通過${obj.value}的表達式來引用當前頁數,全部頁數,等屬性.
          2)CheckBox的全選提交方法可以寫在一個外部的js文件檔里面,然后引用就OK了.

          看來你還比較缺乏OO的思維啊!  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 青铜峡市| 海伦市| 鄂尔多斯市| 巴塘县| 麻城市| 浦东新区| 霸州市| 仪陇县| 平乐县| 宁武县| 穆棱市| 五莲县| 静安区| 中方县| 万盛区| 宁南县| 江北区| 乐都县| 兴海县| 桃源县| 怀远县| 磐石市| 涞水县| 建水县| 乐亭县| 弥勒县| 东海县| 井陉县| 丹棱县| 大港区| 德格县| 怀安县| 临澧县| 陕西省| 金坛市| 怀化市| 永福县| 南乐县| 百色市| 得荣县| 北海市|