SpringBoot+Mybatis整合jsp项目之EMS

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: SpringBoot+Mybatis整合jsp项目之EMS

1、项目开发流程

需求分析: 分析用户主要需求 提取出项目核心功能 根据核心功能构建页面原型


库表设计(概要设计): 1.分析整个系统有哪些表 2.分析出表之间关联关系 3.确定字段


详细设计(流程图,伪代码): 用来验证库表准确性


功能实现(编码): 环境搭建 具体功能实现


功能测试 功能测试


部署


上线 运维


维护


2.需求分析

   系统中含有哪些模块?每个模块功能有哪些?


a.用户模块
  登录,注册, 验证码生成
b.员工模块
  查询,删除,更新,添加

3.库表设计

   系统需要2张表: 用户表 user 员工表: employee


   表与表之间关系: user employee 独立两张表


   确定字段:


       user: id 、username、password、name、sex


       employee: id 、 name、salary、gender


   数据库: ems-jsp


4.效果展示

   - 登录页面


image.png


   - 注册页面


image.png


员工展示页面

image.png


添加学生


image.png

修改员工信息并进行数据回显


image.png

5.编码环节

   - 技术选型: springboot + mybatis + jsp + mysql


   - 环境搭建: springboot + jsp + mybatis


   - 项目名字: springBoot-EMS


   - 项目结构


image.png


   - 项目所需依赖:(直接导入就可)


<!--集成springboot的父项目-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.5.RELEASE</version>
  </parent>
  <dependencies>
    <!--引入springboot的web依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--引入mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>
    <!--引入jsp解析相关依赖-->
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <!--引入mybatis以及整合相关依赖-->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.2</version>
    </dependency>
    <!--druid-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>
    <!--JSTL表达式-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!--引入junit测试相关依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!--引入aop相关依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
  </dependencies>

项目的核心配置:application.properties

#内置服务器端口设置
server.port=8080
#项目名设置
server.servlet.context-path=/ems
#配置jsp页面的前后缀
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
#数据源相关配置 driverClassName url username password
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/ems?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
#设置mybatis的mapper文件所在路径 别名
mybatis.mapper-locations=classpath:com/tjcu/mapper/*Mapper.xml
mybatis.type-aliases-package=com.tjcu.entity
#开启jsp页面的热部署
server.servlet.jsp.init-parameters.development=true

SpringBoot入口


/**
 * @author 王恒杰
 * @date 2021/11/25 19:15
 * @Description:
 */
@SpringBootApplication
@MapperScan("com.tjcu.dao")
public class EmsApplication {
    public static void main(String[] args) {
        SpringApplication.run(EmsApplication.class,args);
    }
}

6.用户模块功能实现

   (注:只包含Controller层代码,其余代码去我gitee下载)


   #### (1)验证码生成功能实现:


       1.生成随机字符


       2.放入session


       3.生成图片并响应


    /**
     * 用来生成验证码方法
     */
    @RequestMapping("generateImageCode")
    public void generateImageCode(HttpSession session, HttpServletResponse response) throws IOException {
        //1.生成随机字符串
        String code = VerifyCodeUtils.generateVerifyCode(4);
        //2.保存随机字符串到Session中
        session.setAttribute("code",code);
        //3.将随机字符串生成图片
        //4.通过response响应图片
        response.setContentType("image/png");//指定响应类型
        ServletOutputStream os = response.getOutputStream();
        VerifyCodeUtils.outputImage(80,30,os,code);
    }

   #### (2)用户注册功能实现:


       1.根据用户输入验证码比较session中验证码是否一致


       2.如果一致完成注册,如果不一致直接返回错误


       3.完成注册向数据库中保存当前的用户信息


           a.保存信息之前判断当前用户名是否存在 如果存在直接返回错误


           b.如果当前用户名不存在保存用户信息 保存用户信息给密码进行加密处理


