基于struts2的查询分页设计

<!--搜索页面:search.jsp--!>
<s:form action="search" method="post">
 <s:select list="{'书名','作者','出版社'}" headerKey="-1"
        headerValue="选择分类" name="search.searchType" />
 <s:textfield style="width:150px" name="search.inputSearchInfo" value="请输入关键字查询信息" />
 <s:submit value="搜索"/>
 </s:form>


<!--搜索显示页面:searchResult.jsp--!>
<div id="rightSearch">
 <p>显示查询结果</p>
 
 <s:iterator value="#session.page.list" status="status">
    <table width="495" border="0">
     <tr>
      <td width="140" rowspan="8"><a href="#"><img
        src='../images/<s:property value="bookPicture"/>' /> </a>
      </td>
      <td><s:property value="bookName" /></td>

     </tr>
     <tr>
      <td>作者:<s:property value="bookAuthor" />
      </td>
     </tr>
     <tr>
      <td>出版社:<s:property value="bookPress" /></td>
     </tr>
     <tr>
      <td>类别:<s:property value="bookType" />
      </td>
     </tr>
     <tr>
      <td>出版时间:<s:property value="bookPublishTime" />
      </td>
     </tr>
     <tr>
      <td>图书简介:<s:property value="bookRemark" />
      </td>
     </tr>
     <tr>
      <td>现价:<s:property value="bookPrice" />
      </td>
     </tr>
     <tr>
      <td><a href="#">加入购物车</a>  <a href="#">购买</a>
      </td>
     </tr>
    </table>
    <hr />
   </s:iterator>
   <span>
        共<s:property value="#session.page.rowTotalNum"/>记录  
        共<s:property value="#session.page.pageTotalNum"/>页  
        第<s:property value="#session.page.currentPage"/>页  
<!-- 用url传递中文参数, 必须设置编码,可以将Tomcat的默认编码设为UTF-8而不是utf-8,在server.xml中修改如下-->
<!-- <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/> -->
     <a href="http://192.168.0.5:8080/BookStore/search.action?pageNo=1&&search.searchType=<s:property value="#session.searchType"/>&&search.inputSearchInfo=<s:property value="#session.inputSearchInfo"/>">首页</a>
     <s:if test="#session.page.currentPage==1">
    <a href="http://192.168.0.5:8080/BookStore/search.action?pageNo=<s:property value="#session.page.currentPage-1"/>&&search.searchType=<s:property value="#session.searchType"/>&&search.inputSearchInfo=<s:property value="#session.inputSearchInfo"/>">最前一页</a>
     </s:if>
     <s:else>
     <a href="http://192.168.0.5:8080/BookStore/search.action?pageNo=<s:property value="#session.page.currentPage-1"/>&&search.searchType=<s:property value="#session.searchType"/>&&search.inputSearchInfo=<s:property value="#session.inputSearchInfo"/>">上一页</a>
     </s:else>
     <s:if test="#session.page.currentPage==#session.page.pageTotalNum">
     <a href="http://192.168.0.5:8080/BookStore/search.action?pageNo=<s:property value="#session.page.pageTotalNum"/>&&search.searchType=<s:property value="#session.searchType"/>&&search.inputSearchInfo=<s:property value="#session.inputSearchInfo"/>">最后一页</a>
       </s:if>
       <s:else>
       <a href="http://192.168.0.5:8080/BookStore/search.action?pageNo=<s:property value="#session.page.currentPage+1"/>&&search.searchType=<s:property value="#session.searchType"/>&&search.inputSearchInfo=<s:property value="#session.inputSearchInfo"/>">下一页</a>
       </s:else>
        <a href="http://192.168.0.5:8080/BookStore/search.action?pageNo=<s:property value="#session.page.pageTotalNum"/>&&search.searchType=<s:property value="#session.searchType"/>&&search.inputSearchInfo=<s:property value="#session.inputSearchInfo"/>">末页</a>
       </span>
</div>


 

//实体类:Book.java
package entity;

import java.sql.Date;

public class Book {
 private int bookId;
 private String bookNumber;
 private String bookName;
 private String bookAuthor;
 private String bookPress;
 private String bookPicture;
 private int bookAmount;
 private String bookType;
 private double bookPrice;
 private String bookRemark;
 private int bookSales;
 private Date bookPublishTime;
 
 public int getBookId(){
  return bookId;
 }
 
 public void setBookId(int bookId){
  this.bookId = bookId;
 }
 
 public String getBookName(){
  return bookName;
 }
 
 public void setBookName(String bookName){
  this.bookName = bookName;
 }
 
