一、相关知识介绍:

(一)JDBC技术:

JDBC是Java Database Connectivity(Java数据库连接)的缩写,编程人员可以通过这个API接口连接到数据库,并使用结构化查询语言(SQL)完成对数据库的查找和更新

JDBC的目标是屏蔽不同的数据库驱动程序之间的差别,为开发者提供一个标准的、纯Java的数据库程序设计接口,为在Java中访问不同类型的数据库提供技术支持

在Java程序中,通过JDBC访问数据库的步骤如下:

①装载并注册数据库的JDBC驱动程序; ②建立与数据库的连接; ③创建Statement对象; ④调用SQL语句访问数据库; ⑤处理ResultSet中的记录集; ⑥关闭ResultSet、Statement和Connection对象。

(二)MVC模式

1.MVC组成

MVC是 Model-View-Controller 的缩写,即模型-视图-控制器,是一种目前广泛流行的软件设计模式,MVC把一个应用的输入、处理、输出流程按照模型、视图、控制器的方式进行分离,从而将一个应用程序分成三个核心模块:模型、视图和控制器,它们各自完成不同的任务

总的来说,模型是应用对象,视图时他在屏幕上的表示,控制器定义用户界面对用户输入的响应方式

2.MVC模式两种开发模型:

模型一:JSP+JavaBeans的结合

模型二:JSP+JavaBeans+Servlet的结合

二、该项目总体功能概述:

本系统利用Java Web技术实现了学生信息管理系统,具有简单的学生信息管理功能。实现了一下功能模块:院系信息管理模块,学生信息管理模块,课程信息管理模块,成绩管理模块等。

 

所用到的技术栈

mvc开发模式 jsp+Servlet HTML5+CSS3+JavaScript等

三、系统运行过程:

四、详细设计与代码实现

(一)建立数据库与相关表

1.创建数据库:

StudentInfoManagement

2.创建相关表:

class表:

字段中文描述数据类型Clno班级编号char(20)Clname班级名称char(20)Dno所属院系char(20)

Course表:

字段中文描述数据类型Cno课程号char(20)Cname课程名称char(20)Cteacher老师char(20)Ccredit学分smallint

Department表:

字段中文描述数据类型Dno所属院系char(20)Dname系名char(20)

SC表:

字段中文描述数据类型Sno学号char(20)Cno课程号char(20)Grade成绩smallint

Student表:

字段中文描述数据类型Sno学号char(20)Sname姓名char(20)Ssex性别char(20)Sage年龄smallintClno班级编号char(20)

User表:

字段中文描述数据类型username用户名char(20)password密码char(20)level权限级别char(20)

(二)设计系统所需要的JavaBean

DBUtils.java类:

该JavaBean将数据库连接操作和关闭操作封装起来,在以后的数据库操作中可以直接调用这个JavaBean的方法,该JavaBean应该包含的方法有:

1.数据库的连接,获得一个连接对象的方法:Connection getConnection()

2.当数据库操作完成后,关闭连接并释放资源的方法:closeConnection(Connection conn)

实现代码:

`package utils;

import java.sql.DriverManager; import java.sql.SQLException;

import com.mysql.jdbc.Connection;

public class DBUtils {

/**

* 获取数据库连接

* @return Connection对象

*/

public static Connection getConnection(){

String dbUserName = "root";

String dbUserPasswd = "123456";

String dbURL = "jdbc:mysql://localhost:3306/studentinfomanagement?"

          + "user="+dbUserName+"&password="+dbUserPasswd+"&useUnicode=true&characterEncoding=UTF8";

Connection conn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

conn = (Connection) DriverManager.getConnection(dbURL,dbUserName,dbUserPasswd);

} catch (ClassNotFoundException | SQLException e) {

e.printStackTrace();

}

return conn;

}

/**

        * 关闭数据库连接

* @param conn Connection对象

*/

public static void closeConnection(Connection conn) {

//判断conn是否为空

if(conn != null){

try {

conn.close();//关闭数据库连接

} catch (SQLException e) {

// TODO: handle exception

e.printStackTrace();

}

}

}

}`

(三)设计所需要的Servlet

再所创建的servlet中,可以在web.xml下进行相关配置,也可使用注解的方式声明servlet,本项目在web.xml下配置相关信息。

1.loginServlet

package service;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import dao.UserDao;

import model.User;

public class LoginServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

String password = request.getParameter("password");

String level = null;

//实例化UserDao对象

UserDao userDao = new UserDao();

User user = userDao.login(username, password);

//判断是否登录成功

if(user != null){//成功

level = user.getLevel();

if(level.equals("用户")){

request.getSession().setAttribute("user", user);//将用户对象放到session中

//转发到user.jsp中

request.getRequestDispatcher("user.jsp").forward(request, response);

}

else{

request.getSession().setAttribute("admin", user);//将管理员对象放到session中

//转发到admin.jsp中

request.getRequestDispatcher("admin.jsp").forward(request, response);

}

}else {//失败

request.setAttribute("info"," 错误:用户名或密码错误!");

request.getRequestDispatcher("message.jsp").forward(request, response);

}

}

}

2.RegisterServlet

package service;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import dao.UserDao;

import model.User;

public class RegisterServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8");

String username = request.getParameter("username");

String password = request.getParameter("password");

String level = request.getParameter("level");

//实例化UserDao对象

UserDao userDao = new UserDao();

User user = userDao.register(username, password,level);

//判断是否注册成功

if(user != null){//成功

if (level.equals("用户")) {

request.getSession().setAttribute("user", user);//将用户对象放到session中

//转发到user.jsp中

request.getRequestDispatcher("user.jsp").forward(request, response);

}else{

request.getSession().setAttribute("admin", user);//将管理员对象放到session中

//转发到user.jsp中

request.getRequestDispatcher("admin.jsp").forward(request, response);

}

}else {//失败

request.setAttribute("info"," 错误:已存在该用户,不能重复注册!");

request.getRequestDispatcher("message.jsp").forward(request, response);

}

}

}

3.UserExitServlet

package service;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class UserExitServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取Session

HttpSession session = request.getSession();

session.invalidate();

//转发到login.html页面

response.sendRedirect("login.html");

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

}

(四)设计系统所需要的JSP页面

1.admin.jsp

<%@page import="model.User"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

管理员操作界面

<%

//获取登录成功的用户信息

User user = (User) session.getAttribute("admin");

//判断用户是否登录

if(user != null){

%>

管理员操作界面

<%

}else{

response.sendRedirect("login.html");

}

%>