第83节:Java中的学生管理系统分页功能

标题图

第83节:Java中的学生管理系统分页功能

分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页。这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其特点是对内存中数据量存储不大,只是缺点就是要对数据库不断的进行访问;而对逻辑分页来说,就有所不同,它是一下子就把所有的数据全部查询出来,然后放入到内存中,访问速度快,缺点就是对内存空间不足,数据量过大。

1
select * from stu limit 5;

效果

1
2
// offset 偏移前面的多少条,offset 1 跳过前面的一条
select * from stu limit 5 offset 5;

效果

1
SELECT * FROM stu LIMIT 5 , 5;

效果

1
SELECT * FROM stu LIMIT 5 , 2;
1
SELECT * FROM stu LIMIT 2 , 5;

效果

写分页的dao模式

1
2
// index.jsp
<h3><a href="StudentListPageServlet?currentPage=1">分页显示所有学生</a></h3>
1
2
3
// StudentListPageServlet
//1. 获取需要显示的页码数
int currentPage =Integer.parseInt( request.getParameter("currentPage"));
1
2
3
4
5
6
// StudentDao
// 接口中定义的成员都是常量
// 一页显示多少条记录
int PAGE_SIZE = 5;
// 分页dao,查询当页的学生数据
List<Student> findStudentByPage(int currentPage) throws SQLException;

效果

1
2
3
4
5
6
7
8
9
10
11
12
// StudentDaoImpl
@Override
public List<Student> findStudentByPage(int currentPage) throws SQLException {
// TODO Auto-generated method stub
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
// 第一个问号,一页返回多少条记录,第二个问号,跳过前面的多少条记录
//5 0 --- 第一页 (1-1)*5
//5 5 --- 第二页 (2-1)*5
//5 10 --- 第三页
return runner.query("select * from stu limit ? offset ?", new BeanListHandler<Student>(Student.class),PAGE_SIZE , (currentPage-1)*PAGE_SIZE);

}

业务逻辑

1
select count(*) from stu;

效果

业务逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.dashucoding.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dashucoding.domain.PageBean;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* 这是用于分页显示学生列表的servlet
*/
public class StudentListPageServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//1. 获取需要显示的页码数
int currentPage =Integer.parseInt( request.getParameter("currentPage"));

//2. 根据指定的页数,去获取该页的数据回来
//List<Student> --- list.jsp

StudentService service = new StudentServiceImpl();
PageBean pageBean= service.findStudentByPage(currentPage);
request.setAttribute("pageBean", pageBean);
//3. 跳转界面。
request.getRequestDispatcher("list_page.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

去业务逻辑去找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.dashucoding.service;

import java.sql.SQLException;
import java.util.List;

import com.dashucoding.domain.PageBean;
import com.dashucoding.domain.Student;

/*
* 这是学生的业务处理规范
* */
public interface StudentService {
// 分页dao,查询当页的学生数据
// 分页的很多小逻辑业务 可以做到service里面
// 业务做到service里面,做的就是bean了,当前页,总页数,显示条数, 总记录数
// 返回的是一个bean了
// 返回的是PageBean里面的所有数据了
PageBean findStudentByPage(int currentPage) throws SQLException;

// 根据姓名或性别,查询
List<Student> searchStudent(String sname, String sgender) throws SQLException;

/*
* 查询所有学生 list<Student>
*/
List<Student> findAll() throws SQLException;

void insert(Student student) throws SQLException;

// sid根据id删除学生
void delete(int sid) throws SQLException;

// 根据id查询单个学生对象
Student findStudentById(int sid) throws SQLException;

// 更新学生信息
void update(Student student) throws SQLException;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.dashucoding.service.impl;

import java.sql.SQLException;
import java.util.List;

import com.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.PageBean;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;

/*
* 这是学生业务实现
* */
public class StudentServiceImpl implements StudentService {

@Override
public List<Student> findAll() throws SQLException {
StudentDao dao = new StudentDaoImpl();
return dao.findAll();
}

@Override
public void insert(Student student) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.insert(student);
}

@Override
public void delete(int sid) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.delete(sid);
}

@Override
public Student findStudentById(int sid) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
return dao.findStudentById(sid);
}

