ZBLOG

ssm+jsp实现图书管理系统的图书列表分页显示,给个代码案例

下面是一个基于SSM(Spring + Spring MVC + MyBatis)和JSP的图书管理系统的代码示例,实现了图书列表的分页显示功能。

  1. 实体类 Book.java:
public class Book {
    private Integer id;
    private String title;
    private String author;
    // 其他属性...

    // 省略 getter 和 setter 方法
}
  1. DAO接口 BookMapper.java:
public interface BookMapper {
    List<Book> getBooks();

    int getBookCount();

    List<Book> getBooksByPage(@Param("start") int start, @Param("pageSize") int pageSize);
}
  1. DAO映射文件 BookMapper.xml:
<mapper namespace="com.example.dao.BookMapper">
    <select id="getBooks" resultType="com.example.model.Book">
        SELECT * FROM book
    </select>
    
    <select id="getBookCount" resultType="int">
        SELECT COUNT(*) FROM book
    </select>
    
  	<select id="getBooksByPage" parameterType="map" resultType="com.example.model.Book">
        SELECT * FROM book LIMIT #{start}, #{pageSize}
  	</select>
</mapper>
  1. Service实现类 BookServiceImpl.java:
@Service
public class BookServiceImpl implements BookService {
    @Autowired
    private BookMapper bookMapper;

	  public List<Book> getAllBooks() {
        return bookMapper.getBooks();
    }
	
	public PageInfo<Book> getBooksByPage(int pageNum, int pageSize) {
    	PageHelper.startPage(pageNum, pageSize);
    	List<Book> books = bookMapper.getBooksByPage((pageNum - 1) * pageSize, pageSize);
    	return new PageInfo<>(books);
  	}
	
	public int getBookCount() {
    	return bookMapper.getBookCount();
  	}
}
  1. Controller类 BookController.java:
@Controller
public class BookController {
    @Autowired
    private BookService bookService;

    @RequestMapping("/book/list")
    public String getBookList(@RequestParam(defaultValue = "1") int pageNum, Model model) {
        int pageSize = 10; // 每页显示的记录数
        PageInfo<Book> pageInfo = bookService.getBooksByPage(pageNum, pageSize);
        model.addAttribute("pageInfo", pageInfo);
        return "book_list";
    }
}
  1. JSP页面 book_list.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
	<h1>图书列表</h1>

	<table border="1">
		<tr>
			<th>ID</th>
			<th>Title</th>
			<th>Author</th>
			<!-- 其他列... -->
		</tr>

	<c:forEach items="${pageInfo.list}" var="book">
	    <tr>
	        <td>${book.id}</td>
	        <td>${book.title}</td>
	        <td>${book.author}</td>
	        <!-- 其他列... -->
	    </tr>
    </c:forEach>

   </table>

   <!-- 分页导航 -->
   <div class="pagination">
      <c:if test="${not empty pageInfo}">
         <c:url value="/book/list" var="firstPageUrl">
            <c:param name="pageNum" value="1" />
         </c:url>
         <c:url value="/book/list" var="lastPageUrl">
            <c:param name="pageNum" value="${pageInfo.pages}" />
         </c:url>
         <a href="${firstPageUrl}">首页</a>

         <c:if test="${pageInfo.hasPreviousPage}">
            <c:url value="/book/list" var="prevPageUrl">
               <c:param name="pageNum" value="${pageInfo.prePage}" />
            </c:url>
            <a href="${prevPageUrl}">&lt;</a>
         </c:if>

         <!-- 当前页左边显示的页码 -->
         <c:forEach begin="${pageInfo.pageNum - 2}"
               end="${pageInfo.pageNum - 1 > 0 ? pageInfo.pageNum - 1 : 1 }"
               varStatus="status">
               <c:if test="${status.index > 0}">
                  <c:url value="/book/list" var="pageNumUrl">
                     <c:param name="pageNum" value="${status.index + pageInfo.pageNum - 2}" />
                  </c:url>
                  <a href="${pageNumUrl}">${status.index + pageInfo.pageNum - 2}</a>
              </c:if>
          </c:forEach>

          <!-- 当前页码 -->
          ${pageInfo.pageNum}

          <!-- 当前页右边显示的页码 -->
          <c:forEach begin="${pageInfo.pageNum + 1}"
                end="${(pageInfo.pageNum + 3) <= pageInfo.pages ? (pageInfo.pageNum + 3) : pageInfo.pages}"
                varStatus="status">
                <c:url value="/book/list" var="pageNumUrl">
                  	<c:param name="pageNum" value="${status.index + pageInfo.pageNum}" />
                </c:url>
                <a href="${pageNumUrl}">${status.index + pageInfo.pageNum}</a>
           </c:forEach>

           <c:if test="${pageInfo.hasNextPage}">
               <c:url value="/book/list" var="nextPageUrl">
                  	<c:param name="pageNum" value="${pageInfo.nextPage}" />
               </c:url>
               <a href="${nextPageUrl}">&gt;</a>
           </c:if>

           <a href="${lastPageUrl}">尾页</a>
       </c:if>
   </div>

</body>
</html>

上述代码实现了通过SSM和JSP实现图书列表的分页显示功能。需要注意,还需配置相关的Spring、MyBatis和数据库连接等配置信息,以及引入相应的依赖库。以上代码仅供参考,具体根据项目需求进行调整和完善。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=7852

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?