SSM入门小项目----学生信息管理系统

SSM入门小项目----学生信息管理系统

学习了SSM后,自己想动手写个小项目,巩固一下。选择了比较简单的学生信息管理系统,项目比较简单,包括的功能有:登录、学生信息的增删改查、分页(前端实现)

本项目前后端分离,由于本人较菜,所以前端是直接拿别人写好的来修改使用的(已征得原作者同意),前端原文链接:https://blog.csdn.net/qq_43198568/article/details/104432485

完整代码在GitHub上:https://github.com/Fjz-Kuroko/StudentManagePro


效果图

登录页面

在这里插入图片描述

登录后进入的页面(主页)

在这里插入图片描述

新增

在这里插入图片描述

更新

在这里插入图片描述
前端效果可以去前端原文看,基本差不多,这里不过多展示。

下面开始进入正文

搭建项目

IDE:IDEA,运行环境:Tomcat 8.5 + Windows10
本项目使用Maven + Spring + SpringMvc + MyBatis开发,如果有同学不懂怎么使用Maven搭建SSM框架的话,可以参考我上一篇博客:https://blog.csdn.net/weixin_44215175/article/details/108642595

目录结构

其中以Test开头的是为了测试使用,可以不用理会
在这里插入图片描述

具体代码

登录

  • 新建一个数据表Login,我的比较简单,只包含三个属性:username、email、password
  • 在entity包中新建Login实体类
package pers.kuroko.entity;

public class Login {

    private String username;
    private String email;
    private String password;

    public Login() {
    }

