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