当前位置: 首页 > news >正文

五屏网站建设品牌好温州小学网站建设

五屏网站建设品牌好,温州小学网站建设,十堰城市建设网站,公司简介ppt模板免费下载目录 前言 一. JSON概述 二. JSON数据返回 1. 导入pom依赖 2. 添加配置文件#xff08;spring-mvc.xml#xff09; 3. ResponseBody注解使用 4. 效果展示 5. Jackson介绍 三. 全局异常处理 1. 为什么要全局异常处理 2. 异常处理思路 3. 异常处理方式一 4. 异常处…目录 前言 一. JSON概述 二. JSON数据返回 1. 导入pom依赖 2. 添加配置文件spring-mvc.xml 3. ResponseBody注解使用 4. 效果展示 5. Jackson介绍 三. 全局异常处理 1. 为什么要全局异常处理 2. 异常处理思路 3. 异常处理方式一 4. 异常处理方式二 5. 异常处理方式三 前言 Spring MVC 在传递数据时通常都需要对数据的类型和格式进行转换。而这些数据不仅可以是常见的 String 类型还可以是 JSON 等其他类型。 JSON 是近些年一种比较流行的数据格式它与 XML 相似也是用来存储数据的。但相较于 XMLJSON 数据占用的空间更小解析速度更快。因此使用 JSON 数据进行前后台的数据交互也是一种十分常见的手段。 另外在实际的应用开发中经常会不可避免地遇到各种可预知的、不可预知的异常此时我们就需要对这些异常处理以保证程序正常运行。 本篇将对 Spring MVC 的 JSON 类型数据返回以及异常处理进行分享。 一. JSON概述 JSONJavaScript Object NotationJS 对象标记是一种轻量级的数据交互格式。与 XML 一样JSON 也是一种基于纯文本的数据格式。通过它我们不仅能够传递 String、Number、Boolean 等简单类型的数据还可以传递数组、Object 对象等复杂类型的数据。 二. JSON数据返回 Spring MVC 为我们提供了两个十分重要的与 JSON 格式转换相关的注解它们分别是 RequestBody 和 ResponseBody。 注解位置说明RequestBody方法的形参上该注解用于将请求体中的数据绑定到控制器方法的形参上。ResponseBody方法上该注解用于将控制器方法的返回值直接作为响应报文的响应体响应到 浏览器上。 这里以 ResponseBody为例 JSON 支持对象结构数组结构对象和数组组合成的复杂结构 1. 导入pom依赖 dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.3/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-core/artifactIdversion2.9.3/version /dependency dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-annotations/artifactIdversion2.9.3/version /dependency 2. 添加配置文件spring-mvc.xml bean classorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapterproperty namemessageConverterslistref beanmappingJackson2HttpMessageConverter//list/property /bean bean idmappingJackson2HttpMessageConverter classorg.springframework.http.converter.json.MappingJackson2HttpMessageConverter!--处理中文乱码以及避免IE执行AJAX时返回JSON出现下载文件--property namesupportedMediaTypeslistvaluetext/html;charsetUTF-8/valuevaluetext/json;charsetUTF-8/valuevalueapplication/json;charsetUTF-8/value/list/property /bean 3. ResponseBody注解使用 ResponseBody注解的作用是将Controller的方法返回的对象通过适当的转换器转换为指定的格式之后写入到response对象的body区通常用来返回JSON数据或者是XML数据。 注意在使用此注解之后不会再走视图解析器而是直接将数据写入到输入流中他的效果等同于通过response对象输出指定格式的数据。 controller层 package com.xissl.web;import com.xissl.biz.clazzBiz; import com.xissl.model.clazz; import com.xissl.utils.PageBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; import java.util.Map;Controller RequestMapping(/clz/json) public class JsonController {Autowiredprivate clazzBiz clazzBiz;/*** 返回ListT* param req* param clazz* return*/ResponseBodyRequestMapping(/list)public Listclazz list(HttpServletRequest req, clazz clazz){PageBean pageBean new PageBean();pageBean.setRequest(req);Listclazz lst this.clazzBiz.listPager(clazz, pageBean);return lst;}/*** 返回T* param req* param clazz* return*/ResponseBodyRequestMapping(/load)public clazz load(HttpServletRequest req, clazz clazz){if(clazz.getCid() ! null){Listclazz lst this.clazzBiz.listPager(clazz, null);return lst.get(0);}return null;}/*** 返回ListMap* param req* param clazz* return*/ResponseBodyRequestMapping(/mapList)public ListMap mapList(HttpServletRequest req, clazz clazz){PageBean pageBean new PageBean();pageBean.setRequest(req);ListMap lst this.clazzBiz.mapListPager(clazz, pageBean);return lst;}/*** 返回Map* param req* param clazz* return*/ResponseBodyRequestMapping(/mapLoad)public Map mapLoad(HttpServletRequest req, clazz clazz){if(clazz.getCid() ! null){ListMap lst this.clazzBiz.mapListPager(clazz, null);return lst.get(0);}return null;}ResponseBodyRequestMapping(/all)public Map all(HttpServletRequest req, clazz clazz){PageBean pageBean new PageBean();pageBean.setRequest(req);Listclazz lst this.clazzBiz.listPager(clazz, pageBean);Map map new HashMap();map.put(lst,lst);map.put(pageBean,pageBean);return map;}ResponseBodyRequestMapping(/jsonStr)public String jsonStr(HttpServletRequest req, clazz clazz){return clzEdit;}}业务逻辑层 ListMap mapListPager(clazz clazz, PageBean pageBean); Overridepublic ListMap mapListPager(clazz clazz, PageBean pageBean) {return clazzMapper.mapListPager(cl mapper接口 ListMap mapListPager(clazz clazz); sql映射文件 select idmapListPager resultTypejava.util.Map parameterTypecom.xissl.model.clazz selectinclude refidBase_Column_List /from t_struts_classwhereif testcname ! nulland cname like concat(%,#{cname},%)/if/where/select 4. 效果展示 对象结构 JSON 的对象结构以“{”开始以“}”结束中间则由 0 个或多个以英文的逗号即“,”分隔的 key/value 对构成。实体或集合T/map 数组结构 JSON 的数组结构以“[”开始、以“]”结束中间部分由 0 个或多个以英文的逗号即“,”分隔的值列表组成。ListT/Listmap 混合结构 JSON数据返回第一种方式是在方法上添加ResponseBody注解。 除此之外还可以将ResponseBody注解放于类上。 以及第三种方式将Controller与ResponseBody合并即RestController 5. Jackson介绍 Jackson是一个简单基于Java应用库Jackson可以轻松的将Java对象转换成json对象和xml文档同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少简单易用并且性能也要相对高些并且Jackson社区相对比较活跃更新速度也比较快。 特点 容易使用提供了高层次外观简化常用的用例。 无需创建映射API提供了默认的映射大部分对象序列化。 性能高快速低内存占用 创建干净的json 不依赖其他库 代码开源 常用注解 注解说明JsonIgnore作用在字段或方法上用来完全忽略被注解的字段和方法对应的属性JsonProperty作用在字段或方法上用来对属性的序列化/反序列化可以用来避免遗漏属性同时提供对属性名称重命名JsonIgnoreProperties作用在类上用来说明有些属性在序列化/反序列化时需要忽略掉JsonUnwrapped作用在属性字段或方法上用来将子JSON对象的属性添加到封闭的JSON对象JsonFormat指定序列化日期/时间值时的格式 三. 全局异常处理 1. 为什么要全局异常处理 我们知道系统中异常包括编译时异常和运行时异常RuntimeException前者通过捕获异常从而获取异常信息后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中不管是dao层、service层还是controller层都有可能抛出异常在springmvc中能将所有类型的异常处理从各处理过程解耦出来既保证了相关处理过程的功能较单一也实现了异常信息的统一处理和维护。 2. 异常处理思路 系统的dao、service、controller出现异常都通过throws Exception向上抛出最后由springmvc前端控制器交由异常处理器进行异常处理。springmvc提供全局异常处理器一个系统只有一个异常处理器进行统一异常处理。 3. 异常处理方式一 SpringMVC中自带了一个异常处理器叫SimpleMappingExceptionResolver该处理器实现了HandlerExceptionResolver 接口全局异常处理器都需要实现该接口。 在配置文件spring-mvc.xml中添加异常处理器 !-- springmvc提供的简单异常处理器 --bean classorg.springframework.web.servlet.handler.SimpleMappingExceptionResolver!-- 定义默认的异常处理页面 --property namedefaultErrorView valueerror/!-- 定义异常处理页面用来获取异常信息的变量名也可不定义默认名为exception --property nameexceptionAttribute valueex/!-- 定义需要特殊处理的异常这是重要点 --property nameexceptionMappingspropsprop keyjava.lang.RuntimeExceptionerror/prop/props!-- 还可以定义其他的自定义异常 --/property/bean 添加一个异常代码 ResponseBodyRequestMapping(/list)public Listclazz list(HttpServletRequest req, clazz clazz){PageBean pageBean new PageBean();pageBean.setRequest(req);Listclazz lst this.clazzBiz.listPager(clazz, pageBean);System.out.println(1 / 0);return lst;} 异常处理界面 % page contentTypetext/html;charsetUTF-8 languagejava % html headtitleTitle/title /head body 出错咯...... ${ex} /body /html 测试效果 4. 异常处理方式二 package com.xissl.exception;public class GlobalException extends RuntimeException {public GlobalException() {}public GlobalException(String message) {super(message);}public GlobalException(String message, Throwable cause) {super(message, cause);}public GlobalException(Throwable cause) {super(cause);}public GlobalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} } 1.通过instanceof判断异常类型 2.通过设置mv.setView(new MappingJackson2JsonView())方式返回JSON数据 package com.xissl.component;import com.xissl.exception.GlobalException; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;Component public class GlobalExceptionHandler implements HandlerExceptionResolver {Overridepublic ModelAndView resolveException(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,Object o, Exception e) {ModelAndView mv new ModelAndView();mv.setViewName(error);if (e instanceof GlobalException){GlobalException globalException (GlobalException) e;mv.addObject(ex,globalException.getMessage());mv.addObject(msg,全局异常....);}else if (e instanceof RuntimeException){RuntimeException runtimeException (RuntimeException) e;mv.addObject(ex,runtimeException.getMessage());mv.addObject(msg,运行时异常....);}else {mv.addObject(ex,e.getMessage());mv.addObject(msg,其它异常....);}return mv;} } ResponseBodyRequestMapping(/jsonStr)public String jsonStr(HttpServletRequest req, clazz clazz){if(true)throw new GlobalException(又出错咯......);return clzEdit;} % page contentTypetext/html;charsetUTF-8 languagejava % html headtitleTitle/title /head body 出错咯...... ${ex} br ${msg} /body /html 5. 异常处理方式三 package com.xissl.component;import com.xissl.exception.GlobalException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap; import java.util.Map;ControllerAdvice public class GlobalExceptionResolver {// 返回错误json数据ResponseBodyExceptionHandlerpublic Map handler(Exception e){Map map new HashMap();if (e instanceof GlobalException){GlobalException globalException (GlobalException) e;map.put(ex,globalException.getMessage());map.put(msg,全局异常....);}else if (e instanceof RuntimeException){RuntimeException runtimeException (RuntimeException) e;map.put(ex,runtimeException.getMessage());map.put(msg,运行时异常....);}else {map.put(ex,e.getMessage());map.put(msg,其它异常....);}return map;} } 这段代码运行后展示的效果是JSON形式的异常信息 package com.xissl.component;import com.xissl.exception.GlobalException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView;import java.util.HashMap; import java.util.Map;ControllerAdvice public class GlobalExceptionResolver {// 跳转错误页面ExceptionHandlerpublic ModelAndView handler(Exception e){ModelAndView mv new ModelAndView();mv.setViewName(error);if (e instanceof GlobalException){GlobalException globalException (GlobalException) e;mv.addObject(ex,globalException.getMessage());mv.addObject(msg,全局异常....);}else if (e instanceof RuntimeException){RuntimeException runtimeException (RuntimeException) e;mv.addObject(ex,runtimeException.getMessage());mv.addObject(msg,运行时异常....);}return mv;}} 这段代码运行后展示的效果是jsp界面的异常信息
http://www.sczhlp.com/news/251054/

