项目完整实现代码下载地址:https://download.youkuaiyun.com/download/bingbeichen/10578683。
该部分主要实现新员工信息的添加,实现步骤包括:
- 在index.jsp页面点击“新增”按钮,弹出新增对话框;
- 向数据库中查询全部部门名称列表,显示在对话框中;
- 输入新员工数据,并进行校验(jQuery前端校验、Ajax姓名重复校验、重要数据后端JSR303校验、数据表唯一性约束);
- 完成保存操作。
其中,新增员工的模态框如下所示:
注意:前端需要校验员工姓名与邮箱格式的正确性以及姓名是否冲突,后端采用JSR303校验同时进行校验,以防止用户恶意修改请求跳过前端校验。通常,还需要在数据库中对数据表添加约束,以确保数据格式的正确性。
该部分主要实现现有员工信息的修改,实现步骤包括:
- 在index.jsp页面点击“编辑”按钮,弹出编辑对话框;
- 向数据库中查询全部部门名称列表,显示在对话框中;
- 向数据库中查询当前员工的详细信息,显示在对话框中;
- 修改当前员工的邮箱、性别和部门信息,校验邮箱格式是否合法;
- 点击“更新”按钮,完成保存操作。
注意:
//发送PUT请求,保存信息
$.ajax({
url : "${WEB_PATH}/emp/" + $(this).attr("emp_id"),
/* type : "POST",
data : $("#update_emp_modal form").serialize() + "&_method=PUT", */
/**
* 血案:请求体中含有数据,但处理器目标方法的入参中封装不上
* Employee [id=1, lastName=null, gender=null, email=null, deptId=null]
* 原因:
* 1).Tomcat会将请求体中的数据封装为一个Map对象
* 2).request.getParameter("lastName")就会从这个Map对象中取值
* 3).SpringMVC封装POJO时,会采用request.getParameter()的方式
*
* 结论:Tomcat针对AJAX所发送的PUT请求不会封装请求体中的数据。
* 解决方案:
* 1).使用POST请求,在请求体数据中添加&_method=PUT,即
* type : "POST",
* data : $("#update_emp_modal form").serialize() + "&_method=PUT",
* 2).使用SpringMVC提供的HttpPutFormContentFilter过滤器即可。
*/
type : "PUT",
data : $("#update_emp_modal form").serialize(),
success : function(result){
// 关闭模态框
$("#update_emp_modal").modal("hide");
// 回到修改员工所在的页面
to_page(currentPage);
}
});
该部门主要实现员工的单个删除与批量删除操作,处理器的目标方法如下:
/**
* 批量删除 + 单个删除
* 批量删除:/emp/{ids},ids=1-2-3
* 单个删除:/emp/{ids},ids=1
* @param ids
* @return
*/
@RequestMapping(value="/emp/{ids}", method=RequestMethod.DELETE)
@ResponseBody
public Message handleDeleteEmps(@PathVariable("ids") String ids) {
if(ids.contains("-")) {
List<Integer> idsList = new ArrayList<Integer>();
String[] ids_str = ids.split("-");
for(String id : ids_str) {
idsList.add(Integer.parseInt(id));
}
employeeService.deleteBatch(idsList);
} else {
Integer id = Integer.parseInt(ids);
employeeService.deleteEmpById(id);
}
return Message.success();
}
总结:
- 前端页面采用Bootstrap快速搭建;
- 前端页面发送Ajax请求给服务器,采用JS解析服务器返回的JSON字符串,并显示在页面上;
- Tomcat服务器中的SSM-CRUD项目,采用SpringMVC前端控制器接收页面请求;
- 若请求可以处理,则交给Controller - Service - Dao(XxxMapper) - SQL映射文件 - 访问数据库;
- 若请求无法处理,则将请求交给Tomcat服务器进行处理,如获取静态资源等;
- 使用Spring容器管理SSM-CRUD项目,并使用Maven实现依赖管理与项目构建。