此系列:IDEA 搭建 基于 SSM 框架 的 Maven 项目, 完成一个基本的Web应用,实现 crud 功能。
(1) 在IDEA中,新建一个Maven工程,并创建好完整的项目结构
(2) 引入项目依赖的 jar 包,引入bootstrap前端框架,编写SSM整合的配置文件
(3) 创建数据库,生成bean文件 和 mapper文件,最后测试该部分
(4) 页面发送请求查询所有员工数据,得到 json 字符串
(5) 设计分页显示页面,解析 json 字符串,展示查询结果
(6) 添加“新增”功能
(7) 对用户输入数据进行校验
(8) 添加“修改”功能
(9) 添加“删除”功能
本节:页面发送请求查询所有员工数据,得到 json 字符串
1. index.jsp 页面发送查询员工列表请求
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:forward page="/emps"></jsp:forward>
2. controller接受请求,查询数据
controller包下新建EmployeeController.java 文件
@Controller
public class EmployeeController {
@Autowired
EmployeeService employeeService;
@RequestMapping("/emps")
@ResponseBody
public PageInfo getEmps(@RequestParam(value = "pn",defaultValue = "1")Integer pn){
PageHelper.startPage(pn, 5);
List<Employee> emps = employeeService.getAll();
PageInfo page = new PageInfo(emps, 5);
return page;
}
}
service包下新建EmployeeService.java文件,从数据库中查询数据
@Service
public class EmployeeService {
@Autowired
EmployeeMapper employeeMapper;
public List<Employee> getAll(){
return employeeMapper.selectByExampleWithDept(null);
}
}
3. 运行程序,查看返回的 json 字符串
{“pageNum”:1,“pageSize”:5,“size”:5,“startRow”:1,“endRow”:5,“total”:101,“pages”:21,“list”:[{“empId”:1,“empName”:“Alice”,“gender”:“F”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:2,“empName”:“accb40”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:3,“empName”:“4b3fa1”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:4,“empName”:“33f872”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:5,“empName”:“28ed03”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}}],“prePage”:0,“nextPage”:2,“isFirstPage”:true,“isLastPage”:false,“hasPreviousPage”:false,“hasNextPage”:true,“navigatePages”:5,“navigatepageNums”:[1,2,3,4,5],“navigateFirstPage”:1,“navigateLastPage”:5,“firstPage”:1,“lastPage”:5}
4. 设置一个通用的返回类 Msg
- 在 bean 包下新建 Msg.java,添加属性值:状态码code,提示信息msg,以及要返回给浏览器的封装成的 map 的数据。添加 get 和 set 方法。
- 添加常用的静态函数 成功success() 和失败fail()。
- 添加一个add()函数,可以连续添加要返回给浏览器的数据。
public class Msg {
//状态码 100-成功 200-失败
private int code;
//提示信息
private String msg;
//用户要返回给浏览器的数据
private Map<String, Object> extend = new HashMap<String, Object>();
public static Msg success(){
Msg result = new Msg();
result.setCode(100);
result.setMsg("处理成功!");
return result;
}
public static Msg fail(){
Msg result = new Msg();
result.setCode(200);
result.setMsg("处理失败!");
return result;
}
public Msg add(String key,Object value){
this.getExtend().put(key, value);
return this;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Map<String, Object> getExtend() {
return extend;
}
public void setExtend(Map<String, Object> extend) {
this.extend = extend;
}
}
5. 修改 controller 类,使得返回 Msg 对象
修改 controller 包下的EmployeeController.java 类中的 getEmps() 方法
@RequestMapping("/emps")
@ResponseBody
public Msg getEmps(@RequestParam(value = "pn",defaultValue = "1")Integer pn){
PageHelper.startPage(pn, 5);
List<Employee> emps = employeeService.getAll();
PageInfo page = new PageInfo(emps, 5);
return Msg.success().add("pageInfo", page);
}
6. 运行程序,查看最终返回的json字符串
{“code”:100,“msg”:“处理成功!”,“extend”:{“pageInfo”:{“pageNum”:1,“pageSize”:5,“size”:5,“startRow”:1,“endRow”:5,“total”:101,“pages”:21,“list”:[{“empId”:1,“empName”:“Alice”,“gender”:“F”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:2,“empName”:“accb40”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:3,“empName”:“4b3fa1”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:4,“empName”:“33f872”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}},{“empId”:5,“empName”:“28ed03”,“gender”:“M”,“email”:“[email protected]”,“dId”:1,“department”:{“deptId”:1,“deptName”:“开发部”}}],“prePage”:0,“nextPage”:2,“isFirstPage”:true,“isLastPage”:false,“hasPreviousPage”:false,“hasNextPage”:true,“navigatePages”:5,“navigatepageNums”:[1,2,3,4,5],“navigateFirstPage”:1,“navigateLastPage”:5,“firstPage”:1,“lastPage”:5}}}