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.效果展示

    - 登录页面

javaee框架整合开发入门到实战 代码 java开发框架emp_java

    - 注册页面

javaee框架整合开发入门到实战 代码 java开发框架emp_功能实现_02

  • 员工展示页面

javaee框架整合开发入门到实战 代码 java开发框架emp_spring_03

  • 添加学生

javaee框架整合开发入门到实战 代码 java开发框架emp_功能实现_04

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

javaee框架整合开发入门到实战 代码 java开发框架emp_spring_05

5.编码环节

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

    - 环境搭建: springboot + jsp + mybatis

    - 项目名字: springBoot-EMS

    - 项目结构

javaee框架整合开发入门到实战 代码 java开发框架emp_数据库_06

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

<!--集成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地址:https://gitee.com/wanghengjie563135/spring-boot_-ems.git下载相关源码