 public String getBookNumber(){
  return bookNumber;
 }
 
 public void setBookNumber(String bookNumber){
  this.bookNumber = bookNumber;
 }
 
 public String getBookAuthor(){
  return bookAuthor;
 }
 
 public void setBookAuthor(String bookAuthor){
  this.bookAuthor = bookAuthor;
 }
 
 public String getBookPress(){
  return bookPress;
 }
 
 public void setBookPress(String bookPress){
  this.bookPress = bookPress;
 }
 
 public String getBookPicture(){
  return bookPicture;
 }
 
 public void setBookPicture(String bookPicture){
  this.bookPicture = bookPicture;
 }
 
 public int getBookAmount(){
  return bookAmount;
 }
 
 public void setBookAmount(int bookAmount){
  this.bookAmount = bookAmount;
 }
 
 public String getBookType(){
  return bookType;
 }
 
 public void setBookType(String bookType){
  this.bookType = bookType;
 }
 
 public double getBookPrice(){
  return bookPrice;
 }
 
 public void setBookPrice(double bookPrice){
  this.bookPrice = bookPrice;
 }
 
 public String getBookRemark(){
  return bookRemark;
 }
 
 public void setBookRemark(String bookRemark){
  this.bookRemark = bookRemark;
 }
 
 public int getBookSales(){
  return bookSales;
 }
 
 public void setBookSales(int bookSales){
  this.bookSales = bookSales;
 }
 
 public Date getBookPublishTime(){
  return bookPublishTime;
 }
 
 public void setBookPublishTime(Date bookPublishTime){
  this.bookPublishTime = bookPublishTime;
 }
}


//Search.java
package entity;

public class Search{
 private String searchType;
 private String inputSearchInfo;
 
 public String getSearchType(){
  return searchType;
 }
 
 public void setSearchType(String searchType){
  this.searchType = searchType;
 }
 
 public String getInputSearchInfo(){
  return inputSearchInfo;
 }
 
 public void setInputSearchInfo(String inputSearchInfo){
  this.inputSearchInfo = inputSearchInfo;
 }
}


//Page.java
[code=Java]package entity;

import java.util.List;


public class Page {
 @SuppressWarnings("rawtypes")
 private List list;     //存放一页的记录
 private int currentPage;    //当前页
 private int pageSize;   //每一页的记录数
 private int pageTotalNum;   //总页数
 private int rowTotalNum;   //总记录数

 public int getCurrentPage() {
  return currentPage;
 }

 public void setCurrentPage(int currentPage) {
  this.currentPage = currentPage;
 }

 public int getPageSize() {
  return pageSize;
 }

 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
 }

 public int getPageTotalNum() {
  return pageTotalNum;
 }

 public void setPageTotalNum(int pageTotalNum) {
  this.pageTotalNum = pageTotalNum;
 }

 public int getRowTotalNum() {
  return rowTotalNum;
 }

 public void setRowTotalNum(int rowTotalNum) {
  this.rowTotalNum = rowTotalNum;
 }

 @SuppressWarnings("rawtypes")
 public List getList(){
  return list;
 }

 @SuppressWarnings("rawtypes")
 public void setList(List list) {
  this.list = list;
 }
 

 public int countPageTotalNum(int rowTotalNum,int pageSize){
  return pageTotalNum=((rowTotalNum-1+pageSize)/pageSize);
 }
 
 public int countFrom(int pageNo,int pageSize){   //计算一页开始记录数
  return (pageNo-1)*pageSize;
 }
 
 public int countTo(int pageNo,int rowTotalNum,int pageSize){   //计算一页终止记录数
  if(pageNo != pageTotalNum)
  {
   return pageNo*pageSize;
  }else{
   return rowTotalNum;
  }
 }
 
 public int countCurrentPage(int pageNo){
  if(pageNo<1)     //如果当前页面数小于1,则设当前页面数为1
  {        
   pageNo = 1;
  }
  if(pageNo>pageTotalNum)   //如果当前页面数大于总页面数,则设当前页面数为总页面数
  {
   pageNo = pageTotalNum;
  }
  return pageNo;
 }
 
}
 