/**
     *  注册
     * @param admin
     */
    @RequestMapping("register")
    public String register(Admin admin){
        String password = MD5Utils.md5(admin.getPassword());
        admin.setPassword(password);
        adminService.register(admin);
        return "redirect:/login.jsp";
    }

   #### (3)用户登录功能实现:


       1.根据用户输入用户名去数据库中查询是否存在改用户名


       2.如果存在,判断密码是否一致 如果不存在,用户名输入错误


       3.判断密码根据数据库加密密码与对接收密码进行md5加密之后比较


           md5: 只要内容相同 多次计算md5 结果一定是一致


       4.保存用户登录标记到Session中


  /**
     * 登录
     * @param admin
     * @return
     */
    @RequestMapping("login")
    public String login(Admin admin,String code, HttpServletRequest request){
        //1.比较验证是否一致
        String sessionCode = request.getSession().getAttribute("code").toString();
        System.out.println(sessionCode);
        System.out.println(code);
        if(code.equals(sessionCode)){
            String password = MD5Utils.md5(admin.getPassword());
            admin.setPassword(password);
            Admin admin1 = adminService.login(admin);
            System.out.println(admin1);
            if(admin1!=null){
                request.getSession().setAttribute("admin",admin1);
                return "redirect:/emp/show";
            }else
            {
                return "redirect:/login.jsp";
            }
        }else {
            return "redirect:/login.jsp";
        }
    }

7.员工模块功能实现

   (注:只包含Controller层代码,其余代码去我gitee下载)


   #### (1)员工列表:


       1.在数据库中查询所有员工信息


       2.在页面中进行展示


  /**
     * 展示员工
     * @return
     */
    @RequestMapping("show")
    public String showEmp(Model model){
        //调用业务方法
        List<Emp> emps = empService.showEmp();
        //作用域
        model.addAttribute("emps",emps);
        return "emplist";
    }

   #### (2)添加员工:


       1.在员工controller中开发一个添加方法


       2.接收员工信息


       3.将员工信息保存到数据库


       4.跳转到员工列表展示数据


    /**
     * 添加员工
     *
     * @param emp
     */
    @RequestMapping("insert")
    public String insert(Emp emp){
        empService.insert(emp);
        return "redirect:/emp/show";
    }

   #### (3)更新员工:


       上半步 数据回显:


           1.点击更新链接传递当前更新员工id到controller


           2.在controller中根据id查询员工信息


           3.将查询到的员工信息保存到作用域


           4.跳转到更新页面展示修改员工信息


 

    /**
     * 数据回显
     * @param id
     * @return
     */
    @RequestMapping("select")
    public String selectEmpById(Integer id,Model model){
        Emp emp = empService.selectEmpById(id);
        model.addAttribute("emp",emp);
        return "updateEmp";
    }

       下半步:


           1.获取更新之后员工信息


           2.更新数据库



    /**
     * 修改员工
     * @param emp
     */
    @RequestMapping("update")
    public String  updateEmp(Emp emp){
        empService.updateEmp(emp);
        return "redirect:/emp/show";
    }

   #### (3)删除员工信息:


       1.点击删除根据id去数据库中删除指定员工信息


       2.删除成功之后跳转到列表页面


/**
     * 删除员工
     * @param emp
     */
    @RequestMapping("delete")
    public String  deleteById(Emp emp){
        empService.deleteById(emp.getId());
  return "redirect:/emp/show";
    }

8.项目源码

原创不易,如果觉得不错请给我一个三连、点赞、收藏、加关注!!!

需要源码资料的同学可以去我gitee的下载源码

