将ssm01复制,命名为ssm02_crud. 修改 id name 增加 模块标签 在ss01的基础上,我们本次主要是在以下问价增加和修改代码。
Controller方法返回Result
(1)返回结果Result Result.java private int code;//编码 private String msg;//提示信息 private Object data; //数据 (2)将数据放到Result对象中 Result.java public class Result { private int code;//编码 404 200 private String msg;//提示信息 private Object data; //数据 public static Result init(int code, String msg, Object data){ Result result =new Result(code,msg,data); return result; } private Result() { } private Result(int code, String msg, Object data) { this.code = code; this.msg = msg; this.data = data; }Controller方法返回Result
@Controller @RequestMapping("/deptv2") //写在类上面指定当前模块路径 public class DepartmentV2Controller { @Autowired private IDepartmentService departmentService;//controller调用 service层 /*@RequestMapping(path="/xx") public 返回值类型 方法名(参数){ //页面提交过来的请求参数 //.. 返回值类型决定返回给浏览器的内容 } */ @RequestMapping(path="/listUI",method = RequestMethod.GET) public String listUI(){ return "list_depts"; } //地址上带UI表示打开页面,不带的表示返回数据 @RequestMapping(path="/list",method = RequestMethod.GET) public @ResponseBody //将list调jackson转成json字符串 Object list(){ //业务逻辑 调用查找所有的部门的方法 List<Department> list = departmentService.findAllDepartments(); return Result.init(200,"",list);//返回对象需要被转成json字符串 } }list_depts.jsp
<!-- 开始ajax编程 --> <script type="text/javascript"> $(function () { //页面加载成功 //1:js发送请求 $.get('${path}/deptv2/list', function (result) { //2:js接收结果 console.info("result=" + result) //{"code":200,"msg":"","data":[{"did":1,"dname":"JAVA"},{"did":2,"dname":"测试"},{"did":3,"dname":"最牛部门33"}]} //定义表格的内容 var trs = '' //拼接表头 trs += ' <tr>\n' + ' <td>编号</td>\n' + ' <td>部门名称</td>\n' + ' <td>管理</td>\n' + '\n' + ' </tr>' if (200 == result.code) { var items = result.data; //3:js更新页面 for (var i = 0; i < items.length; i++) { var dept = items[i] console.info(dept) trs += ' <tr>\n' + ' <td>' + dept.did + '</td>\n' + ' <td>' + dept.dname + '</td>\n' + ' <td><a>删除</a><a>修改</a></td>\n' + '\n' + ' </tr>' }//end for $('#table').html(trs) } }, 'json') //参1 地址 参2 处理函数 参3 数据类型 }) </script>DepartmentV2Controller
<!-- 开始ajax编程 --> <script type="text/javascript"> $(function () { //页面加载成功 //1:js发送请求 $.get('${path}/deptv2/list', function (result) { //2:js接收结果 console.info("result=" + result) //{"code":200,"msg":"","data":[{"did":1,"dname":"JAVA"},{"did":2,"dname":"测试"},{"did":3,"dname":"最牛部门33"}]} //定义表格的内容 var trs = '' //拼接表头 trs += ' <tr>\n' + ' <td>编号</td>\n' + ' <td>部门名称</td>\n' + ' <td>管理</td>\n' + '\n' + ' </tr>' if (200 == result.code) { var items = result.data; //3:js更新页面 for (var i = 0; i < items.length; i++) { var dept = items[i] console.info(dept) trs += ' <tr>\n' + ' <td>' + dept.did + '</td>\n' + ' <td>' + dept.dname + '</td>\n' + ' <td><a>删除</a><a>修改</a></td>\n' + '\n' + ' </tr>' }//end for $('#table').html(trs) } }, 'json') //参1 地址 参2 处理函数 参3 数据类型 }) </script>DepartmentV2Controller
@RequestMapping(path="/delete",method = RequestMethod.GET) public @ResponseBody Object delete(Integer did){ //获取did,执行对该条记录的删除 l.info("delete did="+did); try { departmentService.deleteDepartmentById(did); return Result.init(200,"删除成功",null); } catch (Exception e) { e.printStackTrace(); } return Result.init(-200,"删除失败",null); }list_depts.jsp
function deleteById(did) { $.get('${path}/deptv2/delete?did='+did,function (result) { console.info(result) if(200==result.code){ alert(result.msg) refreshTable()//调用列表更新 }else{ alert(result.msg) } },'json') } <a href="javascript:deleteById('+dept.did+')">删除</a> 默认情况下点击超链接 是跳转页面-整体刷新Ajax是局部刷新,点击链接调用函数,函数内部发起请求,处理返回结果,更新页面DepartmentV2Controller
//保存一般是使用post提交 @RequestMapping(path="/add",method = RequestMethod.POST) public @ResponseBody Object add(Department dept){ l.info("add department="+dept); try { departmentService.saveDepartment(dept); return Result.init(200,"添加成功",null); } catch (Exception e) { e.printStackTrace(); } return Result.init(-200,"添加失败",null); }添加的表单
<div id="addDiv"> <h1>添加页面</h1> <form id="add_form" > <input type="hidden" name="did"/><br/> <input type="text" name="dname" id="add_dname"/><br/> <input id="btn_add" type="button" value="保存"/><br/> </form> </div>添加的ajax请求
$('#btn_add').click(function () { //alert('btn_add') 普通的表单提交 did=1&dname=测试组 var data = $('#add_form').serialize() //方法会将表单数据拼接成k1=v1&k2=v2 $.post('${path}/deptv2/add',data,function (result) { console.info(result) //页面切换 switchDiv(2) //重新加载列表 refreshTable() alert(result.msg) },'json') })调用查询
@RequestMapping(path = "/find", method = RequestMethod.GET) public @ResponseBody Object find(Integer did) { l.info("find did=" + did);//打数据 if (did != null) { Department dept = departmentService.findDepartmentById(did);//查询回显需要的数据 if (dept != null) { return Result.init(200, null, dept);//转成json返回页面 } } return Result.init(-200, "没有查询结果", null); }