JAVA+Servlet+JavaBean+MySsql+Maven 学生学籍信息管理系统

基于Maven的WEB学生信息管理系统

  • 前言
  • 环境
  • 环境说明
  • 设计数据库数据
  • 登录页面 login.jsp
  • LoginServlet 控制登录
  • 主页 index.jsp
  • 进行第一次查询全部用户信息
  • 增加用户
    • 跳转进入增加用户界面
    • 保存增加用户信息
  • 修改用户信息
  • 删除用户信息
  • 通过用户名关键字查询用户信息
  • 总结
  • 项目源码

前言

为新学习 JSP 的开发爱好者小白写下这篇文章,教你若何创建一个自己的学生信息管理系统,可能有很多小白也在迷茫中,建议你不要灰心啊,在下面我讲给你叙述如何进行完成一套自己的系统,并且提供两套版本,一套为 IntelliJ IDEA 进行开发的版本,一套为 eclipse 开发的系统版本,接下来我以 Idea 开发为基础,整套开发方式完全基于 MVC 架构思想为新入门的小白们进行一步一步的讲解这一块的知识。以下所有信息都是个人完成,若有转载或者借鉴请注明出处。

环境

属性 工具 版本要求
系统要求 Windows 10 内存 8G 硬盘500G
JDK jdk1.8版本 1.8
开发工具 IntelliJ IDEA 2018.2.4 x64
数据库类型 MySQL 5.7.22
开发方式 Maven 3.6

环境说明

本项目基于 Maven进行开发,使用Maven进行管理 jar 包,所有大家若是不了解 Maven 开发的小白需要自行学习若何使用 Maven 进行开发项目。

设计数据库数据

数据库名字:assess
数据库连接默认数据库名:root
数据库连接默认密码:root
数据库中默认拥有用户名:admin
数据库中默认拥有密码:admin

序号 字段 描述 类型和长度 其他 默认值
1 id 唯一编号 int(100) 主关键字、自增列
2 username 用户名 varchar(50) 非空
3 password 密码 varchar(50) 非空
4 snum 学号 int(50) 非空
5 sex 性别(男女分别:0是男,1是女;) tinyint(50) 非空 1
6 major 专业 varchar(100) 非空
7 age 年龄 int(50) 非空

登录页面 login.jsp

login.jsp 页面主要是为了进行登录,在这个表单页面主要有一个

标签,中间使用了两个 标签进行输入用户名与密码,以 post 方式进行提交到后台。 action 属性里面是提交的路径。

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


    Title
    


${msg_error == null ? "" : msg_error}


LoginServlet 控制登录

设置 loginServlet 中的提交路径为 /login 提交方式为 POST 方式进行提交
整个项目第一个页面是使用 loginServlet 进行默认跳转到 login.jsp 页面,在注解@WebServlet(name = "login", value = {"", "/login"}) 中有所体现。
login.jsp 页面使用的是 POST 方式的提交,所以,在 doPost 方法中进行获取前台提交的数据信息。获取方式为

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

紧接着就是进行判断,当前获取到的用户名是否为空,若是为空的话,默认跳转到登录页面。
若获取到的用户名不为空,则进行数据库连接,进行查找数据库中是否有这个用户,若是有这个用户,则把这个用户的信息都取出来赋给新建的 userBean 对象,拿到获取的不为空的对象,进行密码的比对,通过比对以后通过后,进行重定向到 index.jsp 主页面且进行第一次全部信息的查询。若是在数据库中没有查到这个用户,通过 reqest 重建新属性,返回到登录页面前面使用 el 表达式进行获取返回到前台的数值,且给出一个提示(该账号不存在!),若是有此用户,且用户密码比对不成功的话,给出提示(密码错误,请重新输入!)
JAVA+Servlet+JavaBean+MySsql+Maven 学生学籍信息管理系统_第1张图片

package com.demo.web.controller;

import com.demo.bean.UserBean;
import com.demo.dao.JdbcUtils;

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.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

