图书馆管理系统
项目的功能实现
1.1 学生使用端:
功能实现:
- 头像、个人信息
- 书籍信息
- 纸质书籍
- 电子文稿
- 历史订单
- 图书购买订单
- 图书的借用与归还订单
- 图书馆简介
- 意见/建议
- 支持鼓励
- 退出登录
1.2 管理员使用端:
- 头像、个人信息
- 学生信息管理
- 书籍信息管理
- 书籍的详细信息
- 书籍库存数量
- 订单信息管理
- 图书购买的订单信息
- 图书的借用与归还的订单信息
- 意见管理中心
- 接收学生端的意见和建议
工具:IDEA 、Navicat 、HbuilderX 、SQLyog、typora
编码:
1. 数据库的创建
Student (学生信息表)
学生信息表;记录学生的个人信息
stu_id(主键) 学生学号
password 登录密码
stu_name 学生姓名
gender 学生性别
class 学生班级
phone 学生手机号
Books (图书信息表)
图书信息表:记录图书的书籍信息
book_id(主) 书籍编号
book_name 书籍名称
book_price 书籍价钱
book_category 书籍类别
book_publish 书籍出版社
Book_nums (图书数量表)
图书数量表:记录图书馆中当前所含有的图书数量
book_nums_id 图书数量id
book_id 图书id
book_nums 图书的数量
Borrow_books (图书信息借用与归还)
(图书信息借用与归还):记录学生借书与归还书的记录
borrow_id 图书借用ID
stu_id 学生ID
book_id 图书ID
borrow_time 借出时间
return_time 归还时间
Buy_books (图书购买订单)
图书购买订单:记录图书购买的订单(目前只能每次只能购买一本图书)
buy_id 购买订单ID
stu_id 学生ID
book_id 图书ID
book_price 图书价格
buy_time 购买时间
2. JavaBean
student
package com.volta.entity;
/**
* 学生信息表
*/
public class student {
private Integer stu_id;
private String password;
private String stu_name;
private String gender;
private String stu_class;
private String phone;
public student() {
super();
}
public student(Integer stu_id, String password, String stu_name, String gender, String stu_class, String phone) {
this.stu_id = stu_id;
this.password = password;
this.stu_name = stu_name;
this.gender = gender;
this.stu_class = stu_class;
this.phone = phone;
}
public Integer getStu_id() {
return stu_id;
}
public void setStu_id(Integer stu_id) {
this.stu_id = stu_id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getStu_name() {
return stu_name;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getStu_class() {
return stu_class;
}
public void setStu_class(String stu_class) {
this.stu_class = stu_class;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "student{" +
"stu_id=" + stu_id +
", password='" + password + '\'' +
", stu_name='" + stu_name + '\'' +
", gender='" + gender + '\'' +
", stu_class='" + stu_class + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
3. 前端界面
index.jsp
主界面
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
body {
font-family: "Lato", sans-serif;
transition: background-color .5s;
background: url("../images/background.png");
}
/*侧边栏选择器*/
.sidenav {
height: 100%;
width: 0; /*原始宽度*/
position: fixed;
/*z-index、top、left共同控制侧栏的悬浮(上方1,下方-1)*/
z-index: 1;
top: 0;
left: 0;
background-color: pink;
overflow-x: hidden;
transition: 0.5s; /*侧栏延迟0.5s显示*/
padding-top: 60px;
}
/*侧边栏标签选择器*/
.sidenav a {
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s; /*标签延迟0.3s显示*/
}
.sidenav select{
padding: 8px 8px 8px 32px;
text-decoration: none;
font-size: 25px;
color: #818181;
display: block;
transition: 0.3s; /*标签延迟0.3s显示*/
border: 0;
position: relative;
appearance:none;
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari 和 Chrome */
outline:none; /*取消选中时的边框*/
}
/*侧栏标签和关闭按钮光标的效果*/
.sidenav a:hover, .offcanvas a:focus{
color: #f1f1f1;
}
/*侧栏和关闭按钮的位置选择器*/
.sidenav .closebtn {
position: absolute;
top: 0;
right: 25px;
font-size: 36px;
margin-left: 50px;
}
/*主体内容*/
#main {
transition: margin-left .5s;/*主体内容延迟0.5s整体y右移动*/
padding: 16px;
}
/*当文档高度小于450px时,改变侧栏的padding属性和字体大小*/
@media screen and (max-height: 450px) {
.sidenav {padding-top: 15px;}
.sidenav a {font-size: 18px;}
}
.round_icon{
width: 75px;
height: 75px;
display: flex;
border-radius: 50%;
align-items: center;
justify-content: center;
overflow: hidden;
}
</style>
</head>
<body>
<div id="mySidenav" class="sidenav">
<img src="../images/吴彦祖.jpg" class="round_icon">
<a href="">个人信息</a>
<a href="${pageContext.request.contextPath}/student_information_servlet">学生信息管理</a>
<a href="#">书籍信息管理</a>
<a href="#">订单信息管理</a>
<a href="#">意见管理中心</a>
<a href="#">退出登录</a>
</div>
<div id="main">
<h2>图书馆管理系统</h2>
<p>点击以下菜单图标打开侧边栏,主体内容向右偏移。主体内容添加黑色透明背景</p>
<span style="font-size:30px;cursor:pointer" id="openclose">☰ open</span>
</div>
</body>
<script type="text/ecmascript">
let flag=true;
document.getElementById("openclose").onclick = function(){
if(flag == true){
openNav();
flag=-flag;
}else{
closeNav();
flag=-flag;
}
};
/*打开侧栏,修改侧栏宽度,主体左跨度、背景透明度*/
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
document.getElementById("main").style.marginLeft = "250px";
document.body.style.backgroundColor = "rgba(255, 170, 255, 0.4)";
}
/*关闭侧栏,恢复原始侧栏宽度,主体左跨度、背景透明度*/
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main").style.marginLeft= "0";
document.body.style.backgroundColor = "white";
}
</script>
</html>
login.jsp
登录界面
<%--
Created by IntelliJ IDEA.
User: lzq
Date: 2022/7/25
Time: 20:15
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<title>登录</title>
<style>
@import url("../css/register.css");
</style>
</head>
<body>
<div class="content">
<div class="avatar"></div>
<div class="loginOrRegisterBox">
<ul class="witch">
<li id="loginButton">登录</li>
<li id="registerButton">注册</li>
</ul>
<div id="form">
<form action="../loginServlet" method="post" id="login">
<input type="text" placeholder="学号" name="stu_id" id="stu_id1">
<input type="password" placeholder="密码" name="password" id="password1">
<div>
<input type="checkbox" name="">
<p>记住密码</p>
<a href="#">忘记密码?</a>
<span id="msg1" style="font-size: 12px;color: red"></span>
<%=request.getAttribute("login_msg") == null ? "" : request.getAttribute("login_msg")%>
<%
request.removeAttribute("login_msg");
%>
</div>
<input type="button" id="loginbtn" value="登 录" >
</form>
<form action="../registerServlet" id="register" method="post">
<input type="text" placeholder="学号" name="stu_id" id="stu_id">
<input type="text" placeholder="姓名" name="stu_name" id="stu_name">
<input type="test" placeholder="性别" name="gender" id="gender">
<input type="text" placeholder="班级" name="stu_class" id="stu_class">
<input type="tel" placeholder="手机号" name="phone" id="phone">
<input type="password" placeholder="密码" name="password" id="password">
<input type="password" placeholder="确认密码" name="confirmPassword" id="confirmPassword">
<input type="button" value="立即注册" ID="registerbtn">
<span id="msg" style="font-size: 12px;color: red;text-align: center"></span>
<%=request.getAttribute("login_msg") == null ? "" : request.getAttribute("login_msg")%>
<%
request.removeAttribute("login_msg");
%>
</form>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="../js/jQuery.js" ></script>
<script src="../js/login.js"></script>
<script type="text/javascript">
//前台校验;
$("#loginbtn").click( function (){
var id=$("#stu_id1").val();
var pwd=$("#password1").val();
if(isEmpty(id)){
//用户名为空
$("#msg1").html("学号不允许为空!");
return ;
}else if(isEmpty(pwd)){
//密码为空
$("#msg1").html("密码不允许为空!");
return ;
}else{
//两者都不为空,则手动提交表单
$("#login").submit();
}
});
//前台校验;
$("#registerbtn").click( function (){
alert("click");
var id=$("#stu_id").val();
var gender=$("#gender").val();
var stu_class=$("#stu_class").val();
var phone=$("#phone").val();
var password=$("#password").val();
var confirmPassword=$("#confirmPassword").val();
if(isEmpty(id)){
//用户名为空
$("#msg").html("学号不允许为空!");
return ;
}else if(isEmpty(password)){
//密码为空
$("#msg").html("密码不允许为空!");
return ;
}else if(isEmpty(gender)){
//密码为空
$("#msg").html("性别不允许为空!");
return ;
}else if(isEmpty(stu_class)){
//密码为空
$("#msg").html("班级不允许为空!");
return ;
}else if(password != confirmPassword){
//密码为空
$("#msg").html("两次密码不同,请检查!");
return ;
}
else{
alert("submit");
//两者都不为空,则手动提交表单
$("#register").submit();
}
});
/**
* 判断字符串是否为空
*/
function isEmpty(str){
if (str == null || str.trim() == "") {
return true;
}
return false;
}
</script>
</html>
student_information.jsp
用表格的形式加载学生表中的数据
<%--
Created by IntelliJ IDEA.
User: lzq
Date: 2022/7/27
Time: 23:01
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<!-- 使用Edge最新的浏览器的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
width: 默认宽度与设备的宽度相同
initial-scale: 初始的缩放比,为1:1 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>用户信息管理系统</title>
<!-- 1. 导入CSS的全局样式 -->
<link href="../css/bootstrap-theme.css" rel="stylesheet">
<link href="../css/bootstrap.css" rel="stylesheet">
<!-- 2. jQuery导入,建议使用1.9以上的版本 -->
<script src="../js/jQuery.js"></script>
<!-- 3. 导入bootstrap的js文件 -->
<script src="../js/bootstrap.min.js"></script>
<style type="text/css">
td, th {
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h3 style="text-align: center">学生信息列表</h3>
<br>
<div style="text-align: center">
<select style="text-align: center; height:28px;width: 200px" id="inputselectid">
<option value="stu_id" >学号</option>
<option value="stu_name" >姓名</option>
<option value="stu_class" >班级</option>
</select>
<input id="selectinputid"/>
<button type="button" style="width: 50px; height: 28px" onclick="selectinput()">查询</button>
<button type="reset" style="width: 50px; height: 28px" onclick="clearinput()">清空</button>
<br>
</div>
<table border="1" class="table table-bordered table-hover">
<tr class="success">
<th>编号</th>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>班级</th>
<th>手机号</th>
<th>操作</th>
</tr>
<c:forEach items="${sessionScope.students}" var="student" varStatus="s">
<tr>
<td>${s.count}</td>
<td>${student.stu_id}</td>
<td>${student.stu_name}</td>
<td>${student.gender}</td>
<td>${student.stu_class}</td>
<td>${student.phone}</td>
<td><a class="btn btn-default btn-sm" onclick="updatestudent(${student.stu_id})">修改</a> <a class="btn btn-default btn-sm" onclick="deletestudent(${student.stu_id})">删除</a></td>
</tr>
</c:forEach>
<tr>
<td colspan="8" align="center"><a class="btn btn-primary" onclick="addinput()">添加联系人</a></td>
</tr>
</table>
</div>
</body>
<script>
function deletestudent(stu_id){
if(confirm("你确定要删除吗?")){ //删除用户
location.href="${pageContext.request.contextPath}/deleteServlet?stu_id="+stu_id;
}
}
function clearinput(){ //清空搜索框
document.getElementById("selectinputid").value="";
}
function selectinput(){
//获取操作的对象
var op=document.getElementById("inputselectid").value;
var value=document.getElementById("selectinputid").value;
if(op=="stu_id"){
location.href="${pageContext.request.contextPath}/selectServlet?stu_id="+value;
}else if(op=="stu_name"){
location.href="${pageContext.request.contextPath}/selectServlet?stu_name="+value;
}else if(op=="stu_class"){
location.href="${pageContext.request.contextPath}/selectServlet?stu_class="+value;
}else{
//没有匹配成功不做处理
}
}
function updatestudent(stu_id) {
location.href="${pageContext.request.contextPath}/updateServlet?stu_id="+stu_id;
}
function addinput() {
location.href="${pageContext.request.contextPath}/pages/add.jsp";
}
</script>
</html>
update.jsp
用于修改学生信息表中的信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<!-- 使用Edge最新的浏览器的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
width: 默认宽度与设备的宽度相同
initial-scale: 初始的缩放比,为1:1 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>用户信息管理系统</title>
<!-- 1. 导入CSS的全局样式 -->
<link href="../css/bootstrap-theme.css" rel="stylesheet">
<link href="../css/bootstrap.css" rel="stylesheet">
<!-- 2. jQuery导入,建议使用1.9以上的版本 -->
<script src="../js/jQuery.js"></script>
<!-- 3. 导入bootstrap的js文件 -->
<script src="../js/bootstrap.min.js"></script>
<style type="text/css">
td, th {
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h3 style="text-align: center">学生信息列表</h3>
<br>
<table border="1" class="table table-bordered table-hover" id="tableid">
<tr class="success">
<th>编号</th>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>班级</th>
<th>手机号</th>
<th>操作</th>
</tr>
<c:forEach items="${sessionScope.students}" var="student" varStatus="s">
<tr>
<td>${s.count}</td>
<td><input type="text" value="${student.stu_id}" style="border :0;" id="a"/></td>
<td><input type="text" value="${student.stu_name}" style="border :0;" id="b"/></td>
<td><input type="text" value="${student.gender}" style="border :0;" id="c"/></td>
<td><input type="text" value="${student.stu_class}" style="border :0;" id="d"/></td>
<td><input type="tel" value="${student.phone}" style="border :0;" id="e"/></td>
<td><a class="btn btn-default btn-sm" onclick="deletestudent(${student.stu_id})">删除</a></td>
</tr>
</c:forEach>
<td colspan="8" align="center"><a class="btn btn-primary" onclick="finishupdate()">提交</a></td>
</table>
</div>
</body>
<script type="text/javascript">
function deletestudent(stu_id){
if(confirm("你确定要删除吗?")){ //删除用户
location.href="${pageContext.request.contextPath}/deleteServlet?stu_id="+stu_id;
}
}
function finishupdate() {
var stu_id=$("#a").val();
var stu_name=$("#b").val();
var gender=$("#c").val();
var stu_class=$("#d").val();
var phone=$("#e").val();
if(confirm("你确定要修改吗?")){
location.href="${pageContext.request.contextPath}/updateServlet?stu_id="+stu_id+"&stu_name="+stu_name+"&gender="+gender+"&stu_class="+stu_class+"&phone="+phone;
}
}
</script>
</html>
add.jsp
用于添加学生信息表中的信息
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<!-- 网页使用的语言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<!-- 使用Edge最新的浏览器的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- viewport视口:网页可以根据设置的宽度自动进行适配,在浏览器的内部虚拟一个容器,容器的宽度与设备的宽度相同。
width: 默认宽度与设备的宽度相同
initial-scale: 初始的缩放比,为1:1 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>用户信息管理系统</title>
<!-- 1. 导入CSS的全局样式 -->
<link href="../css/bootstrap-theme.css" rel="stylesheet">
<link href="../css/bootstrap.css" rel="stylesheet">
<!-- 2. jQuery导入,建议使用1.9以上的版本 -->
<script src="../js/jQuery.js"></script>
<!-- 3. 导入bootstrap的js文件 -->
<script src="../js/bootstrap.min.js"></script>
<style type="text/css">
td, th {
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h3 style="text-align: center">学生信息列表</h3>
<br>
<table border="1" class="table table-bordered table-hover" id="tableid">
<tr class="success">
<th>编号</th>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>班级</th>
<th>手机号</th>
<th>操作</th>
</tr>
<c:forEach items="${sessionScope.students}" var="student" varStatus="s">
<tr>
<td>${s.count}</td>
<td><input type="text" value="${student.stu_id}" style="border :0;" id="a"/></td>
<td><input type="text" value="${student.stu_name}" style="border :0;" id="b"/></td>
<td><input type="text" value="${student.gender}" style="border :0;" id="c"/></td>
<td><input type="text" value="${student.stu_class}" style="border :0;" id="d"/></td>
<td><input type="tel" value="${student.phone}" style="border :0;" id="e"/></td>
<td><a class="btn btn-default btn-sm" onclick="deletestudent(${student.stu_id})">删除</a></td>
</tr>
</c:forEach>
<td colspan="8" align="center"><a class="btn btn-primary" onclick="finishupdate()">提交</a></td>
</table>
</div>
</body>
<script type="text/javascript">
function deletestudent(stu_id){
if(confirm("你确定要删除吗?")){ //删除用户
location.href="${pageContext.request.contextPath}/deleteServlet?stu_id="+stu_id;
}
}
function finishupdate() {
var stu_id=$("#a").val();
var stu_name=$("#b").val();
var gender=$("#c").val();
var stu_class=$("#d").val();
var phone=$("#e").val();
if(confirm("你确定要修改吗?")){
location.href="${pageContext.request.contextPath}/updateServlet?stu_id="+stu_id+"&stu_name="+stu_name+"&gender="+gender+"&stu_class="+stu_class+"&phone="+phone;
}
}
</script>
</html>
3. Servlet层
loginServlet
package com.volta.servlet.stuServlet;
import com.volta.service.student.loginservice;
import com.volta.service.student.loginserviceimpl;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import com.volta.entity.student;
@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("dopost");
//1、设置编码格式
request.setCharacterEncoding("utf-8");
//2、获取数据 //获取的对象的String 与input标签的name所设置的值进行对应;
Map<String, String[]> map = request.getParameterMap();
//3、封装成对象
student student = new student();
try {
BeanUtils.populate(student,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
System.out.println("-----===-"+student);
//4、调用service层的方法
loginservice loginservice = new loginserviceimpl();
//5、是否登录成功
if(loginservice.findstudentbyidpwd(student)){
//true 表示在数据库中找到了对应得student;
//登陆成功
request.getSession().setAttribute("student",student);
//重定向页面跳转
//request.getContextPath() 获取request的当前的路径
response.sendRedirect(request.getContextPath()+"/pages/index.jsp");
}else{
//FALSE
//登陆失败
request.setAttribute("login_msg","学号或密码错误!");
System.out.println("登录错误");
//返回消息
//页面跳转
request.getRequestDispatcher("/pages/login.jsp").forward(request,response);
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
registerServlet
package com.volta.servlet.stuServlet;
import com.volta.entity.student;
import com.volta.service.student.loginserviceimpl;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
/**
* 登录界面的用户注册界面的操作
*/
@WebServlet("/registerServlet")
public class registerServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("dopost");
request.setCharacterEncoding("utf-8");
String id = request.getParameter("stu_id");
Map<String, String[]> map = request.getParameterMap();
student student = new student();
try {
BeanUtils.populate(student,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
//先通过ID查找数据库是否含有相应的用户;
System.out.println("student::"+student);
loginserviceimpl lo = new loginserviceimpl();
if(lo.findstudentbyid(student)){
//true 表示数据库中已经存在学号
//注册失败
}else{
//flase 表示数据库中不存在相应的学号
lo.insertstudent(student);
System.out.println("注册成功");
//注册成功
//跳转到登录界面
request.setAttribute("login_msg","注册成功!");
//返回消息
//页面跳转
try {
Thread.sleep(2000);
request.getRequestDispatcher("/pages/login.jsp").forward(request,response);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
student_information_servlet
package com.volta.servlet.stuServlet;
import com.volta.entity.student;
import com.volta.service.student.loginservice;
import com.volta.service.student.loginserviceimpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/student_information_servlet")
public class student_information_servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("___ dopost____");
loginservice loginservice =new loginserviceimpl();
List<student> studentList = loginservice.findstudentAll();
request.getSession().setAttribute("students",studentList); //将userList 插入到request的作用域中进行数据共享
request.getRequestDispatcher("/pages/student_information.jsp").forward(request,response); //跳转到student_information.jsp页面
}
}
selectServlet
package com.volta.servlet.stuServlet;
import com.volta.entity.student;
import com.volta.service.student.loginservice;
import com.volta.service.student.loginserviceimpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* 根据搜索框的操作,进行数据库中数据的搜索
*/
@WebServlet("/selectServlet")
public class selectServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("selectServlet post");
request.setCharacterEncoding("utf-8");
//获取数据
String stu_id=request.getParameter("stu_id");
String stu_name=request.getParameter("stu_name");
String stu_class=request.getParameter("stu_class");
student student = new student();
loginservice lo = new loginserviceimpl();
List<student> studentList = null;
if(stu_id!=null){
student.setStu_id(Integer.parseInt(stu_id));//插入ID //将String类型转化成一个Integer类型;
studentList=lo.findstudentbystu_id(student);
}else if(stu_name!=null){
student.setStu_name(stu_name);//插入姓名
studentList =lo.findstudentbyname(student);
}else if(stu_class!=null){
student.setStu_class(stu_class); //插入班级
studentList =lo.findstudentbyclass(student);
}else{
//没有任何参数不做处理
}
request.getSession().setAttribute("students",studentList);
response.sendRedirect(request.getContextPath()+"/pages/student_information.jsp");
}
}
addServlet
package com.volta.servlet.stuServlet;
import com.volta.entity.student;
import com.volta.service.student.loginservice;
import com.volta.service.student.loginserviceimpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/addServlet")
public class addServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
//获取数据
String stu_id=request.getParameter("stu_id");
String stu_name=request.getParameter("stu_name");
String password=request.getParameter("password");
String gender=request.getParameter("gender");
String stu_class=request.getParameter("stu_class");
String phone=request.getParameter("phone");
student student = new student(Integer.parseInt(stu_id),password,stu_name,gender,stu_class,phone);
System.out.println("----addServlet--"+student);
//调用service层的方法
loginservice lo = new loginserviceimpl();
int res=lo.insertstudent(student);
if(res>0){
response.sendRedirect(request.getContextPath()+"/student_information_servlet");
}
}
}
deleteServlet
package com.volta.servlet.stuServlet;
import com.volta.entity.student;
import com.volta.service.student.loginservice;
import com.volta.service.student.loginserviceimpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 用于删除操作的功能
*/
@WebServlet("/deleteServlet")
public class deleteServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
String stu_id=request.getParameter("stu_id");
student student = new student();
student.setStu_id(Integer.parseInt(stu_id)); //将String类型转化成一个Integer类型;
loginservice loginservice = new loginserviceimpl();
int res=loginservice.deletetudent(student);
if(res==1){
System.out.println("student:"+student);
System.out.println("删除成功!");
//跳转到主界面
response.sendRedirect(request.getContextPath()+"/student_information_servlet");
}
}
}
updateServlet
package com.volta.servlet.stuServlet;
import com.volta.entity.student;
import com.volta.service.student.loginservice;
import com.volta.service.student.loginserviceimpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* 用于修改学生信息表中的信息
*/
@WebServlet("/updateServlet")
public class updateServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String stu_id=request.getParameter("stu_id");
String stu_name=request.getParameter("stu_name");
String gender=request.getParameter("gender");
String stu_class=request.getParameter("stu_class");
String phone=request.getParameter("phone");
student student = new student();
student.setStu_id(Integer.parseInt(stu_id));
loginservice lo = new loginserviceimpl();
if(stu_name==null){ //执行搜索
List<student> upstudent = lo.findstudentbystu_id(student);
request.getSession().setAttribute("students",upstudent);
response.sendRedirect(request.getContextPath()+"/pages/update.jsp");
}else{ //修改
student.setStu_name(stu_name);
student.setStu_class(stu_class);
student.setGender(gender);
student.setPhone(phone);
int res=lo.updatestudent(student);
if(res>0){
response.sendRedirect(request.getContextPath()+"/student_information_servlet");
}
}
}
}
4. Service面
Service
package com.volta.service.student;
import com.volta.entity.student;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface loginservice {
/**
* 查询数据库中所有学生的信息
*/
List<student> findstudentAll();
/**
* 搜索
*通过学号查询数据库中的学生信息
* 学号唯一,查询的结果唯一
*/
List<student> findstudentbystu_id(student student);
/**搜索
* 通过姓名查找数据库中的学生信息
* 可能存在重名的学生,返回List;
*/
List<student> findstudentbyname(student student);
/**搜索
* 通过班级查找查找数据库中的学生信息
* 可能存在同班的学生,返回List;
*/
List<student> findstudentbyclass(student student);
/**登录
* 根据 ID and password 寻找学生信息,
* 找到了返回TRUE
* 没找到返回FALSE
*/
boolean findstudentbyidpwd(student student);
/**注册
* 根据 ID 寻找学生信息,
* 找到了返回TRUE
* 没找到返回FALSE
*/
boolean findstudentbyid(student student);
//插入数据
int insertstudent(student student);
//删除学生表中的数据
int deletetudent(student student);
/**
* 修改学生的信息,但是不允许修改学号
*/
int updatestudent(student student);
}
loginserviceimpl
package com.volta.service.student;
import com.volta.entity.student;
import com.volta.mapper.loginmapper;
import com.volta.service.student.loginservice;
import com.volta.utils.mybatisUtil;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class loginserviceimpl implements loginservice {
@Override
public boolean findstudentbyidpwd(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
student loginstu=loginmapper.findstudentbyidpwd(student);
if(loginstu!=null){
//根据stu_id and password 在数据库中寻找相应的用户;
return true;
}
return false;
}
@Override
public boolean findstudentbyid(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
student studentList=loginmapper.findstudentbyid(student);
if(studentList!=null){
//根据stu_id and password 在数据库中寻找相应的用户;
return true;
}
return false;
}
@Override
public int insertstudent(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper registermapper = sqlSession.getMapper(loginmapper.class);
int res=registermapper.insertstudent(student);
return res;
}
@Override
public int deletetudent(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper deletemapper = sqlSession.getMapper(loginmapper.class);
int res=deletemapper.deletestudent(student);
return res;
}
@Override
public List<student> findstudentAll() {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
List<student> studentList = loginmapper.findstudentAll();
return studentList;
}
@Override
public List<student> findstudentbystu_id(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
List<student> studentList = loginmapper.findstudentbystu_id(student);
return studentList;
}
@Override
public List<student> findstudentbyname(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
List<student> studentList = loginmapper.findstudentbyname(student);
return studentList;
}
@Override
public List<student> findstudentbyclass(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
List<student> studentList = loginmapper.findstudentbyclass(student);
return studentList;
}
@Override
public int updatestudent(student student) {
SqlSession sqlSession = mybatisUtil.getSqlSession();
loginmapper loginmapper = sqlSession.getMapper(loginmapper.class);
int res = loginmapper.updatestudent(student);
return res;
}
}
5. Mapper层
loginMapper
package com.volta.mapper;
import com.volta.entity.student;
import org.apache.ibatis.annotations.*;
import java.util.List;
/*
实现查询数据库中数据的接口,并且使用注解和xml进行基本开发
*/
public interface loginmapper {
/**
* 寻找数据库中所有学生的信息
*/
@Select("select * from student")
List<student> findstudentAll();
/**
* 通过学号和密码查询数据库中的数据
*/
@Select("select * from student where stu_id=#{stu_id} and password=#{password}")
student findstudentbyidpwd(student student);
/**
* 通过学号查询数据库中的数据
*/
@Select("select * from student where stu_id=#{stu_id} and password=#{password}")
student findstudentbyid(student student);
/**
*通过学号查询数据库中的学生信息
* 学号唯一,查询的结果唯一
*/
@Select("select * from student where stu_id=#{stu_id}")
List<student> findstudentbystu_id(student student);
/**
* 通过姓名查找数据库中的学生信息
* 可能存在重名的学生,返回List;
*/
@Select("select * from student where stu_name=#{stu_name}")
List<student> findstudentbyname(student student);
/**
* 通过班级查找查找数据库中的学生信息
* 可能存在同班的学生,返回List;
*/
@Select("select * from student where stu_class=#{stu_class}")
List<student> findstudentbyclass(student student);
/**
*学生表的插入操作
*/
@Insert("insert into student values(#{stu_id} , #{password} , #{stu_name},#{gender},#{stu_class},#{phone})")
int insertstudent(student student);
/**
* 学生表的删除操作
*/
@Delete("delete from student where stu_id=#{stu_id}")
int deletestudent(student student);
/**
* 修改学生的信息,但是不允许修改学号
*/
@Update("update student set stu_name=#{stu_name},gender=#{gender},stu_class=#{stu_class},phone=#{phone} where stu_id=#{stu_id}")
int updatestudent(student student);
}