@Override
public void update(Student student) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.update(student);
}

@Override
public List<Student> searchStudent(String sname, String sgender) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
return dao.searchStudent(sname, sgender);
}

@Override
public PageBean findStudentByPage(int currentPage) throws SQLException {
// TODO Auto-generated method stub
// 封装分页的该页的数据
PageBean<Student> pageBean = new PageBean<Student>();

int pageSize = StudentDao.PAGE_SIZE;

// 设置当前页
pageBean.setCurrentPage(currentPage);
// 每条记录
pageBean.setPageSize(pageSize);

StudentDao dao = new StudentDaoImpl();
List<Student> list = dao.findStudentByPage(currentPage);
pageBean.setList(list);
// 总记录数,总页数
int count = dao.findCount();
pageBean.setTotalSize(count);

// 总页数
pageBean.setTotalPage(count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1);

return null;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// 封装的数据
package com.dashucoding.domain;

import java.util.List;

// 一个用于封装了分页的数据
// 有: 当前学生集合数据,总的记录数,总的页数,当前页,每页的显示记录数
public class PageBean<T> {

private int currentPage; // 当前页
private int totalPage;// 总页数
private int pageSize;// 每页的记录数,每页要显示多少记录
private int totalSize; // 总的记录数
private List<T> list; // 当前页的学生集合

public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}


}

效果

最后就靠显示页面逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生列表页面</title>

<script type="text/javascript">

function doDelete(sid) {
/* 如果这里弹出的对话框,用户点击的是确定,就马上去请求Servlet。
如何知道用户点击的是确定。
如何在js的方法中请求servlet。 */
var flag = confirm("是否确定删除?");
if(flag){
//表明点了确定。 访问servlet。 在当前标签页上打开 超链接,
//window.location.href="DeleteServlet?sid="+sid;
location.href="DeleteServlet?sid="+sid;
}
}
</script>

</head>
<body>
<form action="SearchStudentServlet" method="post">
<table border="1" width="700">

<tr >
<td colspan="8">

按姓名查询:<input type="text" name="sname"/>
&nbsp;
按性别查询:<select name="sgender">
<option value="">--请选择--
<option value="男">男
<option value="女">女
</select>
&nbsp;&nbsp;&nbsp;
<input type="submit" value="查询">
&nbsp;&nbsp;&nbsp;
<a href="add.jsp">添加</a>
</td>
</tr>

<tr align="center">
<td>编号</td>
<td>姓名</td>
<td>性别</td>
<td>电话</td>
<td>生日</td>
<td>爱好</td>
<td>简介</td>
<td>操作</td>
</tr>

<c:forEach items="${pageBean.list }" var="stu">
<tr align="center">
<td>${stu.sid }</td>
<td>${stu.sname }</td>
<td>${stu.gender }</td>
<td>${stu.phone }</td>
<td>${stu.birthday }</td>
<td>${stu.hobby }</td>
<td>${stu.info }</td>
<td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td>
</tr>
</c:forEach>

<tr>
<td colspan="8">
第 ${pageBean.currentPage } / ${pageBean.totalPage }
&nbsp;&nbsp;
每页显示${pageBean.pageSize }条 &nbsp;&nbsp;&nbsp;
总的记录数${pageBean.totalSize } &nbsp;&nbsp;&nbsp;

<c:if test="${pageBean.currentPage !=1 }">
<a href="StudentListPageServlet?currentPage=1">首页</a>
| <a href="StudentListPageServlet?currentPage=${pageBean.currentPage-1 }">上一页</a>
</c:if>

<c:forEach begin="1" end="${pageBean.totalPage }" var="i">
<c:if test="${pageBean.currentPage == i }">
${i }
</c:if>
<c:if test="${pageBean.currentPage != i }">
<a href="StudentListPageServlet?currentPage=${i }">${i }</a>
</c:if>

