学习记录贴(三)学生信息管理系统Plus
- 使用工具Navicat、Eclipse、Firefox
MVC模式
- M:model —— 模型层 , 用于封装数据
- V: view —— 视图层 , 用于显示
- C:controller —— 控制层 , 用于接收页面请求
- servlet层要调用service层,service层再调用Dao层
数据库

一、Model层
1、封装学生对象Student
package zjb.domain;
import java.util.Date;
public class Student {
private int id ;
private String name ;
private String sex ;
private String tel ;
private Date birthday ;
private String hobby ;
private String info ;
public Student() {
super();
}
public Student( int id, String name, String sex, String tel, Date birthday, String hobby, String info) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.tel = tel;
this.birthday = birthday;
this.hobby = hobby;
this.info = info;
}
public Student( String name, String sex, String tel, Date birthday, String hobby, String info) {
super();
this.name = name;
this.sex = sex;
this.tel = tel;
this.birthday = birthday;
this.hobby = hobby;
this.info = info;
}
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
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;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", tel=" + tel + ", birthday=" + birthday
+ ", hobby=" + hobby + ", info=" + info + "]";
}
}
2、封装分页对象Page
package zjb.domain;
import java.util.List;
public class Page<T> {
private int CurrentPage;
private int TotalPage;
private int TotalSize;
private int PageSize;
private List<T> list;
public int getCurrentPage() {
return CurrentPage;
}
public void setCurrentPage(int currentPage) {
CurrentPage = currentPage;
}
public int getTotalPage() {
return TotalPage;
}
public void setTotalPage(int totalPage) {
TotalPage = totalPage;
}
public int getTotalSize() {
return TotalSize;
}
public void setTotalSize(int totalSize) {
TotalSize = totalSize;
}
public int getPageSize() {
return PageSize;
}
public void setPageSize(int pageSize) {
PageSize = pageSize;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
}
二、View层
1、首页
<%@ 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="AllStudentServlet">显示所有学生信息</a></h3>
<h3><a href="StudentPageServlet?CurrentPage=1">分页显示学生信息</a></h3>
</body>
</html>
2、显示所有学生信息页面
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>所有学生信息</title>
<script type="text/javascript">
function Delete(id){
var flag = confirm("是否确定删除?");
if(flag){
//window.location.href="DeleteServlet?id="+id;
location.href="DeleteServlet?id="+id;
}
}
</script>
</head>
<body>
<form action="SearchServlet" method="post">
<table border="1" width="700">
<tr >
<td colspan="8">
按姓名查询:<input type="text" name="name"/>
按性别查询:<select name="sex">
<option value="">--请选择--
<option value="男">男
<option value="女">女
</select>
<input type="submit" value="查询">
<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="student">
<tr align="center">
<td>${student.id }</td>
<td>${student.name }</td>
<td>${student.sex }</td>
<td>${student.tel }</td>
<td>${student.birthday }</td>
<td>${student.hobby }</td>
<td>${student.info }</td>
<td><a href="UpdateServlet?id=${student.id }">更新</a> <a href="#" "Delete(${student.id})">删除</a></td>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>
3、添加学生信息页面
<%@ 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="AddStudentServlet">
<table border="1" width="600">
<tr>
<td>姓名</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
</td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="tel"></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>
4、更新学生信息页面
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>更新学生信息页面</title>
</head>
<body>
<form method="post" action="AfterUpdateServlet">
<input type="hidden" name="id" value="${student.id }">
<table border="1" width="600">
<tr>
<td>姓名</td>
<td><input type="text" name="name" value="${student.name }"></td>
</tr>
<tr>
<td>性别</td>
<td>
<input type="radio" name="sex" value="男" <c:if test="${student.sex =='男'}">checked</c:if> >男
<input type="radio" name="sex" value="女" <c:if test="${student.sex =='女'}">checked</c:if> >女
</td>
</tr>
<tr>
<td>电话</td>
<td><input type="text" name="tel" value="${student.tel }"></td>
</tr>
<tr>
<td>生日</td>
<td><input type="text" name="birthday" value="${student.birthday }"></td>
</tr>
<tr>
<td>爱好</td>
<td>
<input type="checkbox" name="hobby" value="游泳" <c:if test="${fn:contains(student.hobby,'游泳') }">checked</c:if>>游泳
<input type="checkbox" name="hobby" value="篮球" <c:if test="${fn:contains(student.hobby,'篮球') }">checked</c:if>>篮球
<input type="checkbox" name="hobby" value="足球" <c:if test="${fn:contains(student.hobby,'足球') }">checked</c:if>>足球
<input type="checkbox" name="hobby" value="看书" <c:if test="${fn:contains(student.hobby,'看书') }">checked</c:if>>看书
<input type="checkbox" name="hobby" value="写字" <c:if test="${fn:contains(student.hobby,'写字') }">checked</c:if>>写字
</td>
</tr>
<tr>
<td>简介</td>
<td><input type="text" name="info" value="${student.info }"></td>
</tr>
<tr>
<td colspan="2"> <input type="submit" value="更新"> </td>
</tr>
</table>
</form>
</body>
</html>
5、分页显示学生信息页面
<%@ 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>
<html>
<head>
<meta charset="UTF-8">
<title>所有学生列表</title>
<script type="text/javascript">
function Delete(id){
var flag = confirm("是否确定删除?");
if(flag){
//window.location.href="DeleteServlet?id="+id;
location.href="DeleteServlet?id="+id;
}
}
</script>
</head>
<body>
<form action="SearchServlet" method="post">
<table border="1" width="700">
<tr >
<td colspan="8">
按姓名查询:<input type="text" name="name"/>
按性别查询:<select name="sex">
<option value="">--请选择--
<option value="男">男
<option value="女">女
</select>
<input type="submit" value="查询">
<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="${Page.list }" var="student">
<tr align="center">
<td>${student.id }</td>
<td>${student.name }</td>
<td>${student.sex }</td>
<td>${student.tel }</td>
<td>${student.birthday }</td>
<td>${student.hobby }</td>
<td>${student.info }</td>
<td><a href="UpdateServlet?id=${student.id }">更新</a> <a href="#" "Delete(${student.id})">删除</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="8">
第 ${Page.currentPage } / ${Page.totalPage }
每页显示${Page.pageSize }条
总的记录数${Page.totalSize }
<c:if test="${Page.currentPage !=1 }">
<a href="StudentPageServlet?CurrentPage=1">首页</a>
| <a href="StudentPageServlet?CurrentPage=${Page.currentPage-1 }">上一页</a>
</c:if>
<c:forEach begin="1" end="${Page.totalPage }" var="i">
<c:if test="${Page.currentPage == i }">
${i }
</c:if>
<c:if test="${Page.currentPage != i }">
<a href="StudentPageServlet?CurrentPage=${i }">${i }</a>
</c:if>
</c:forEach>
<c:if test="${Page.currentPage !=Page.totalPage }">
<a href="StudentPageServlet?CurrentPage=${Page.currentPage+1 }">下一页</a> |
<a href="StudentPageServlet?CurrentPage=${Page.totalPage }">尾页</a>
</c:if>
</td>
</tr>
</table>
</form>
</body>
</html>
三、Servlet层
1、显示所有学生信息的AllStudentServlet
package zjb.servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.Serv