SpringBoot+Mybatis整合jsp项目之EMS

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 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
相关文章
|
20天前
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
|
18天前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
232 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
19天前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
56 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
19天前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
34 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
18天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
28 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
18天前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
67 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
19天前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
12 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
20天前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
1天前
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
7 0