日期:2019/10/24
该学生管理系统基于jsp+servlet+javabean,使用MVC模式,是一个很基础的学生管理系统,由于这是本学期的课程大作业,所以现在还没有完全写完,这篇博文会根据进度逐步更新.
先贴一下该学生管理系统的网址(我已经上传到服务器上了)
http://139.9.200.70:8080/StudentMS/login.html
如果要使用学生身份登陆,可以用学号:201724010206,密码:1 进行登陆
如果要使用教师身份登陆,可以用教师号:201724010,密码:1 进行登陆
当然也可以用其他账号进行登陆,后文会给出数据库的sql文件,导入数据库便可以自己决定登陆的账号和密码
由于我在这个大作业中主要负责后端部分,所以这个博客主要讲解后端代码部分
1.系统的目录结构
2.具体代码
html和jsp页面的代码
(1)login.html(登陆页面)
<!DOCTYPE html>
<html lang="en"><!--可删,lang="en"会让浏览器显示“”翻译此页-->
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<link rel="stylesheet" type="text/css" href="css/login.css"/>
<script type="text/javascript" src="js/login.js"></script>
</head>
<body>
<div id="login_main">
<p id="logo_image"><img src="assets/103.png" width="50" height="50"></p>
<form method="post" action="LoginServlet"><!--method 该属性定义了如何发送数据,action 这个属性定义了发送数据要去的位置-->
<p><label class="label_input">用户名</label><input type="text" id="usernumber" class="text_field" name="usernumber"/></p>
<p><label class="label_input">密码</label><input type="password" id="password" class="text_field" name="password"/></p>
<div id="login_control">
<input type="submit" id="btn_login" value="登录" οnclick="login();"/>
<a id="forget" href="forget.html"><i>忘记密码?</i></a>
</div>
<div id="login_chosen">
<input type="radio" name="shenfen" value="bumen"/>部门
<input type="radio" name="shenfen" value="teacher"/>教师
<input type="radio" name="shenfen" value="student"/>学生
</div>
</form>
</div>
</body>
</html>
(2)index.jsp(登陆后的首页)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="sms.bean.*" %>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>这是选课系统的主界面</title>
<style type="text/css">
@import "css/index.css"
</style>
</head>
<body>
<%
Student s = (Student)request.getSession().getAttribute("student");
Teacher t = (Teacher)request.getSession().getAttribute("teacher");
if(s == null && t == null){
response.sendRedirect("notlogin.jsp");
}
%>
<div class="main">
<div class="navigation">
<span>欢迎回来!
<%
if(s != null){
out.print(s.getName());
}
else if(t != null){
out.print(t.getName());
}
%>
</span>
<a class="exit" href="/StudentMS/LogoutServlet"><span>退出登录</span></a>
</div>
<div class="button_menu">
<ul>
<li>
<button onclick="window.location.href='main.html'"><a href="main.html">公告</a></button>
</li>
<li><button onclick="window.location.href='pick.html'"><a href="pick.html">选课</a></button></li>
<li><button onclick="window.location.href='schedule.html'"><a href="schedule.html">课表查询</a></button></li>
<li><button onclick="window.location.href='grade.html'"><a href="grade.html">成绩查询</a></button></li>
<div class="clear"></div>
</ul>
<div class="clear"></div>
</div>
<div class="message_board">
<h1 class="message_title">公告</h1>
<article class="message_content">内容</article>
<div class="content_1">
<p>
网络视频课程(课程号080005开头的任选课)必须通过选课系统选定该类课程,一般在每学期的第二周开放在线学习平台,期末考试前一周安排网上测试。
选定该类课程的同学通过登录教务处网站或信息技术管理处网站点击“网络视频课程在线学习平台”链接进入,学习登录时,用户名为学号,初始登录密码为‘123456’,初次登录后修改学习密码。
</p>
<p>
请认真核实自己的课程表,不要漏选应修的课程,课程表中未有的课程将不予登记成绩;不要多选不修的课程,否则将影响毕业学分审核及平均学分绩点计算。
</p>
<p>
选课中遇到问题请查看选课公告中相关文件或咨询本学院教务员老师。
</p>
<p>
忘记密码请联系本学院教务员老师查询。
</p>
</div>
<div class="preview"><a href="#">上一篇</a></div>
<div class="next"><a href="#">下一篇</a></div>
</div>
<div class="clear"></div>
</div>
</body>
</html>
(3)nologin.jsp(如果有人想要不登陆直接访问index.jsp, index.jsp页面会通过检查session中是否有用户的身份信息来判断用户是否已经登陆,若没登陆则跳转到nologin.jsp页面,然后由该页面跳转到login.html)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>未登录,请先登陆</title>
</head>
<body>
<div>
未登录,请先登陆
</div>
<%
response.setHeader("Refresh", "2;url=login.html");
%>
</body>
</html>
java文件代码(servlet和javabean文件)
这部分主要有四个包,其中
bean包下封装的是javabean文件,主要是用户的类
conn包下封装的是返回connection类的文件
dao包下封装的是所有sql查询的方法
servlet包下封装的是所有servlet类
(4)LoginServlet.java
package sms.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
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 javax.servlet.http.HttpSession;
import sms.conn.Conn;
import sms.dao.StudentSql;
import sms.bean.Student;
import sms.bean.Teacher;
import sms.dao.TeacherSql;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String unumber = request.getParameter("usernumber");
String pwd = request.getParameter("password");
String shenfen = request.getParameter("shenfen");
//out.println(unumber);
//out.println(pwd);
//out.println(shenfen);
//out.print(shenfen);
if("student".equals(shenfen)) {
StudentSql studentSql = new StudentSql();
boolean b = studentSql.isStudent(unumber, pwd);
//out.print(b);
if(b) {
String uname = studentSql.getSName(unumber);
Student s = new Student(uname, unumber);
HttpSession session = request.getSession();
session.setAttribute("student", s);
//out.println("正确");
response.sendRedirect("index.jsp");
}else {
out.println("账号或密码错误");
response.setHeader("refresh", "2;URL=login.html");
}
}
else if("teacher".equals(shenfen)) {
TeacherSql teacherSql = new TeacherSql();
boolean b = teacherSql.isTeacher(unumber, pwd);
//out.print(b);
if(b) {
String uname = teacherSql.getTName(unumber);
Teacher t = new Teacher(uname, unumber);
HttpSession session = request.getSession();
session.setAttribute("teacher", t);
//out.println("正确");
response.sendRedirect("index.jsp");
}else {
out.println("账号或密码错误");
response.setHeader("refresh", "2;URL=login.html");
}
}else {
out.println("错误");
response.setHeader("refresh", "2;URL=login.html");
}
}
/**
* @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);
}
}
(5)LoginoutServlet.java
package sms.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;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LogoutServlet
*/
@WebServlet("/LogoutServlet")
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LogoutServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession session = request.getSession();
session.removeAttribute("student");
session.removeAttribute("teacher");
response.sendRedirect("login.html");
}
/**
* @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);
}
}
目前的代码已经上传到了GitHub仓库中,之后会随着大作业的进度不断更新,如果感觉不错就帮忙点个star.