SpringBoot+Mybatis整合jsp项目之EMS

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 🍅程序员小王的博客:程序员小王的博客🍅 欢迎点赞 👍 收藏 ⭐留言 📝🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕🍅java自学的学习路线:java自学的学习路线

1、项目开发流程

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


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


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


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


5.功能测试 功能测试


6.部署


7.上线 运维


8.维护


2.需求分析

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


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


3.库表设计

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


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


   确定字段:


       user: id 、username、password、name、sex


       employee: id 、 name、salary、gender


   数据库: ems-jsp


4.效果展示

   - 登录页面


4.png


   - 注册页面


5.png


员工展示页面

6.png


添加学生

7.png


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

8.png


5.编码环节

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


   - 环境搭建: springboot + jsp + mybatis


   - 项目名字: springBoot-EMS


   - 项目结构

9.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下载相关源码


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
Java 应用服务中间件 Maven
Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式)
25 1
|
6天前
|
SQL Java 数据库连接
SpringBoot整合Mybatis
SpringBoot整合Mybatis
34 2
|
4天前
|
算法 Java 数据库连接
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
|
5天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
6天前
|
Java 数据库连接 Spring
Spring 整合mybatis
Spring 整合mybatis
21 2
|
4天前
|
前端开发 JavaScript Java
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
|
6天前
|
消息中间件 JSON Java
RabbitMQ的springboot项目集成使用-01
RabbitMQ的springboot项目集成使用-01
|
6天前
|
JSON Java 数据格式
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
|
6天前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
17 0
|
6天前
|
Java Spring
Spring boot项目如何发送邮件
Spring boot项目如何发送邮件
20 2