</c:forEach>


<c:if test="${pageBean.currentPage !=pageBean.totalPage }">
<a href="StudentListPageServlet?currentPage=${pageBean.currentPage+1 }">下一页</a> |
<a href="StudentListPageServlet?currentPage=${pageBean.totalPage }">尾页</a>
</c:if>
</td>
</tr>
</table>
</form>
</body>
</html>

项目结构

我的源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.dashucoding.dao;

import java.sql.SQLException;
import java.util.List;

import com.dashucoding.domain.Student;

/*
* 这是针对学生表的数据访问
*
* */
public interface StudentDao {
// 接口中定义的成员都是常量
// 一页显示多少条记录
int PAGE_SIZE = 5;
// 分页dao,查询当页的学生数据
List<Student> findStudentByPage(int currentPage) throws SQLException;

// 根据姓名或性别,查询
List<Student> searchStudent(String sname, String sgender) throws SQLException;

/*
* 查询所有学生 list<Student>
*/
List<Student> findAll() throws SQLException;

void insert(Student student) throws SQLException;

// sid根据id删除学生
void delete(int sid) throws SQLException;

// 根据id查询单个学生对象
Student findStudentById(int sid) throws SQLException;

// 更新学生信息
void update(Student student) throws SQLException;

// 查询总的学生记录数
int findCount() throws SQLException;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
package com.dashucoding.dao.impl;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import com.dashucoding.dao.StudentDao;
import com.dashucoding.domain.Student;
import com.dashucoding.util.JDBCUtil02;
import com.dashucoding.util.TextUtils;

/*
*这是StudentDao的实现,针对前面定义的规范,做出具体的实现
* */
public class StudentDaoImpl implements StudentDao {
/*
* 查询所有学生
*/
@Override
public List<Student> findAll() throws SQLException {
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
return runner.query("select * from stu", new BeanListHandler<Student>(Student.class));
}

@Override
public void insert(Student student) throws SQLException {
// TODO Auto-generated method stub
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
runner.update("insert into stu values(null, ?,?,?,?,?,?)",
student.getSname(),
student.getGender(),
student.getPhone(),
student.getBirthday(),
student.getHobby(),
student.getInfo()
);
}

@Override
public void delete(int sid) throws SQLException {
// TODO Auto-generated method stub

QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
runner.update("delete from stu where sid=?", sid);

}

@Override
public Student findStudentById(int sid) throws SQLException {
// TODO Auto-generated method stub
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());

return runner.query("select * from stu where sid = ?", new BeanHandler<Student>(Student.class), sid);
}

@Override
public void update(Student student) throws SQLException {
// TODO Auto-generated method stub
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
runner.update("update stu set sname=?, gender=?, phone=?, birthday=?, hobby=?, info=? where sid=?",
student.getSname(),
student.getGender(),
student.getPhone(),
student.getBirthday(),
student.getHobby(),
student.getInfo(),
student.getSid());
}

// 模糊查询
@Override
public List<Student> searchStudent(String sname, String sgender) throws SQLException {
// TODO Auto-generated method stub

/*System.out.println(sname + sgender);*/

QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());

/*
* String sql = "select * from stu where sname=? or sgender=?";
* select * from stu where sname like ?;
* select * from stu where gender = ?;
* select * from stu where sname like ? and gender = ?;
* 如果两个都没有就查询所有
* sql = "select * from stu"
* if(姓名){
* sql = sql + "where sname like ?";
* }
* if(性别){
* sql = sql + "where gender = ?";
* }
*
* String sql = "select * from stu where 1=1";
* if(姓名){
* sql = sql + " and sname like ? ";
* }
* if(性别){
* sql = sql + " and gender = ? ";
* }
* */

String sql = "select * from stu where 1=1";

List<String> list = new ArrayList<String>();

if(!TextUtils.isEmpty(sname)) {
sql = sql + " and sname like ? ";
list.add("%"+sname+"%");
}

if(!TextUtils.isEmpty(sgender)) {
sql = sql + " and gender = ? ";
list.add(sgender);
}
/*list.toArray()*/

return runner.query(sql, new BeanListHandler<Student>(Student.class),list.toArray());

}