    public Login(String username, String email, String password) {
        this.username = username;
        this.email = email;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

  • 在mapper(dao)包中新建LoginMapper.java接口以及loginMapper.xml的配置文件

LoginMapper.java

public interface LoginMapper {
    public int doLogin(Login login);
}

loginMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:该mapper.xml映射文件的唯一标识 -->
<mapper namespace="pers.kuroko.mapper.LoginMapper">
    <select id="doLogin" parameterType="Login" resultType="int">
        select count(*) from login where username = #{username} and password = #{password}
    </select>
</mapper>
  • 在service包中新建LoginService.java接口,并且新建LoginServiceImpl.java实现类
public interface LoginService {
    int doLogin(Login login);
}
public class LoginServiceImpl implements LoginService {
    LoginMapper loginMapper;
    public void setLoginMapper(LoginMapper loginMapper) {
        this.loginMapper = loginMapper;
    }
    @Override
    public int doLogin(Login login) {
        return loginMapper.doLogin(login);
    }
}
  • 在controller包中新建LoginController类
//指定在浏览器的路径
@RequestMapping("loginController")
@Controller//注解,表明是Controller
public class LoginController {
    @Autowired
    @Qualifier("loginService")
    LoginService loginService;

    @RequestMapping(value = "homePage")
    public String homePage(Login login, Map<String, Object> map) {
        int i = loginService.doLogin(login);
        if (i > 0) {
            map.put("login", login);
            return "redirect:/studentController/getAllStudent";
        } else {
            return "error";
        }
    }
    @RequestMapping("login")
    public String login() {
        return "login";
    }
}
  • login.jsp
<body class="bgimg">
<div >
    <div class="login-box">
        <form action="loginController/homePage" method="post" name="f">
            <h2>学生管理系统-登录</h2>
            <div class="login-field">
                <img src="<%= basePath%>img/user.png"  />
                <input type="text" placeholder="请输入用户名" name="username" id="username" />
            </div>
            <div class="login-field">
                <img src="<%= basePath%>img/password.png" />
                <input type="password" placeholder="请输入密码" name="password" id="password"  />
            </div>
            <div class="login-sub">
                <button type="submit">登录</button>
            </div>
        </form>
    </div>
</div>
</body>

增加

  • 在entity包中新增Student实体类
package pers.kuroko.entity;

public class Student {

    private int id;
    private String name;
    private String sex;
    private int age;
    private String insitute;
    private String majo;
    private int grade;
    private int clazz;

    public Student() {
    }

    //此处省略有参构造和setter、getter
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", insitute='" + insitute + '\'' +
                ", majo='" + majo + '\'' +
                ", grade=" + grade +
                ", clazz=" + clazz +
                '}';
    }
}
  • 在StuMapper接口中增加一个方法 int addStudent(Student student);
  • 在stuMapper.xml中新增SQL语句
    <insert id="addStudent" parameterType="Student"> insert into student(id,name,sex,age,insitute,majo,grade,clazz) values (#{id}, #{name}, #{sex}, #{age}, #{insitute}, #{majo}, #{grade}, ${clazz}) </insert>
  • 在service包中的StudentService接口和StudentServiceImpl实现类中都增加相应方法
int addStudent(Student student);
@Override
    public int addStudent(Student student) {
        return stuMapper.addStudent(student);
    }
  • 最后在StudentController中调用service中的方法,进行最后的逻辑处理即可
@ResponseBody
    @RequestMapping(value = "addStudent")
    public String addStudent(Student student) {
        //判断该学号的学生是否已经存在
        Student studentById = studentService.queryStudentById(student.getId());
        if (studentById != null) {
            return "isExist";
        }
        //加入数据库,看返回值决定是否成功
        int i = studentService.addStudent(student);
        if (i > 0) {
            return "success";
        } else {
            return "error";
        }
    }
  • 前端调用,使用ajax
//data是前端定义的类,包含所有从前端获取的信息,完整url应该是http://localhost:8081/StudentManagePro/studentController/addStudent
$.ajax({
        type : 'post',
        url : url,
        data : data,
        success : function (data) {
            if (data === "error") {
                alert("添加失败");
            } else if (data === "success") {
                sumbit();
                alert("添加成功");
            } else if (data === "isExist") {
                alert("学号重复,添加失败");
            }
        },
        error : function (data) {
            alert("异常情况!")
        }
    })

删除、修改、查询

本质上删除、修改、查询和增加的逻辑是一样的,这里就不一 一展开了,具体代码可以到GitHub去看,本项目GitHub链接

  • 在StuMapper.java中添加对应方法、在stuMapper.xml添加对应的SQL语句
  • 在StudentService和StudentServiceImpl中新增对应方法,调用StuMapper
  • 在StudentController中新增对应方法,调用StudentService

缺点、不足

  • 功能较少
  • 分页功能使用的是前端实现

优点

  • 逻辑简单,适合新手入门
  • 代码层次明了

写在后面

此项目比较适合新手学习SSM的时候用来巩固一些基本操作,代码并不难懂,逻辑比较简单,如果有什么建议或者不懂的地方,可以通过评论 or 邮箱联系我(2497965937@qq.com)

希望大家共同进步。

  • 18
    点赞
  • 255
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
SSM框架学习宝典:入门、进阶、精通,全方位代码项目资 一、探索SSM的无限可能 SSM(Spring + Spring MVC + MyBatis框架作为Java开发中的黄金组合,为开发者提供了强大的技术支持和丰富的功能。本系列资料将带您从零基础开始,逐步掌握SSM的核心技术和最佳实践,助您在Java Web开发领域更上一层楼。 二、资料亮点 基础教程与练习项目:从基础知识讲起,结合实际练习项目,让您轻松上手SSM开发。 进阶技术与案例分析:针对进阶开发者,提供深入的技术探讨和案例分析,助您深入理解SSM的高级特性。 实战项目与经验分享:通过实际项目实战,让您在实践中掌握SSM的运用,同时分享经验与心得,让您少走弯路。 三、适用人群与场景 无论您是初学者还是资深开发者,无论您是在校学生还是职场人士,本系列资料都将是您学习SSM的得力助手。适用于Java Web开发、企业级应用开发、个人项目实践等多个领域。 四、使用建议 系统学习:按照资料提供的顺序进行系统学习,确保知识体系的完整性。 实践为王:在学习过程中注重实践操作,通过实际项目加深理解。 持续反馈与调整:根据学习进度和反馈,适时调整学习策略,提高学习效果。 五、安全与责任 在使用SSM框架进行开发时,请确保遵循最佳实践和安全准则,以保障系统的稳定性和安全性。在使用提供的资料时,请遵守版权法规,尊重原作者的权益。让我们共同为推动SSM技术的发展而努力!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值