网站分页学习笔记

来源:互联网 发布:微信运动的数据来源 编辑:程序博客网 时间:2024/05/12 04:40

当我们访问网站时候,有时由于数据量过大会导致许多问题,因此此时我们就需要网页的分页来解决问题。具体步骤和代码如下:

一、建库建表,我以Oracle数据库为例:

create table user_tables(
id number(10),
name varchar(10),
password varchar(10)
);

insert into user_tables values(1301,'zhangsan',1234);
insert into user_tables values(1302,'lisi',1234);
insert into user_tables values(1303,'wangwu',4321);

二、项目中的几个包

a. dao:主要用于获取数据库中的信息

b.domainJavabean的文件包

c. service: 业务逻辑层,编写方法从dao中获取数据

d.servlet: 服务代码,处理请求响应等

e. tools:其他工具类

三、Java代码

1.连接数据库:

package com.guigu.tools;
import java.sql.Connection;
import java.sql.DriverManager;
/**
 * 获取数据库连接
 * @author liuyuan
 *
 */
public class GetConnection {
private static Connection conn=null;
public static Connection getConnection() throws Exception{
Class.forName("oracle.jdbc.OracleDriver");
String url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
String user="数据库用户名";
String password="oracle数据库密码";
conn=DriverManager.getConnection(url, user, password);
return conn;
}
}

 2.从数据库中获取数据

package com.guigu.dao;

import java.sql.Connection;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.guigu.domin.Page;
import com.guigu.domin.User;
import com.guigu.tools.GetConnection;

/**
 * 此类主要用于获取数据库数据
 * @author liuyuan
 *
 */
public class Select {
//获取数据库用户信息
Connection conn=null;
public Select() {
try {
conn=GetConnection.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
// public List<User> select1(){
// List<User> list=new ArrayList<User>();
// try {
// String sql1="select * from user_tables";
// PreparedStatement ps=conn.prepareStatement(sql1);
// ResultSet rs=ps.executeQuery();
// while(rs.next()){
// User user=new User();
// user.setId(Integer.parseInt(rs.getString(1)));
// user.setName(rs.getString(2));
// user.setPassword(rs.getString(3));
// list.add(user);
// }
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//// for (User user : list) {
//// System.out.println(user.getId());
//// }
// return list;
// }
//获取数据库信息数,用来确定分页情况
public Page<User> select2(int pagecode,int pagerecord){
List<User> list=new ArrayList<User>();
Page<User> page=new Page<User>();
page.setPagecode(pagecode);
page.setPagerecord(pagerecord);
String sql2="select count(*) from user_tables";
try {
PreparedStatement ps2=conn.prepareStatement(sql2);
ResultSet rs2=ps2.executeQuery();
while(rs2.next()){
page.setTotalrecord(rs2.getInt(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String sql3="select *from (select a.*,rownum rn from user_tables a) where rn>=? and rn<=?";
try {
PreparedStatement ps3=conn.prepareStatement(sql3);
ps3.setInt(1, (pagecode-1)*pagerecord);
ps3.setInt(2, (pagecode-1)*pagerecord+pagerecord);
ResultSet rs3=ps3.executeQuery();
while(rs3.next()){
User user=new User();
user.setId(rs3.getInt(1));
user.setName(rs3.getString(2));
user.setPassword(rs3.getString(3));
list.add(user);
}
page.setList(list);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return page;
}

}

3.业务逻辑层从dao中获取信息

package com.guigu.service;
import com.guigu.dao.Select;
import com.guigu.domin.Page;
import com.guigu.domin.User;
/**
 * 从dao中获取信息
 * @author liuyuan
 *
 */
public class Get {
Select select=new Select();
public Page<User> getUser(int pagecode,int pagerecord){
Page<User> page=select.select2(pagecode,pagerecord);
return page;
}
}

4.servlet

package com.guigu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.guigu.domin.Page;
import com.guigu.domin.User;
import com.guigu.service.Get;
public class ShowUserServlet extends HttpServlet {
public ShowUserServlet() {
super();
}
public void destroy() {
super.destroy(); 
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path=find(request, response);
request.getRequestDispatcher(path).forward(request, response);
}
public void init() throws ServletException {

}
public String find(HttpServletRequest request,HttpServletResponse response){
Get get=new Get();
int pagecode =Integer.valueOf(request.getParameter("pagecode"));
int pagerecord=10;
Page<User> page=get.getUser(pagecode,pagerecord);
request.setAttribute("pages", page);
return "/index.jsp";
}


}

5.两个用到的javabean

package com.guigu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.guigu.domin.Page;
import com.guigu.domin.User;
import com.guigu.service.Get;
public class ShowUserServlet extends HttpServlet {
public ShowUserServlet() {
super();
}
public void destroy() {
super.destroy(); 
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path=find(request, response);
request.getRequestDispatcher(path).forward(request, response);
}
public void init() throws ServletException {
}
public String find(HttpServletRequest request,HttpServletResponse response){
Get get=new Get();
int pagecode =Integer.valueOf(request.getParameter("pagecode"));
int pagerecord=10;
Page<User> page=get.getUser(pagecode,pagerecord);
request.setAttribute("pages", page);
return "/index.jsp";

}
}

package com.guigu.domin;
public class User {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password
+ "]";
}

}

四、jsp页面

<%@page import="com.guigu.domin.User"%>
<%@page import="com.guigu.domin.Page"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>


<body>
<table align="center" border="1px" cellspacing="0">
<tr>
<td>用户id</td>
<td>用户名</td>
<td>用户密码</td>
</tr>
<c:forEach items="${pages.list}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.password}</td>
</tr>
</c:forEach>
<a href="/divide/servlet/ShowUserServlet?method=find&pagecode=1">查询</a>
</table>
<center>
第${pages.pagecode}页/共有${pages.totalpage }页 <a
href="/divide/servlet/ShowUserServlet?method=find&pagecode=1">首页</a>
<c:if test="${pages.pagecode>1}">
<a href="/divide/servlet/ShowUserServlet?method=find&pagecode=${pages.pagecode-1}">上一页</a>
</c:if>
<c:choose>
<c:when test="${pages.totalpage<10 }">
<c:set var="begin" value="1"></c:set>
<c:set var="end" value="${pages.totalpage }"></c:set>
</c:when>
<c:otherwise>
<c:set var="begin" value="${pages.pagecode-4 }"></c:set>
<c:set var="end" value="${pages.pagecode+5 }"></c:set>
<c:if test="${begin<1 }">
<c:set var="begin" value="1"></c:set>
<c:set var="end" value="10"></c:set>
</c:if>
<c:if test="${end>pages.totalpage }">
<c:set var="begin" value="${pages.totalpage-9 }"></c:set>
<c:set var="end" value="${pages.totalpage }"></c:set>
</c:if>
</c:otherwise>
</c:choose>
<c:forEach var="i" begin="${begin}" end="${end}">
<a href="/divide/servlet/ShowUserServlet?method=find&pagecode=${i}">${i}</a>
</c:forEach>
<c:if test="${pages.pagecode<pages.totalpage}">
<a href="/divide/servlet/ShowUserServlet?method=find&pagecode=${pages.pagecode+1}">下一页</a>
</c:if>
<a href="/divide/servlet/ShowUserServlet?method=find&pagecode=${pages.totalpage}">尾页</a>
</center>
</body>
</html>

五、最后结果如下:


1 0
原创粉丝点击