@Override
public List<Student> findStudentByPage(int currentPage) throws SQLException {
// TODO Auto-generated method stub
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
// 第一个问号,一页返回多少条记录,第二个问号,跳过前面的多少条记录
//5 0 --- 第一页 (1-1)*5
//5 5 --- 第二页 (2-1)*5
//5 10 --- 第三页
return runner.query("select * from stu limit ? offset ?", new BeanListHandler<Student>(Student.class),PAGE_SIZE , (currentPage-1)*PAGE_SIZE);

}

// 查询总的记录数
@Override
public int findCount() throws SQLException {
// TODO Auto-generated method stub
QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
// 用于处理平均值,总的个数
Long result = (Long) runner.query("select count(*) from stu", new ScalarHandler());
return result.intValue();

}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.dashucoding.domain;

import java.util.List;

// 一个用于封装了分页的数据
// 有: 当前学生集合数据,总的记录数,总的页数,当前页,每页的显示记录数
public class PageBean<T> {

private int currentPage; // 当前页
private int totalPage;// 总页数
private int pageSize;// 每页的记录数,每页要显示多少记录
private int totalSize; // 总的记录数
private List<T> list; // 当前页的学生集合

public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalSize() {
return totalSize;
}
public void setTotalSize(int totalSize) {
this.totalSize = totalSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}


}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.dashucoding.domain;

import java.util.Date;

/*
* 这是学生封装的对象bean
*
* */
public class Student {

private int sid;
private String sname;
private String gender;
private String phone;
private String hobby;
private String info;
private Date birthday;

public Student() {
super();
// TODO Auto-generated constructor stub
}

public Student(int sid, String sname, String gender, String phone, String hobby, String info, Date birthday) {
super();
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.phone = phone;
this.hobby = hobby;
this.info = info;
this.birthday = birthday;
}



public Student(String sname, String gender, String phone, String hobby, String info, Date birthday) {
super();
this.sname = sname;
this.gender = gender;
this.phone = phone;
this.hobby = hobby;
this.info = info;
this.birthday = birthday;
}

public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}

@Override
public String toString() {
return "Student [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", phone=" + phone + ", hobby="
+ hobby + ", info=" + info + ", birthday=" + birthday + "]";
}



}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.dashucoding.service;

import java.sql.SQLException;
import java.util.List;

import com.dashucoding.domain.PageBean;
import com.dashucoding.domain.Student;

/*
* 这是学生的业务处理规范
* */
public interface StudentService {
// 分页dao,查询当页的学生数据
// 分页的很多小逻辑业务 可以做到service里面
// 业务做到service里面,做的就是bean了,当前页,总页数,显示条数, 总记录数
// 返回的是一个bean了
// 返回的是PageBean里面的所有数据了
PageBean findStudentByPage(int currentPage) throws SQLException;

// 根据姓名或性别,查询
List<Student> searchStudent(String sname, String sgender) throws SQLException;

/*
* 查询所有学生 list<Student>
*/
List<Student> findAll() throws SQLException;

void insert(Student student) throws SQLException;

// sid根据id删除学生
void delete(int sid) throws SQLException;

// 根据id查询单个学生对象
Student findStudentById(int sid) throws SQLException;

// 更新学生信息
void update(Student student) throws SQLException;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.dashucoding.service.impl;

import java.sql.SQLException;
import java.util.List;

import com.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.PageBean;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;

/*
* 这是学生业务实现
* */
public class StudentServiceImpl implements StudentService {

@Override
public List<Student> findAll() throws SQLException {
StudentDao dao = new StudentDaoImpl();
return dao.findAll();
}

@Override
public void insert(Student student) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.insert(student);
}

@Override
public void delete(int sid) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.delete(sid);
}

