/class Page<T>
package com.neusoft.bean;
import java.util.List;
public class Page<T> {
private List<T> data; //后台数据库查询出来
private int totalRecord; //表示总共有多少记录,从数据库中查询出来
// private int totalPage; // 表示总共有多少页,计算得到!
// private int index; //表示当前索引值,计算出来的!
private int pageNumber; //表示的是当前页码,这个参数是从页面传递过来的!
private int pageSize; //表示的是每页显示多少条数据 ,在servlet中设置的!
private String path;
public Page() {
super();
}
public Page(int totalRecord, int pageNumber, int pageSize) {
super();
this.totalRecord = totalRecord;
this.pageNumber = pageNumber;
this.pageSize = pageSize;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getTotalPage() {
/**
* totalPage:表示总共有几页!
*
* 总页数 totalRecord[总记录数] pageSize
* 5 10 2
* 5 9 2
* 4 8 2
*/
if(totalRecord % pageSize ==0){
return totalRecord / pageSize;
}
return (totalRecord / pageSize + 1);
}
public int getIndex() {
/**
* index表示的是当前索引值,是计算得到的!
* 当前索引值 每页显示几条数据 当前页是第几页
* 0 3 1
* 3 3 2
*
index = (pageNumber -1)*pageSize;
*/
return (getPageNumber() -1)*pageSize;
}
public int getPageNumber() {
if(pageNumber < 1){
return 1;
}else if(pageNumber > getTotalPage()){
return getTotalPage();
}
return pageNumber;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
/class Student
package com.neusoft.bean;
public class Student {
private int id;
private String name;
private String school;
private String score;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int id, String name, String school, String score) {
super();
this.id = id;
this.name = name;
this.school = school;
this.score = score;
}
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 getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", school=" + school + ", score=" + score + "]";
}
}
/class StudentDao
package com.neusoft.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 com.neusoft.bean.Student;
import com.neusoft.utils.JDBCUtil;
public class StudentDao {
public List<Student> getStudentList(){
PreparedStatement ps=null;
ResultSet rs =null;
List<Student> list=new ArrayList<Student>();
Connection conn=JDBCUtil.getConnection();
String sql="select * from student";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
Student stu=new Student();
int id = rs.getInt("id");
String username = rs.getString("name");
String school = rs.getString("school");
String score = rs.getString("score");
stu.setId(id);
stu.setName(username);
stu.setSchool(school);
stu.setScore(score);
list.add(stu);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.close(ps, rs, conn);
}
return list;
}
public static int delete(int id){
return JDBCUtil.executeUpdate("delete from student where id=?",id);
}
public int update(Student student){
return JDBCUtil.executeUpdate("update student set name=?,school=?,score=? where id=?",student.getName(),student.getSchool(),student.getScore(),student.getId());
}
public int add(Student student){
return JDBCUtil.executeUpdate("insert into student (id,name,school,score) values (?,?,?,?)",null,student.getName(),student.getSchool(),student.getScore());
}
public List<Student> getStudent(Student student){
PreparedStatement ps=null;
ResultSet rs =null;
List<Student> list=new ArrayList<Student>();
Connection conn=JDBCUtil.getConnection();
String sql="select * from student where name= '"+student.getName()+"'";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
Student stu=new Student();
int id = rs.getInt("id");
String username = rs.getString("name");
String school = rs.getString("school");
String score = rs.getString("score");
stu.setId(id);
stu.setName(username);
stu.setSchool(school);
stu.setScore(score);
list.add(stu);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.close(ps, rs, conn);
}
return list;
}
public Student getStuInfoById(String id) {
PreparedStatement ps=null;
ResultSet rs =null;
Student stu=null;
List<Student> list=new ArrayList<Student>();
Connection conn=JDBCUtil.getConnection();
String sql="select * from student where id = ?";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, Integer.parseInt(id));
rs = ps.executeQuery();
while (rs.next()) {
stu=new Student();
String username = rs.getString("name");
String school = rs.getString("school");
String score = rs.getString("score");
stu.setId(Integer.parseInt(id));
stu.setName(username);
stu.setSchool(school);
stu.setScore(score);
list.add(stu);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.close(ps, rs, conn);
}
return stu;
}
public int getTotalRecord() {
PreparedStatement ps=null;
ResultSet rs =null;
Connection conn=JDBCUtil.getConnection();
String sql="select count(*) as total from student ";
int total=0;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
total= rs.getInt("total");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.close(ps, rs, conn);
}
return total;
}
public List<Student> getLimitStuList(int index, int pageSize) {
PreparedStatement ps=null;
ResultSet rs =null;
Connection conn=JDBCUtil.getConnection();
String sql="select * from student limit ? , ?";
List<Student> list= new ArrayList<Student>();
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, index);
ps.setInt(2, pageSize);
rs = ps.executeQuery();
while (rs.next()) {
int id=rs.getInt("id");
String name = rs.getString("name");
String school = rs.getString("school");
String score = rs.getString("score");
list.add(new Student(id,name,school,score));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.close(ps, rs, conn);
}
return list;
}
}
/class StudentService
package com.neusoft.service;
import java.util.List;
import com.neusoft.bean.Page;
import com.neusoft.bean.Student;
import com.neusoft.dao.StudentDao;
public class StudentService {
private StudentDao stuDao=new StudentDao();
public Page<Student> getStudentList(int pageNo, int pageSize){
//第一步:查询当前表的所有记录数
int totalRecord= stuDao.getTotalRecord();
//第二步:创建page对象
Page<Student> page = new Page<Student>(totalRecord,pageNo,pageSize);
//第三步:查询分页列表数据并设置到page对象中!
List<Student> list = stuDao.getLimitStuList(page.getIndex(),page.getPageSize());
page.setData(list);
return page;
}
public List<Student> getStudent(Student student){
return stuDao.getStudent(student);
}
public Student getStuInfoById(String id) {
// TODO Auto-generated method stub
return stuDao.getStuInfoById(id);
}
public int Add(Student student){
return stuDao.add(student);
}
public int Update(Student student){
return stuDao.update(student);
}
}
/class BaseServlet
package com.neusoft.servlet;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class BaseServlet
*/
@WebServlet("/BaseServlet")
public class BaseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected static int pageSize=1;
protected static int pageNo=1;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
try {
pageNo =Integer.parseInt(request.getParameter("pageNo"));
} catch (Exception e) {
e.getMessage();
}
//获取用户传递的请求参数
String methodName = request.getParameter("method");
//通过方法名获取到方法的对象
//获取当前类的Class对象
Class<? extends BaseServlet> cla = this.getClass();
//获取cla的的方法(Method对象)
//getDeclaredMethod需要两个参数,方法名和参数名
//因为在java需要通过方法名和参数列表来确定一个方法
try {
//获取方法对象
Method method = cla.getDeclaredMethod(methodName, HttpServletRequest.class , HttpServletResponse.class);
//设置方法的访问权限
method.setAccessible(true);
//调用方法
//invoke用于调用一个方法,第一个参数时要调用方法的对象,剩下是调用方法需要的参数
method.invoke(this, request , response);
}catch (InvocationTargetException e) {
System.out.println("此处接收被调用方法内部未被捕获的异常");
e.getMessage();
}catch (Exception e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
doGet(request, response);
}
}
/class StudentServlet
package com.neusoft.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.neusoft.bean.Page;
import com.neusoft.bean.Student;
import com.neusoft.dao.StudentDao;
import com.neusoft.service.StudentService;
import com.neusoft.utils.WEBUtils;
@WebServlet("/StudentServlet")
public class StudentServlet extends BaseServlet {
private static final long serialVersionUID = 1L;
private StudentService stuService=new StudentService();
protected void getStuList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String url = WEBUtils.getPath(request);
Page<Student> page = stuService.getStudentList(pageNo,pageSize);
page.setPath(url);
request.setAttribute("page",page);
request.getRequestDispatcher("/WEB-INF/view/main.jsp").forward(request, response);
}
protected void toUpdatePage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
Student stu= stuService.getStuInfoById(id);
if (stu != null) {
request.setAttribute("stu",stu);
request.getRequestDispatcher("/WEB-INF/view/update.jsp").forward(request, response);
}
}
protected void Delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String ids = request.getParameter("id");
int id=Integer.parseInt(ids);
StudentDao.delete(id);
getStuList(request, response);
//request.getRequestDispatcher("/WEB-INF/view/main.jsp").forward(request, response);
}
protected void Update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
String name = request.getParameter("name");
String school = request.getParameter("school");
String score = request.getParameter("score");
int id=Integer.parseInt(request.getParameter("id"));
Student student=new Student();
student.setName(name);
student.setSchool(school);
student.setScore(score);
student.setId(id);
System.out.println(name);
stuService.Update(student);
// response.sendRedirect("/Regist-success.html");//重定向
getStuList(request, response);
}
protected void Add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf8");
String name = request.getParameter("name");
String school = request.getParameter("school");
String score = request.getParameter("score");
Student student=new Student();
student.setName(name);
student.setSchool(school);
student.setScore(score);
List<Student> student2 = stuService.getStudent(student);
System.out.println(student2.toString());
if (student2.isEmpty()) {
stuService.Add(student);
getStuList(request, response);
}else {
// response.sendRedirect("/Regist-success.html");//重定向
request.getRequestDispatcher("/WEB-INF/view/insert-error.jsp").forward(request, response);//转发
}
}
}
/class TOInsert
package com.neusoft.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class TOInsert
*/
@WebServlet("/TOInsert")
public class TOInsert extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/view/insert.jsp").forward(request, response);
}
/**
* @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);
request.setCharacterEncoding("utf8");
}
}
/ class JDBCUtil
package com.neusoft.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtil {
private static String driver="com.mysql.jdbc.Driver";
private static String url="jdbc:mysql://localhost:3306/demo";
private static String username="root";
private static String password="123456";
static{
try {//加载驱动
Class.forName(driver);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection(){//创建连接
try {
return DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
return null;
}
}
public static void close(Statement st,ResultSet rs,Connection conn){//全部关闭
if (conn !=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (rs !=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (st !=null) {
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void close(Connection conn){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(PreparedStatement ps){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(ResultSet rs){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//封装函数,直接传参使用
public static int executeUpdate(String sql,Object... papram) {
// TODO Auto-generated method stub
Connection conn =getConnection();
int result=0;
try {
PreparedStatement pst = conn.prepareStatement(sql);
if (papram!=null) {
for (int i = 0; i < papram.length; i++) {
pst.setObject(i+1, papram[i]);
}
}
result =pst.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
close(conn);
}
return result;
}
}
/class WEBUtils
package com.neusoft.utils;
import javax.servlet.http.HttpServletRequest;
public class WEBUtils {
public static String getPath(HttpServletRequest request){
String requestURI = request.getRequestURI();
String queryString = request.getQueryString();
String url = requestURI+"?"+queryString;
if(url.contains("&pageNo")){
url = url.substring(0, url.indexOf("&pageNo"));
}
if(url.contains("Update")){
url = url.replace("Update", "getStuList");
}
if(url.contains("Add")){
url = url.replace("Add", "getStuList");
}
if(url.contains("Delete")){
url = url.replace("Delete", "getStuList");
}
return url;
}
}
index.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Insert title here</title> </head> <body> <a href="${pageContext.request.contextPath}/StudentServlet?method=getStuList&pageNo=1">go!</a> </body> </html>
main.jsp


<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Insert title here</title> <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script> </head> <body> <table border="1" align="center" width="50%"> <tr> <th>姓名</th> <th>学校</th> <th>成绩</th> <th colspan="2">操作</th> </tr> <c:forEach items="${page.data}" var="stu"> <tr> <td>${stu.name}</td> <td>${stu.school}</td> <td>${stu.score}</td> <td> <a href="${pageContext.request.contextPath}/StudentServlet?method=toUpdatePage&id=${stu.id}">修改</a></td><!-- TOUpdate?id=${ stu.id}&name=${stu.name}&school=${stu.school}&score=${stu.score}之前用的方法 --> <td> <a href="${pageContext.request.contextPath}/StudentServlet?method=Delete&id=${stu.id}">删除</a></td> </tr> </c:forEach> <tr><td colspan="3" align="center"><a href="/Student-Sql/TOInsert">添加</a></td></tr> </table> <br> <%@ include file="/WEB-INF/view/paging.jsp" %> </body> </html>
insert.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>Insert title here</title> </head> <body> <form action="${pageContext.request.contextPath}/StudentServlet?method=Add" method="post"> 姓名:<input type="text" name="name"/><br> 学校:<input type="text" name="school"/><br> 分数:<input type="text" name="score"/><br> <input type="submit" value="添加信息"/> </form> </body> </html>
update.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 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>Insert title here</title> </head> <body> <%-- <table border="1" align="center" width="50%" > <tr> <th>原信息</th> <th>新信息</th> </tr> <c:forEach items="${student2}" var="stu"> <form action="/Student-Sql/UpdateServlet?id=${stu.id}" method="post"> <tr> <td>${stu.id}</td> <td>ID:${stu.id}</td> </tr> </c:forEach> <c:forEach items="${student2}" var="stu"> <tr> <td>${stu.name}</td> <td>姓名:<input type="text" name="name"/></td> </tr> </c:forEach> <c:forEach items="${student2}" var="stu"> <tr> <td>${stu.school}</td> <td>学校:<input type="text" name="school"/></td> </tr> </c:forEach> <c:forEach items="${student2}" var="stu"> <tr> <td>${stu.score}</td> <td>分数:<input type="text" name="score"/></td> </tr> <tr><td> </td> <td><input type="submit" value="修改信息 "></td></tr> </c:forEach> </form> </table> --%> <form action="${pageContext.request.contextPath}/StudentServlet?method=Update&id=${stu.id}" method="post" > <%-- <input type="hidden" name="id" value="${stu.id}"/> --%> 姓名:<input type="text" name="name" value="${stu.name}"/> 学校:<input type="text" name="school" value="${stu.school}"/> 分数:<input type="text" name="score" value="${stu.score}"/> <input type="submit" value="修改信息 "> </form> </body> </html>
paging.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <div id="page_nav" align="center"> <a href="${page.path}&pageNo=1">首页</a> <a href="${page.path}&pageNo=${page.pageNumber -1 }">上一页</a> <c:choose> <c:when test="${page.totalPage <= 5 }" > <c:set var="begin" value="1"></c:set> <c:set var="end" value="${page.totalPage}"></c:set> </c:when> <c:when test="${page.pageNumber <= 3 }"> <c:set var="begin" value="1"></c:set> <c:set var="end" value="5"></c:set> </c:when> <c:otherwise> <c:set var="begin" value="${page.pageNumber-2}"></c:set> <c:set var="end" value="${page.pageNumber+2}"></c:set> <c:if test="${end > page.totalPage }"> <c:set var="begin" value="${page.totalPage-4}"></c:set> <c:set var="end" value="${page.totalPage}"></c:set> </c:if> </c:otherwise> </c:choose> <c:forEach begin="${begin }" end="${end}" var="num"> <c:if test="${page.pageNumber == num }"> 【${num}】 </c:if> <c:if test="${page.pageNumber != num }"> <a href="${page.path}&pageNo=${num}">${num }</a> </c:if> </c:forEach> <a href="${page.path}&pageNo=${page.pageNumber +1}">下一页</a> <a href="${page.path}&pageNo=${page.totalPage}">末页</a> 共${page.totalPage }页,${page.totalRecord }条记录到,去第<input value="${page.totalPage }" name = "pn" id ="pn_input"/>页 <input type="button" value="确定" id="btn_id"/> <script type="text/javascript"> $("#btn_id").click(function(){ var value= $("#pn_input").val(); window.location="${page.path}&pageNo="+value; }); </script> </div>
最后。。导包