gitee地址:https://gitee.com/wanghengjie563135/spring-boot_-ems.git下载相关源码


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
Java 容器
如何在SpringBoot项目中使用过滤器和拦截器
过滤器和拦截器是日常开发中常用技术,用于对特定请求进行增强处理,如插入自定义代码以实现特定功能。过滤器在请求到达 `servlet` 前执行,而拦截器在请求到达 `servlet` 后执行。`SpringBoot` 中的拦截器依赖于 `SpringBoot` 容器,过滤器则由 `servlet` 提供。通过实现 `Filter` 接口并重写 `doFilter()` 方法可实现过滤器;通过实现 `HandlerInterceptor` 接口并重写相应方法可实现拦截器。两者的主要区别在于执行时机的不同,需根据具体场景选择使用。
如何在SpringBoot项目中使用过滤器和拦截器
|
3天前
|
Java 关系型数据库 MySQL
创建一个SpringBoot项目,实现简单的CRUD功能和分页查询
【9月更文挑战第6天】该内容介绍如何使用 Spring Boot 实现具备 CRUD 功能及分页查询的项目。首先通过 Spring Initializr 创建项目并选择所需依赖;其次配置数据库连接,并创建实体类与数据访问层;接着构建服务层处理业务逻辑;最后创建控制器处理 HTTP 请求。分页查询可通过添加 URL 参数实现。
|
12天前
|
XML 前端开发 Java
还不会SpringBoot项目模块分层?来这手把手教你
本文详细介绍了如何为SpringBoot项目创建模块并进行合理的分层设计。通过逐步演示,从创建项目到构建各功能模块,再到具体代码实现,手把手教你实现整洁的代码分层。主要内容包括:创建依赖层、主启动层、模块层及其子模块(如共通层、控制器层、数据持久层等),并通过实例演示了从前端请求到后台服务调用的实际流程。适合SpringBoot初学者及有一定经验但需优化项目结构的开发者参考。
57 2
还不会SpringBoot项目模块分层?来这手把手教你
|
12天前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
33 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
3天前
|
前端开发 JavaScript Java
技术分享:使用Spring Boot3.3与MyBatis-Plus联合实现多层次树结构的异步加载策略
在现代Web开发中,处理多层次树形结构数据是一项常见且重要的任务。这些结构广泛应用于分类管理、组织结构、权限管理等场景。为了提升用户体验和系统性能,采用异步加载策略来动态加载树形结构的各个层级变得尤为重要。本文将详细介绍如何使用Spring Boot3.3与MyBatis-Plus联合实现这一功能。
17 2
|
13天前
|
Java 数据库连接 测试技术
SpringBoot 3.3.2 + ShardingSphere 5.5 + Mybatis-plus:轻松搞定数据加解密,支持字段级!
【8月更文挑战第30天】在数据驱动的时代,数据的安全性显得尤为重要。特别是在涉及用户隐私或敏感信息的应用中,如何确保数据在存储和传输过程中的安全性成为了开发者必须面对的问题。今天,我们将围绕SpringBoot 3.3.2、ShardingSphere 5.5以及Mybatis-plus的组合,探讨如何轻松实现数据的字段级加解密,为数据安全保驾护航。
48 1
|
12天前
|
小程序 前端开发 JavaScript
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
【避坑宝】是一款企业黑红名单吐槽小程序,旨在帮助打工人群体辨别企业优劣。该平台采用SpringBoot+MybatisPlus+uniapp+uview2等技术栈构建,具备丰富的注释与简洁的代码结构,非常适合实战练习与学习。通过小程序搜索“避坑宝”即可体验。
34 0
【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
|
12天前
|
JavaScript 前端开发 小程序
【项目实战】SpringBoot+vue+iview打造一个极简个人博客系统
这是一个基于 SpringBoot+MybatisPlus+Vue+Iview 技术栈构建的个人极简博客系统,适合初学者实战练习。项目包含文章分类、撰写文章、标签管理和用户管理等功能,代码简洁并配有详细注释,易于上手。此外,该项目也可作为毕业设计的基础进行二次开发。
53 0
【项目实战】SpringBoot+vue+iview打造一个极简个人博客系统
|
6天前
|
Java 数据库连接 开发者
MyBatis-Plus整合SpringBoot及使用
MyBatis-Plus为MyBatis提供了强大的增强,使得在Spring Boot项目中的数据访问层开发变得更加快捷和简便。通过MyBatis-Plus提供的自动CRUD、灵活的查询构造器和简洁的配置,开发者
20 0
|
14天前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
53 0