@Override
public Student findStudentById(int sid) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
return dao.findStudentById(sid);
}

@Override
public void update(Student student) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.update(student);
}

@Override
public List<Student> searchStudent(String sname, String sgender) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
return dao.searchStudent(sname, sgender);
}

@Override
public PageBean findStudentByPage(int currentPage) throws SQLException {
// TODO Auto-generated method stub
// 封装分页的该页的数据
PageBean<Student> pageBean = new PageBean<Student>();

int pageSize = StudentDao.PAGE_SIZE;

// 设置当前页
pageBean.setCurrentPage(currentPage);
// 每条记录
pageBean.setPageSize(pageSize);

StudentDao dao = new StudentDaoImpl();
List<Student> list = dao.findStudentByPage(currentPage);
pageBean.setList(list);
// 总记录数,总页数
int count = dao.findCount();
pageBean.setTotalSize(count);

// 总页数
pageBean.setTotalPage(count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1);

return null;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.dashucoding.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* 用于处理学生的添加请求
*/
public class AddServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");

try {

// 1. 获取客户端提交上来的数据
String sname = request.getParameter("sname");
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String birthday = request.getParameter("birthday");
String info = request.getParameter("info");
// String hobby = request.getParameter("hobby");//hobby : 游泳,写字, 足球。
String[] h = request.getParameterValues("hobby");

String hobby = Arrays.toString(h);
hobby = hobby.substring(1, hobby.length() - 1);

// 2. 添加到数据库
// string -- date
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);

Student student = new Student(sname, gender, phone, hobby, info, date);
StudentService service = new StudentServiceImpl();
service.insert(student);

// 3. 跳转到列表页
request.getRequestDispatcher("StudentListServlet").forward(request, response);

} catch (Exception e) {
e.printStackTrace();
}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.dashucoding.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* 用于处理删除学生
*/
public class DeleteServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
int sid = Integer.parseInt(request.getParameter("sid"));
// System.out.println("sid="+sid);
// 执行删除
StudentService service = new StudentServiceImpl();
service.delete(sid);
// 跳转到列表页
request.getRequestDispatcher("StudentListServlet").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.dashucoding.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* 处理单个学生的更新,查询学生的信息,跳转到更新的页面
*/
public class EditServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
// 接收id
int sid = Integer.parseInt(request.getParameter("sid"));
// 查询学生数据
StudentService service = new StudentServiceImpl();
Student stu = service.findStudentById(sid);

// 显示数据
// 存储数据
request.setAttribute("stu", stu);
// 跳转
request.getRequestDispatcher("edit.jsp").forward(request, response);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.dashucoding.servlet;