//DAO层:UserDAO.java
public List<Book> searchBook(Search search) {
  String sql = null;
  String bookName = "书名";
  String bookAuthor = "作者";
  String bookPress = "出版社";
  List<Book> books = new ArrayList<Book>();
  con = DatabaseDAO.getCon();
  if (search.getSearchType().compareTo(bookName) == 0) {
   sql = "select * from book where bookName like '%"
     + search.getInputSearchInfo()
     + "%' order by bookId asc";
  } else if (search.getSearchType().compareTo(bookAuthor) == 0) {
   sql = "select * from book where bookAuthor like '%"
     + search.getInputSearchInfo()
     + "%' order by bookId asc";
  } else if (search.getSearchType().compareTo(bookPress) == 0) {
   sql = "select * from book where bookPress like '%"
     + search.getInputSearchInfo()
     + "%' order by bookId asc";
  }
  if (sql != null) {
   try {
    pt = con.prepareStatement(sql);
    rs = pt.executeQuery();
    while (rs.next()) {
     Book book = new Book();
     book.setBookId(rs.getInt("bookId"));
     book.setBookNumber(rs.getString("bookNumber"));
     book.setBookName(rs.getString("bookName"));
     book.setBookAuthor(rs.getString("bookAuthor"));
     book.setBookPress(rs.getString("bookPress"));
     book.setBookPicture(rs.getString("bookPicture"));
     book.setBookAmount(rs.getInt("bookAmount"));
     book.setBookType(rs.getString("bookType"));
     book.setBookPrice(rs.getDouble("bookPrice"));
     book.setBookRemark(rs.getString("bookRemark"));
     book.setBookSales(rs.getInt("bookSales"));
     book.setBookPublishTime(rs.getDate("bookPublishTime"));
     books.add(book);
    }
   } catch (SQLException e) {
    e.printStackTrace();
   } finally {
    DatabaseDAO.closeRs(rs);
    DatabaseDAO.closePt(pt);
    DatabaseDAO.closeCon(con);
   }
   return books;
  } else {
   return null;
  }
 }



//Service层:SearchService.java
package service;

import java.util.List;

import dao.UserDAO;
import entity.Book;
import entity.Page;
import entity.Search;

public class SearchService {
 private List<Book> books;
 private Book book;
 private Search search;
 private Page page;

 public Book getBook() {
  return book;
 }

 public void setBook(Book book) {
  this.book = book;
 }

 public Search getSearch(){
  return search;
 }

 public void setSearch(Search search){
  this.search = search;
 }

 public List<Book> getBooks(){
  return books;
 }

 public void setBooks(List<Book> books){
  this.books = books;
 }

 public Page getPage() {
  return page;
 }

 public void setPage(Page page) {
  this.page = page;
 }

 public Page getPage(int pageNo,int pageSize,Search search) throws Exception{
  UserDAO userDao = new UserDAO();
  Page page = new Page();
  List<Book> books = userDao.searchBook(search);
  int rowTotalNum = books.size();              //获取总记录数
  int pageTotalNum = page.countPageTotalNum(rowTotalNum, pageSize); //获取总页面数
  int currentPage = page.countCurrentPage(pageNo);     //获取当前页
  int from = page.countFrom(currentPage, pageSize);     //获取一页起始记录
  int to = page.countTo(currentPage, rowTotalNum,pageSize);   //获取一页终止记录
  
  books = books.subList(from, to);         //从总记录中截取一页的显示记录(包含from不包含to)
  
  //将数据进行封装
  page.setPageSize(pageSize); 
  page.setCurrentPage(currentPage);
  page.setRowTotalNum(rowTotalNum);
  page.setPageTotalNum(pageTotalNum);
  page.setList(books);           //将截取的记录保存
  return page;
 }
}



//Action类:SearchAction.java
package com.bs.action;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import service.SearchService;

import com.opensymphony.xwork2.ActionSupport;
import entity.Page;
import entity.Search;
public class SearchAction extends ActionSupport{
 /**
  * 
  */
 private static final long serialVersionUID = 1L;
 private Search search;
 private Page page;
 private int pageNo=1;     //默认当前页为第一页
 private int pageSize = 5;    //每页显示5条记录
 
 public int getPageNo() {
  return pageNo;
 }

 public void setPageNo(int pageNo) {
  this.pageNo = pageNo;
 }

 public Page getPage() {
  return page;
 }

 public void setPage(Page page) {
  this.page = page;
 }

 public Search getSearch() {
  return search;
 }

 public void setSearch(Search search) {
  this.search = search;
 }

 public String search() throws Exception{
  SearchService searchService = new SearchService();
  page = searchService.getPage(pageNo, pageSize,search);     //获取page
  HttpSession session = ServletActionContext.getRequest().getSession();
  //将数据用session保存
     session.setAttribute("page", page); 
     session.setAttribute("searchType", search.getSearchType());
     session.setAttribute("inputSearchInfo", search.getInputSearchInfo());
  return SUCCESS;
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值