相关文章:

  • 跨境网站开发公司河南建设银行官网招聘网站
  • 网站定制营销wordpress连接微信支付
  • 宾馆网站建设如何做网站登录界面
  • 除了做视频网站还能做什么网站网站开发 培训 周末班
  • 智能模板网站建设工具东莞专业全网推广建站公司
  • 网站开发中存在的问题网页制作图片居中对齐
  • 在哪里申请网站柳市网站优化
  • 网站制作推广方案做网站切片
  • php建设图书网站代码手机微信的网站案例
  • 网站制作的步骤不包括哪些3000行业关键词
  • 城市建设模拟游戏网站大连网站开发 选领超科技
  • 北京网站建设最好公司福建省住房和城乡建设厅的网站
  • 西安网站建设定制网站制作电话多少
  • 东莞php网站建设价格免费直播网站开发
  • .net是建网站的吗拍卖网站制作
  • 长沙网站建设制作建企业网站哪个平台好
  • 兰州网站建设招聘最新做个人网站需要哪些
  • 花生壳做网站网站建设中主页指的是
  • 江苏优化网站关键词在哪里可以看免费的视频
  • 宣城网站建设价格深圳全网站建设公司
  • cad做兼职区哪个网站app软件定制企业
  • 免费的网站认证软件定制报价单
  • vue做网站前端wordpress上篇下篇代码
  • 建网站有域名和主机wordpress 按分类显示图片
  • 公司网站开发创业网站怎么做图片转链
  • DRL-QLearning与DQN
  • CF2153B Bitwise Reversion | 数学 | 模拟
  • 项目2:图书管理系统(数据库入门)
  • 公司的宣传网站应该怎么做上海市企业服务云官网
  • 闲置tp路由自己做网站百度搜索大数据