import java.io.IOException;
import java.sql.SQLException;
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.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* Servlet implementation class SearchStudentServlet
*/
public class SearchStudentServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
try {
// 取到了要查询的关键数据
String sname = request.getParameter("sname");
String sgender = request.getParameter("sgender");

// 找service查询
StudentService service = new StudentServiceImpl();
List<Student> list = service.searchStudent(sname, sgender);

/*for(Student student : list) {
System.out.println("stu=" + student);
}*/

request.setAttribute("list", list);
// 跳转界面
request.getRequestDispatcher("list.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.dashucoding.servlet;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dashucoding.domain.PageBean;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* 这是用于分页显示学生列表的servlet
*/
public class StudentListPageServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//1. 获取需要显示的页码数
int currentPage =Integer.parseInt( request.getParameter("currentPage"));

//2. 根据指定的页数,去获取该页的数据回来
//List<Student> --- list.jsp

StudentService service = new StudentServiceImpl();
PageBean pageBean= service.findStudentByPage(currentPage);
request.setAttribute("pageBean", pageBean);
//3. 跳转界面。
request.getRequestDispatcher("list_page.jsp").forward(request, response);
} catch (SQLException e) {
e.printStackTrace();
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.dashucoding.servlet;

import java.io.IOException;
import java.sql.SQLException;
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.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

public class StudentListServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// 查询所有的学生
StudentService service = new StudentServiceImpl();
List<Student> list = service.findAll();
// 把数据存储到作用域中
request.setAttribute("list", list);

// 跳转页面
request.getRequestDispatcher("list.jsp").forward(request,response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.dashucoding.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;
import com.dashucoding.service.impl.StudentServiceImpl;

/**
* Servlet implementation class UpdateServlet
*/
public class UpdateServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
try {
// 1. 获取客户端提交上来的数据
int sid = Integer.parseInt(request.getParameter("sid"));
String sname = request.getParameter("sname");
String gender = request.getParameter("gender");
String phone = request.getParameter("phone");
String birthday = request.getParameter("birthday");
String info = request.getParameter("info");
// String hobby = request.getParameter("hobby");
String[] h = request.getParameterValues("hobby");

String hobby = Arrays.toString(h);
hobby = hobby.substring(1, hobby.length() - 1);
// 2. 添加到数据库

Date date = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
Student student = new Student(sid, sname, gender, phone, hobby, info, date);

// 2. 更新数据库数据
StudentService service = new StudentServiceImpl();
service.update(student);

// 3. 跳转界面
request.getRequestDispatcher("StudentListServlet").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package com.dashucoding.util;

import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JDBCUtil02 {

static ComboPooledDataSource dataSource = null;

static {
dataSource = new ComboPooledDataSource();
}

public static DataSource getDataSource() {
return dataSource;
}
/**
* 获取连接对象
* @return
* @throws SQLException
*/
public static Connection getConn() throws SQLException{

return dataSource.getConnection();
}

/**
* 释放资源
* @param conn
* @param st
* @param rs
*/
public static void release(Connection conn , Statement st , ResultSet rs){
closeRs(rs);
closeSt(st);
closeConn(conn);
}
public static void release(Connection conn , Statement st){
closeSt(st);
closeConn(conn);
}


private static void closeRs(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
}

private static void closeSt(Statement st){
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
}

private static void closeConn(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.dashucoding.util;

public class TextUtils {

/**
* 判断某一个字符串是否为空。
*
* @param s
* @return
*/
public static boolean isEmpty(CharSequence s) {
return s == null || s.length() == 0;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加学生页面</title>
</head>
<body>
<form method="post" action="AddServlet">
<table border="1" width="600">
<tr>
<td>姓名</td>
<td><input type="text" name="sname"></td>
</tr>
<tr>
<td>性别</td>
<td><input type="radio" name="gender" value="男">男 <input
type="radio" name="gender" value="女">女</td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="phone"></td>
</tr>
<tr>
<td>生日</td>
<td><input type="text" name="birthday"></td>
</tr>
<tr>
<td>爱好</td>
<td><input type="checkbox" name="hobby" value="游泳">游泳 <input
type="checkbox" name="hobby" value="篮球">篮球 <input
type="checkbox" name="hobby" value="足球">足球 <input
type="checkbox" name="hobby" value="看书">看书 <input
type="checkbox" name="hobby" value="写字">写字</td>
</tr>
<tr>
<td>简介</td>
<td><textarea name="info" rows="3" cols="20"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="添加"></td>
</tr>
</table>
</form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>更新学生页面</title>

</head>


<body>

<h3>更新学生页面</h3>

<form method="post" action="UpdateServlet">
<input type="hidden" name="sid" value="${stu.sid }">
<table border="1" width="600">
<tr>
<td>姓名</td>
<td><input type="text" name="sname" value="${stu.sname }"></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="gender" value="男" <c:if test="${stu.gender == '男'}">checked</c:if>>男
<input type="radio" name="gender" value="女" <c:if test="${stu.gender == '女'}">checked</c:if>>女
</td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="phone" value="${stu.phone }"></td>
</tr>
<tr>
<td>生日</td>
<td><input type="text" name="birthday" value="${stu.birthday }"></td>
</tr>
<tr>
<td>爱好</td>


<td>
<input type="checkbox" name="hobby" value="游泳" <c:if test="${fn:contains(stu.hobby,'游泳') }">checked</c:if>>游泳
<input type="checkbox" name="hobby" value="篮球" <c:if test="${fn:contains(stu.hobby,'篮球') }">checked</c:if>>篮球
<input type="checkbox" name="hobby" value="足球" <c:if test="${fn:contains(stu.hobby,'足球') }">checked</c:if>>足球
<input type="checkbox" name="hobby" value="看书" <c:if test="${fn:contains(stu.hobby,'看书') }">checked</c:if>>看书
<input type="checkbox" name="hobby" value="写字" <c:if test="${fn:contains(stu.hobby,'写字') }">checked</c:if>>写字

</td>
</tr>
<tr>
<td>简介</td>
<td><textarea name="info" rows="3" cols="20">${stu.info }</textarea></td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="更新"> </td>
</tr>
</table>
</form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>

<h3><a href="StudentListServlet">显示所有学生列表</a></h3><br>
<h3><a href="StudentListPageServlet?currentPage=1">分页显示所有学生</a></h3>

</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生列表页面</title>

<script type="text/javascript">

function doDelete(sid) {
// 弹出对话框,点击确定,请求Servlet
var flag = confirm("是否确定删除?");
if(flag){
//访问servlet
//window.location.href="DeleteServlet?sid="+sid;
location.href="DeleteServlet?sid="+sid;
}
}
</script>

</head>
<body>
<form action="SearchStudentServlet" method="post">
<table border="1" width="700">

<tr >
<td colspan="8">

按姓名查询:<input type="text" name="sname"/>
&nbsp;
按性别查询:<select name="sgender">
<option value="">--请选择--
<option value="男">男
<option value="女">女
</select>
&nbsp;&nbsp;&nbsp;
<input type="submit" value="查询">
&nbsp;&nbsp;&nbsp;
<a href="add.jsp">添加</a>
</td>
</tr>

<tr align="center">
<td>编号</td>
<td>姓名</td>
<td>性别</td>
<td>电话</td>
<td>生日</td>
<td>爱好</td>
<td>简介</td>
<td>操作</td>
</tr>

<c:forEach items="${list }" var="stu">
<tr align="center">
<td>${stu.sid }</td>
<td>${stu.sname }</td>
<td>${stu.gender }</td>
<td>${stu.phone }</td>
<td>${stu.birthday }</td>
<td>${stu.hobby }</td>
<td>${stu.info }</td>
<td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#" onclick="doDelete(${stu.sid})">删除</a></td>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生列表页面</title>

<script type="text/javascript">

function doDelete(sid) {
// 弹出对话框,点击确定,请求Servlet
var flag = confirm("是否确定删除?");
if(flag){
//访问servlet
//window.location.href="DeleteServlet?sid="+sid;
location.href="DeleteServlet?sid="+sid;
}
}
</script>

</head>
<body>
<form action="SearchStudentServlet" method="post">
<table border="1" width="700">

<tr>
<td colspan="8">按姓名查询:<input type="text" name="sname" /> &nbsp;
按性别查询:<select name="sgender">
<option value="">--请选择--
<option value="男">男
<option value="女">女
</select> &nbsp;&nbsp;&nbsp; <input type="submit" value="查询">
&nbsp;&nbsp;&nbsp; <a href="add.jsp">添加</a>
</td>
</tr>

<tr align="center">
<td>编号</td>
<td>姓名</td>
<td>性别</td>
<td>电话</td>
<td>生日</td>
<td>爱好</td>
<td>简介</td>
<td>操作</td>
</tr>

<c:forEach items="${pageBean.list }" var="stu">
<tr align="center">
<td>${stu.sid }</td>
<td>${stu.sname }</td>
<td>${stu.gender }</td>
<td>${stu.phone }</td>
<td>${stu.birthday }</td>
<td>${stu.hobby }</td>
<td>${stu.info }</td>
<td><a href="EditServlet?sid=${stu.sid }">更新</a> <a href="#"
onclick="doDelete(${stu.sid})">删除</a></td>
</tr>
</c:forEach>

<tr>
<td colspan="8">第 ${pageBean.currentPage } /
${pageBean.totalPage } &nbsp;&nbsp; 每页显示${pageBean.pageSize }条
&nbsp;&nbsp;&nbsp; 总的记录数${pageBean.totalSize } &nbsp;&nbsp;&nbsp; <c:if
test="${pageBean.currentPage !=1 }">
<a href="StudentListPageServlet?currentPage=1">首页</a>
| <a
href="StudentListPageServlet?currentPage=${pageBean.currentPage-1 }">上一页</a>
</c:if> <c:forEach begin="1" end="${pageBean.totalPage }" var="i">
<c:if test="${pageBean.currentPage == i }">
${i }
</c:if>
<c:if test="${pageBean.currentPage != i }">
<a href="StudentListPageServlet?currentPage=${i }">${i }</a>
</c:if>

</c:forEach> <c:if test="${pageBean.currentPage !=pageBean.totalPage }">
<a
href="StudentListPageServlet?currentPage=${pageBean.currentPage+1 }">下一页</a> |
<a
href="StudentListPageServlet?currentPage=${pageBean.totalPage }">尾页</a>
</c:if>
</td>
</tr>
</table>
</form>
</body>
</html>

效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.dashucoding.service.impl;

import java.sql.SQLException;
import java.util.List;

import com.dashucoding.dao.StudentDao;
import com.dashucoding.dao.impl.StudentDaoImpl;
import com.dashucoding.domain.PageBean;
import com.dashucoding.domain.Student;
import com.dashucoding.service.StudentService;

/*
* 这是学生业务实现
* */
public class StudentServiceImpl implements StudentService {

@Override
public List<Student> findAll() throws SQLException {
StudentDao dao = new StudentDaoImpl();
return dao.findAll();
}

@Override
public void insert(Student student) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.insert(student);
}

@Override
public void delete(int sid) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.delete(sid);
}

@Override
public Student findStudentById(int sid) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
return dao.findStudentById(sid);
}

@Override
public void update(Student student) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
dao.update(student);
}

@Override
public List<Student> searchStudent(String sname, String sgender) throws SQLException {
// TODO Auto-generated method stub
StudentDao dao = new StudentDaoImpl();
return dao.searchStudent(sname, sgender);
}

@Override
public PageBean findStudentByPage(int currentPage) throws SQLException {

// 封装分页的该页数据
PageBean<Student> pageBean = new PageBean<Student>();

int pageSize = StudentDao.PAGE_SIZE;
pageBean.setCurrentPage(currentPage);
// 设置当前页
pageBean.setPageSize(pageSize);
// 设置每页显示多少记录

StudentDao dao = new StudentDaoImpl();
List<Student> list = dao.findStudentByPage(currentPage);
pageBean.setList(list);
// 设置这一页的学生数据

// 总的记录数, 总的页数。
int count = dao.findCount();
pageBean.setTotalSize(count);
// 设置总的记录数


pageBean.setTotalPage(count % pageSize == 0 ? count / pageSize : (count / pageSize) + 1); // 总页数
return pageBean;
}

}

结言

好了,欢迎在留言区留言,与大家分享你的经验和心得。

感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

达叔小生:往后余生,唯独有你
You and me, we are family !
90后帅气小伙,良好的开发习惯;独立思考的能力;主动并且善于沟通
简书博客: 达叔小生
https://www.jianshu.com/u/c785ece603d1

结语

  • 下面我将继续对 其他知识 深入讲解 ,有兴趣可以继续关注
  • 小礼物走一走 or 点赞
-------------本文结束感谢您的阅读-------------
达叔小生 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!
0%