一个项目:统一返回值,控制层统一异常处理与项目添加
来源:互联网 发布:于右任书法 知乎 编辑:程序博客网 时间:2024/06/05 12:50
重构方法的返回值,对返回值进行统一封装
实际项目中现在通常会对控制层返回的数据进行统一封装.
1)正常数据(包含页面要呈现的数据)
2)错误数据(包含一些异常信息)
在我们的项目我们会将控制台返回的数据封装为一个
JsonResult对象(此对象会转换为json格式字符串返回到客户端)
class JsonResult{
private int state;
private String message;
private Object data;
………
}
class Result{
………….
}
class R{
……..
}
- 这样封装后,控制层返回值统一
@RequestMapping("doSaveObject") @ResponseBody public JsonResult doSaveObject(Project entity){ projectService.saveObject(entity); return new JsonResult("insert ok"); }
js端解析为此返回对象
控制层异常的统一处理?
1)处理目的:提高系统的容错能力,改善用户体验.
2)处理手段:基于注解方式实现
a)通过继承将异常处理代码写到BaseController类中
b)通过@ControllerAdvice注解声明统一异常处理对象.
方案1:
public class BaseController{ @ExceptionHandler(ServiceException.class) @ResponseBody public JsonResult handleServiceException( ServiceException e){ e.printStackTrace(); return new JsonResult(e);//state=0,message=e.getMessage(); }}class ProjectController extends BaseController{....}
方案2:
@ControllerAdvicepublic class ControllerHandlerException{ @ExceptionHandler(ServiceException.class) @ResponseBody public JsonResult handleServiceException( ServiceException e){ e.printStackTrace(); return new JsonResult(e);//state=0,message=e.getMessage(); }}
Spring MVC 在发现控制层异常以后会自动检测查找异常处理方法
项目管理添加模块实现
1)在ProjectDao中添加方法
int insertObject(Project entity);
2)在ProjectMapper.xml文件添加insert元素
<insert id="insertObject" parameterType="cn.tedu.ttms.product.entity.Project"> insert ....... </insert>
3)在ProjectService接口及实现类中添加相关方法
void saveObject(Project entity); @Override public void saveObject(Project entity) { if(entity==null) throw new ServiceException("保存对象不能为空"); int rows=projectDao.insertObject(entity); if(rows<=0) throw new ServiceException("insert error"); }
4)在TestProjectService类进行单元测试.
5)在ProjectController类中添加方法
/**返回项目编辑页面*/ @RequestMapping("editUI") public String eidtUI(){ return "product/project_edit"; } /** * name="东欧游"&code="..."&beginDate="..." * spring 获得参数数据以后会对数据进行解析然后 * 调用project对象的setXXX方法将数据存储到project * 对象. */ @RequestMapping("doSaveObject") @ResponseBody public JsonResult doSaveObject(Project entity){ projectService.saveObject(entity); return new JsonResult("insert ok"); }
6)在project_list.js中的添加按钮注册事件
$("#queryFormId").on("click",".btn-add",doLoadEditPage);function doLoadEditPage(){ //定义访问编辑页面的url地址 var url="project/editUI.do"; //$(".content").load(url) var title; //var cls=$(this).attr("class");//btn btn-primary btn-add //if(cls=="btn btn-primary btn-add"); if($(this).hasClass("btn-add")){ title="添加项目信息" } if($(this).hasClass("btn-update")){ title="修改项目信息" } //在模态框中异步加载显示编辑页面. //本项目中模态框的定义在index.jsp中,而且默认是隐藏的. $("#modal-dialog .modal-body") .load(url,function(){//callback method $(".modal-title").html(title); //页面加载完成显示模态框(其中show表示显示,hide表示隐藏) $("#modal-dialog").modal("show"); });};
7)在project_edit.js中注册保存事件,执行保存业务
$(document).ready(function(){ $("#modal-dialog") //模态框的.ok按钮上注册点击事件 .on("click",".ok",doSaveOrUpdate); //在模态框隐藏后移除ok上注册的事件,防止数据多次提交. $("#modal-dialog") .on("hidden.bs.modal",function(){ console.log("==hidden.bs.modal=="); $("#modal-dialog").off("click",".ok"); });}) /*添加或修改数据*/ function doSaveOrUpdate(){ //0.验证表单数据是否为空 if(!$("#editFormId").valid())return; //这个验证需要借助validate插件 //1.获得表单数据 var params=getEditFormData(); console.log(params); //2.异步提交表单数据 var url="project/doSaveObject.do" $.post(url,params,function(result){ if(result.state==1){ //隐藏模态框 $("#modal-dialog").modal("hide"); //显示相关信息 alert(result.message); //重新查询数据 doGetObjects(); }else{ alert(result.message); }});} /*获取表单数据*/ function getEditFormData(){ var params={ name:$("#nameId").val(), code:$("#codeId").val(), beginDate:$("#beginDateId").val(), endDate:$("#endDateId").val(), valid:$("input[type='radio']:checked").val(), note:$("#noteId").val() }//JSON 对象 return params;}
阅读全文
0 0
- 一个项目:统一返回值,控制层统一异常处理与项目添加
- 项目异常统一处理-spring+springmvc
- SSM项目统一异常处理方案
- JSON统一格式返回值,统一异常处理
- SpringMVC统一异常处理 返回JSON解决方案
- springmvc+mybatis项目中的统一异常处理器
- springmvc+mybatis项目中的统一异常处理器
- 在一个网站里有很多aspx页 如何统一处理项目中的所有异常?(面试题)
- 统一的处理异常
- 统一异常处理
- strut2 统一异常处理
- Spring统一异常处理
- 异常的统一处理
- sprimgmvc统一处理异常
- springmvc统一异常处理
- Spring > 统一异常处理
- MVC统一异常处理
- SpringMVC异常统一处理
- dwarf tower
- 字符串大小写逆置
- 玩转算法面试-数组
- 《R语言入门与实践》学习笔记二
- 【UVA11997】K Smallest Sums
- 一个项目:统一返回值,控制层统一异常处理与项目添加
- 整数因子分解问题
- Codeforce-242E-XOR on Segment(线段树区间更新)
- Programming学习2_大数据常用十种开发语言
- 散列表-2
- Tesseract源码学习:宏定义#define中#、\等一些符号的用法
- activity的四种启动模式及使用场景
- NOIP2017提高组初赛 个人理解+题解
- IDEA下maven编译打包Java项目成jar包但是resource下配置文件打包不成功