@WebServlet(name = "login", value = {"", "/login"})
public class LoginController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/login.jsp").forward(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        UserBean userBean = new UserBean();

        if (!"".equals(username)) {
            //获取数据库连接
            Connection connection = JdbcUtils.getConnection();
            String sql = "select * from studentinfo where username=\"" + username + "\"";

            //获取当前用户信息
            try {
                PreparedStatement preparedStatement = connection.prepareStatement(sql);
                ResultSet resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    userBean.setId(resultSet.getInt("id"));
                    userBean.setUsername(resultSet.getString("username"));
                    userBean.setPassword(resultSet.getString("password"));
                    userBean.setSnum(resultSet.getInt("snum"));
                    userBean.setSex(resultSet.getBoolean("sex"));
                    userBean.setMajor(resultSet.getString("major"));
                    userBean.setAge(resultSet.getInt("age"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally {
                try {
                    if (connection.isClosed()){
                        connection.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (!"".equals(password) && userBean.getPassword().equals(password)) {
                //登录成功重定向到主页
                response.sendRedirect("/user?parm=selectAllUser");
            } else {
                request.setAttribute("msg_error", "密码错误,请重新输入!");
                //登录失败跳转到登录页面
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }

        } else {
        	//账号不存在,跳转到登录页面
            request.setAttribute("msg_error", "该账号不存在!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }

    }
}

登录成功后直接跳转入主页面,并且进行第一次查询全部信息。
请求的是一个路径,且为后面介绍的 UserServlet 进行控制所有的请求路径信息。

	//登录成功重定向到主页
    response.sendRedirect("/user?parm=selectAllUser");

主页 index.jsp

通过后台查询全部的用户泛型列表数组返回到前端以后,需要对数据进行处理,在主页使用了前面提到的 el 表达式进行获取了数组,且引用了 jstl 标签中的 标签方法进行遍历数据。大家若是不懂这个标签,可以自行去百度中问度娘,在这里不进行啰嗦了。
JAVA+Servlet+JavaBean+MySsql+Maven 学生学籍信息管理系统_第2张图片

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    <%----%>
    主页
    


${msg == null ? "" : ""}
学籍信息管理系统
id 用户名 学号 性别 专业 年龄 操作
${status.index+1} ${user.getUsername()} ${user.getSnum()} ${user.getSex()==false ? "男" : "女"} ${user.getMajor()} ${user.getAge()} 修改 删除

进行第一次查询全部用户信息

查询全部用户信息,并且返回一个列表数组到前台页面。
在这里进行声明一下,每个请求路径都含有一个参数 parm 参数,参数的作用是为了进行导航这次的功能是为了做什么的,里面包含了请求做什么。举个例子:请求所有的信息查询为 /user?parm=selectAllUser ,接下来大家可以看下面的代码,方法中进行获取请求的参数 parm 中的内容,然后在下面进行每次的对比,若是 parm 等于前面这个方法即执行此方法中的方法。
下面这个查询全部信息以后,得到了以用户泛型列表数组,且返回到前台页面。

 request.setCharacterEncoding("utf-8");
        String parm = request.getParameter("parm");
        //查询全部用户
        if ("selectAllUser".equals(parm)){
            List<UserBean> userBeanList = userService.selectAllUser(request, response);
            request.setAttribute("users", userBeanList);
            request.getRequestDispatcher("/index.jsp").forward(request, response);
        }

增加用户

增加用户信息这一块使用了多个 input 标签进行输入值,也是同登录页一样,使用 POST 方法进行提交到后台,后台对齐进行数据的处理。

JAVA+Servlet+JavaBean+MySsql+Maven 学生学籍信息管理系统_第3张图片

跳转进入增加用户界面

 //跳转增加用户界面
        else if ("toAddUser".equals(parm)){
            request.getRequestDispatcher("/add.jsp").forward(request, response);
        }

保存增加用户信息

 request.setCharacterEncoding("utf-8");
        String parm = request.getParameter("parm");
        //增加用户
        if ("addUser".equals(parm)){
            Boolean isSuccess = userService.addUser(request, response);
            if (isSuccess) {
                List<UserBean> userBeanList = userService.selectAllUser(request, response);
                request.setAttribute("msg", "增加用户成功");
                request.setAttribute("users", userBeanList);
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }else {
                List<UserBean> userBeanList = userService.selectAllUser(request, response);
                request.setAttribute("msg", "添加失败,有效信息不能为空");
                request.setAttribute("users", userBeanList);
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }
        }

修改用户信息

修改用户信息需要新对这个需要修改的用户进行一次的查询。并且获取该用户的所有信息返回到需要修改的用户框上面,这样的话,我们以用户唯一字段 id 进行查询,前台前端使用的方法为按钮方式进行提交到后台单独处理这条数据,且路径都是 /user?parm=toUpdateUser&uid=${user.getId()} ,这样对于每条数据都是单独的 id 请求路径,然后后台通过获取这个路径的 uid 即可得知操作的是哪一条数据
JAVA+Servlet+JavaBean+MySsql+Maven 学生学籍信息管理系统_第4张图片

//跳转修改页面
        else if("toUpdateUser".equals(parm)){
            UserBean userBean = userService.selectUserById(request,response);
            request.setAttribute("user", userBean);
            request.getRequestDispatcher("/modify.jsp").forward(request, response);
        }

然后进行获取当前页面的所有信息,进行存入数据库

 //修改用户信息
        else if("updateUser".equals(parm)){
            Boolean isSuccess = userService.updateUser(request, response);
            if (isSuccess) {
                List<UserBean> userBeanList = userService.selectAllUser(request, response);
                request.setAttribute("msg", "更新用户成功");
                request.setAttribute("users", userBeanList);
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }else {
                List<UserBean> userBeanList = userService.selectAllUser(request, response);
                request.setAttribute("msg", "更新失败,有效信息不能为空");
                request.setAttribute("users", userBeanList);
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }
        }

删除用户信息

同样删除用户信息也是使用唯一字段 id 进行操作的删除,同修改用户信息同理 /user?parm=deleteUser&uid=${user.getId()} 使用的单独的使用路径,操作每个用户的信息。

 //删除用户信息
        else if ("deleteUser".equals(parm)){

            Boolean isSuccess = userService.deleteUser(request, response);
            if (isSuccess) {
                List<UserBean> userBeanList = userService.selectAllUser(request, response);
                request.setAttribute("msg", "删除用户成功");
                request.setAttribute("users", userBeanList);
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }
        }

通过用户名关键字查询用户信息

JAVA+Servlet+JavaBean+MySsql+Maven 学生学籍信息管理系统_第5张图片

 //通过用户名关键词查询
        else if ("selectUserByName".equals(parm)){
            List<UserBean> userBeanList = userService.selectUserByName(request,response);
            request.setAttribute("users", userBeanList);
            request.getRequestDispatcher("/index.jsp").forward(request, response);
        }

总结

总体来讲的话,整个项目严格按照 MVC 架构与思想进行设计开发,首先用户访问你的这个站点,需要进行登录,登录以后进入主页,主页的数据为实时的数据库中的数据信息,进行显示到主页面,使用了 JSP 中的标签进行排列读取数据信息,引入了 BootStrap 布局,让小白们接触一下布局风格,然后就是在每次的请求路径中都包含一个参数 parm 在此项目中,该参起到了至关重要的作用,主要作用就是进行导航每次的请求是为了做什么,这里面的 Servlet 起到了 Controller 的作用,进行路径请求的转发。其中的操作逻辑都交给 Service 来做业务逻辑操作。最后有什么问题可以在下面进行评论。哈哈

项目源码

Eclipse 开发版本下载 《JSP+Serlvet+JavaBean+Maven+MySql 学生 | 学籍 | 信息管理系统实战 Eclipse版本》
IDEA 开发版本下载 《JSP+Serlvet+JavaBean+Maven+MySql 学生 | 学籍 | 信息管理系统实战 Idea版本》

为了大家更好的学习交流,这里我为大家创建了一个学习的交流群,有什么问题可以在里面联系我

你可能感兴趣的:(JAVA,web)