JAVAWeb中分页和批量删除

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40348465/article/details/84590797

1.分页操作

   分页的方法有多种,此处采用的方法是:先规定表格中每一页所显示的条数pageSize,然后获取用户所选中的页数currentPage,然后通过这两个参数和mysql中的limit去获取相应的数据。

    (1)为了便于操作,此处编写了一个page类

     

import java.util.List;

public class Page {
	private int currentPage;// 当前页
	private int totalPage;// 总页数
	private int count;// 一页多少条数据
	private List<Book> books;// 当前页的图书数据
	private int totalCount;// 数据总条数

	//此处省略了Getters和Settesrs以及构造方法

}

   (2)JSP页面主要代码

     bookShow.jsp

        <c:if test="${page.currentPage>1 }">
		   <a href="GetBook.do?getBookParam=getAllBook&page=${page.currentPage-1}">上一页</a>
		</c:if>
		   <a href="GetBook.do?getBookParam=getAllBook&page=${1}">首页</a>
		<c:forEach begin="1" end="${page.totalPage }" step="1" var="i">
			<c:if test="${page.currentPage==i }">
				<a href="GetBook.do?getBookParam=getAllBook&page=${i}"><font
					color="#ff0000">${i}</font></a>
			</c:if>
			<c:if test="${page.currentPage!=i }">
				<a href="GetBook.do?getBookParam=getAllBook&page=${i}">${i}</a>
			</c:if>
		</c:forEach>
		   <a href="GetBook.do?getBookParam=getAllBook&page=${page.totalPage}">末页</a>
		<c:if test="${page.currentPage< page.totalPage }">
		   <a href="GetBook.do?getBookParam=getAllBook&page=${page.currentPage+1}">下一页</a>
		</c:if>

    (3)Servlet主要代码

       GetBook.do

     

        String getBookParam = request.getParameter("getBookParam");
		System.out.println("获取到的getBookParam:" + getBookParam);
		//获取固定页的图书信息
		if ("getAllBook".equals(getBookParam)) {
			int currentPage = 1;
			int pageSize = 5;
			String value = request.getParameter("page");
			if(value!=null&&!"".equals(value)){         
	            currentPage = Integer.parseInt(value);
	        }
			page  = bookService.getPagingBooks(currentPage, pageSize);
			request.setAttribute("page", page);
			request.getRequestDispatcher("bookShow.jsp?page="+currentPage).forward(request, response);
		} 

        (4)实体类对应接口中的相关代码

          BookDaoImp.java   中的getPagingBooks()

         

@Override
	public List<Book> getPagingBooks(int currentPage, int pageSize) {
		conn = DataBaseHelper.getConn();
		ResultSetHandler<List<Book>> rsh = new BeanListHandler<Book>(Book.class);
		String sql = "SELECT * FROM book LIMIT ?,?;";
		try {
			return run.query(conn, sql, rsh, (currentPage - 1) * pageSize, pageSize);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				DbUtils.close(conn);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}

   

      2、批量操作

     (1)JSP页面中

        在表格中增加一列,该列中的每一行都是一个多选框,每个多选框的值为对应行的ID,如:

<td><input type="checkbox" id="subcheck" name="subcheck"
							value="${book.bookId}" /></td>

       删除按钮:用于触发批量删除事件

   JS代码:先获取所有选中的多选框,然后将它们对应的值(即ID)添加到一个JS数组中,然后将数据通过AJAX的方式传到后台进行批量删除。

        

<script type="text/javascript">
//批量删除
function batchDelete(){
	 var checkedNum = $("input[name='subcheck']:checked").length;
     if(checkedNum==0){
         alert("请至少选择一项!");
         return false;
     }
     if(confirm("确定删除所选项目?")){
     var checkedList = new Array();
     $("input[name='subcheck']:checked").each(function(){
         checkedList.push($(this).val());
     });
          var url = "BookController.do";
		  var data={"operate":"batchDelete","delitems":checkedList.toString()};  
		  //alert("delitems:"+checkedList.toString());
		  //可返回三个回调函数,success(),complete(),error()
		  //在jQuery3.0后,要用jqXHR.done(),jqXHR.fail(),jqXHR.always()来代替
		   //success(),执行成功运行的回调函数
		  var jqxhr = $.post(url,data,success);
		  jqxhr.fail(function(xhr,error,throwerror){
			  art.dialog.tips('删除失败!');
   		  });
     }	  
	
}
</script>

         (2)在具体的数据库操作中通过绑定的方式进行批量删除

      

// 批量删除
	@Override
	public boolean batchDelete(String[] bookIdStr) {
		conn = DataBaseHelper.getConn();
		String sql = "DELETE FROM book WHERE bookId=?";
		try {
			PreparedStatement pstat = conn.prepareStatement(sql);
			for (int i = 0; i < bookIdStr.length; i++) {
				int bookId = Integer.parseInt(bookIdStr[i]);
				pstat.setInt(1, bookId);
				pstat.addBatch();
			}
			return pstat.executeBatch() != null;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				DbUtils.close(conn);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return false;
	}

猜你喜欢

转载自blog.csdn.net/qq_40348465/article/details/84590797