日期: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上.