以下是一个使用SSM框架结合JSP实现图书管理系统的图书列表分页显示的简单代码示例:
首先,创建Book实体类(Book.java):
public class Book {
private int id;
private String title;
private String author;
// 其他属性和相应的getter/setter方法省略
}
接下来,创建BookMapper接口(BookMapper.java):
public interface BookMapper {
List<Book> getBooks();
}
然后,在mapper文件夹下创建BookMapper.xml配置文件(BookMapper.xml),定义SQL语句:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.BookMapper">
<select id="getBooks" resultType="com.example.model.Book">
SELECT * FROM book_table
</select>
</mapper>
在service包下创建BookService接口(BookService.java):
public interface BookService {
List<Book> getBooks();
}
实现BookService接口(BookServiceImpl.java):
@Service
public class BookServiceImpl implements BookService {
@Autowired
private BookMapper bookMapper;
@Override
public List<Book> getBooks() {
return bookMapper.getBooks();
}
}
在controller包下创建BookController类(BookController.java):
@Controller
@RequestMapping("/book")
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping("/list")
public String listBooks(Model model, @RequestParam(defaultValue = "1") int page) {
int pageSize = 10; // 每页显示的记录数
int start = (page - 1) * pageSize;
List<Book> books = bookService.getBooks();
// 分页处理
List<Book> pageBooks = new ArrayList<>();
for (int i = start; i < start + pageSize && i < books.size(); i++) {
pageBooks.add(books.get(i));
}
int pageCount = (int) Math.ceil((double) books.size() / pageSize); // 总页数
model.addAttribute("books", pageBooks);
model.addAttribute("pageCount", pageCount);
return "book_list";
}
}
最后,在WebContent目录下创建JSP视图文件(book_list.jsp):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>图书列表</title>
</head>
<body>
<table border="1">
<tr>
<th>ID</th>
<th>Title</th>
<th>Author</th>
<!-- 其他字段列省略 -->
</tr>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<c:forEach var="book" items="${books}">
<tr>
<td>${book.id}</td>
<td>${book.title}</td>
<td>${book.author}</td>
<!-- 其他字段列省略 -->
</tr>
</c:forEach>
</table>
<fmt:formatNumber value="${pageCount}" pattern="###,###"></fmt:formatNumber>页
<%-- 分页处理 --%>
<c:if test="${pageCount > 1}">
<ul>
<c:set var="currentPage" value="${param.page}" />
<c:if test="${empty currentPage}">
<c:set var="currentPage" value="1" />
</c:if>
<c:url var="previousUrl" value="/book/list">
<c:param name="page" value="${currentPage - 1}" />
</c:url>
<li><a href="<c:out value="${previousUrl}" />">上一页</a></li>
<c:forEach begin="1" end="${pageCount}" step="1" varStatus="status">
<c:url var="pageNumberUrl" value="/book/list">
<c:param name="page" value="${status.index + 1}" />
</c:url>
<%-- 当前页的样式标记 --%>
<li
<%-- 如果当前页与循环变量一致,则添加active类名 --%>
class="<%=(status.index + 1 == currentPage) ? 'active' : ''%>">
<!-- 跳转到对应页码的链接 -->
<a href="<c:out value="${pageNumberUrl}" />"><%= status.index + 1 %></a>
</li>
</c:forEach>
<c:url var="nextUrl" value="/book/list">
<%-- 下一页,注意参数为当前页+1 --%>
<c:param name="page" value="${currentPage + 1}" />
</c:url>
<li><a href="<c:out value="${nextUrl}" />">下一页</a></li>
</ul>
</c:if>
</body>
</html>
这是一个简单的示例,通过SSM框架和JSP实现了图书管理系统的图书列表分页显示。需要注意的是,以上代码中可能需要根据具体项目进行适当调整和完善。
希望对你有帮助!
内容由零声教学AI助手提供,问题来源于学员提问