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.效果展示
- 登录页面
- 注册页面
员工展示页面
添加学生
修改员工信息并进行数据回显
5.编码环节
- 技术选型: springboot + mybatis + jsp + mysql
- 环境搭建: springboot + jsp + mybatis
- 项目名字: springBoot-EMS
- 项目结构
- 项目所需依赖:(直接导入就可)
<!--集成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下载相关源码