您的位置:首页 > 数据库 > MySQL

分页之原始链接+servlet跳转+MySQL

2015-12-05 13:04 483 查看
注意:这种分页针对数据量不是很多的可以使用。

导入的包:mysql-connector-java-5.1.20-bin.jar

第一步:创建一个实体类

public class BookBean {
public static final int PAGE_SIZE = 2;// 每页记录数
private int id;// 编号
private String name;// 图书名称
private double price;// 定价  <span style="font-family: Arial, Helvetica, sans-serif;">这里要有get/set方法</span>


第二步:创建一个DAO

public class BookDao {
/**
* 获取数据库连接
*/
public Connection getConnection() {
Connection conn = null; // 数据库连接
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载数据库驱动,注册到驱动管理器
// 数据库连接字符串
String url = "jdbc:mysql://localhost:3306/db_database09";
String username = "root"; // 数据库用户名
String password = "root"; // 数据库密码
// 创建Connection连接
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn; // 返回数据库连接
}
/**
* 分页查询所有商品信息
* @param page 页数
* @return List<Book>
*/
public List<BookBean> find(int page) {
List<BookBean> list = new ArrayList<>(); // 创建List
Connection conn = getConnection(); // 获取数据库连接
// 分页查询的SQL语句
String sql = "<strong>select * from tb_Book order by id desc limit ?,?</strong>";
try {
PreparedStatement ps = conn.prepareStatement(sql); // 获取PreparedStatement
ps.setInt(1, (page - 1) * BookBean.PAGE_SIZE); // 对SQL语句中的第1个参数赋值
ps.setInt(2, BookBean.PAGE_SIZE); // 对SQL语句中的第2个参数赋值
ResultSet rs = ps.executeQuery(); // 执行查询操作
while (rs.next()) { // 光标向后移动,并判断是否有效
BookBean b = new BookBean(); // 实例化BookBean
b.setId(rs.getInt("id")); // 对id属性赋值
b.setName(rs.getString("name")); // 对name属性赋值
b.setPrice(rs.getFloat("price")); // 对price属性赋值
list.add(b); // 将BookBean添加到List集合中
}
rs.close(); // 关闭ResultSet
ps.close(); // 关闭PreparedStatement
conn.close(); // 关闭Connection
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}

/**
* 查询总记录数
* @return 总记录数
*/
public int findCount() {
int count = 0; // 总记录数
Connection conn = getConnection(); // 获取数据库连接
String sql = "select count(*) from tb_book"; // 查询总记录数SQL语句
try {
Statement stmt = conn.createStatement(); // 创建Statement
ResultSet rs = stmt.executeQuery(sql); // 查询并获取ResultSet
if (rs.next()) { // 光标向后移动,并判断是否有效
count = rs.getInt(1); // 对总记录数赋值
}
rs.close(); // 关闭ResultSet
conn.close(); // 关闭Connection
} catch (SQLException e) {
e.printStackTrace();
}
return count; // 返回总记录数
}
}


第三步:创建一个servlet(这里用的是3.0版本)

public class FindServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) <span style="font-family: Arial, Helvetica, sans-serif;">throws ServletException, IOException {</span>
int currPage = 1; 				// 当前页码
<strong>if(request.getParameter("page") != null){// 判断传递页码是否有效(这里的page与创建分页导航的page相对应)</strong>
currPage = Integer.parseInt(request.getParameter("page"));// 对当前页码赋值
}
BookDao dao = new BookDao();			// 实例化BookDao
List<!-- <BookBean> --> list = dao.find(currPage);// 查询所有图书信息
request.setAttribute("list", list);		// 将list放置到request中
int pages ; 					// 总页数
int count = dao.findCount();			// 查询总记录数
if(count % BookBean.PAGE_SIZE == 0){ 		// 计算总页数
pages = count / BookBean.PAGE_SIZE; 	// 对总页数赋值
}else{
pages = count / BookBean.PAGE_SIZE + 1; // 对总页数赋值
}
StringBuffer sb = new StringBuffer();		// 实例化StringBuffer
for(int i=1; <strong>i <= pages+1</strong>; i++){		// 通过循环构建分页导航条,<strong>注意page+1</strong>
if(i == currPage){ 			// 判断是否为当前页
sb.append("『" + i + "』");	// 构建分页导航条,当点击时,会重点显示出点击的页面
}else{
// 构建分页导航条
<strong>sb.append("<a href='FindServlet?<span style="font-size:18px;">page</span>=" + i + "'>" + i + "</a>");</strong>
}
sb.append(" ");			// 构建分页导航条
}
request.setAttribute("bar", sb.toString());	// 将分页导航条的字符串放置到request中
// 转发到bookList.jsp页面
request.getRequestDispatcher("bookList.jsp").forward(request, response);
}
}


第四步:创建一个显示分页数据的jsp和一个跳转到servlet的jsp

首先://一个跳转到servlet的jsp <span style="font-family: Arial, Helvetica, sans-serif;"><% response.sendRedirect("要显示分页数据的jsp")%>;</span>



然后://一个显示分页数据的jsp
<%@ page import="java.util.*"%>
<%@ page import="com.mingrisoft.BookBean"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>显示图书列表</title>
<style type="text/css">
td,th {
padding: 5px;
}
</style>
</head>
<body>
<div width="98%" align="center">
<h2>分页显示图书列表</h2>
</div>
<table width="98%" border="0" align="center" cellpadding="0"
cellspacing="1" bgcolor="#666666">
<tr>
<th bgcolor="#FFFFFF">ID</th>
<th bgcolor="#FFFFFF">图书名称</th>
<th bgcolor="#FFFFFF">价格</th>
</tr>
<%
// 获取图书信息集合
List<BookBean> list = (List<BookBean>) request.getAttribute("list");
// 判断集合是否有效
if (list == null || list.size() < 1) {
out.print("<tr><td bgcolor='#FFFFFF' colspan='5'>没有任何图书信息!</td></tr>");
} else {
// 遍历图书集合中的数据
for (BookBean book : list) {
%>
<tr align="center">
<td bgcolor="#FFFFFF" ><%=book.getId()%></td>
<td bgcolor="#FFFFFF"><%=book.getName()%></td>
<td bgcolor="#FFFFFF"><%=book.getPrice()%></td>

</tr>
<%
}
}
%>
</table>
<div width="98%" align="center" style="padding-top:10px;">
<%=request.getAttribute("bar")%>
</div>
</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  分页