做算法题的网站,wordpress头部工具栏,网站怎么看哪个公司网站建设,做英文网站建设文章目录 1.拦截器1.1在代码中的应用1.1.1定义拦截器1.1.2注册配置拦截器 1.2拦截器的作用1.3拦截器的实现 2.统一数据返回格式2.1 为什么需要统⼀数据返回格式#xff1f;2.2 统⼀数据返回格式的实现 3.统一异常处理4.SpringBoot专业版创建项目无Java8版本怎么办#xff1f;… 文章目录 1.拦截器1.1在代码中的应用1.1.1定义拦截器1.1.2注册配置拦截器 1.2拦截器的作用1.3拦截器的实现 2.统一数据返回格式2.1 为什么需要统⼀数据返回格式2.2 统⼀数据返回格式的实现 3.统一异常处理4.SpringBoot专业版创建项目无Java8版本怎么办 大家好我是晓星航。今天为大家带来的是 SpringBoot 统一处理功能 相关的讲解
1.拦截器
拦截器Interceptor是一种特殊的组件它可以在请求处理的过程中对请求和响应进行拦截和处理。拦截器可以在请求到达目标处理器之前、处理器处理请求之后以及视图渲染之前执行特定的操作。拦截器的主要目的是在不修改原有代码的情况下实现对请求和响应的统一处理。
HandlerInterceptor拦截器的实现分为以下两个步骤
创建自定义拦截器实现 HandlerInterceptor 接口的 preHandle执行具体方法之前的预处理方法。将自定义拦截器加⼊ WebMvcConfigurer 的 addInterceptors 方法中。 比如我们去银行办理业务在办理业务前后就可以加一些拦截操作 办理业务之前先取号如果带身份证了就取号成功 业务办理结束给业务办理人员的服务进行评价 这些就是拦截器做的工作
1.1在代码中的应用
拦截器的实现分两步
1.定义一个拦截器
2.把拦截器注册到项目中 图书管理系统的拦截器
接口定义 方法调用 运行后登录验证拦截器加入后运行结果 1.1.1定义拦截器 1.1.2注册配置拦截器 1.2拦截器的作用
权限控制拦截器可以在请求到达处理器之前进行权限验证从而实现对不同用户的访问控制。日志记录拦截器可以在请求处理过程中记录请求和响应的详细信息便于后期分析和调试。接口幂等性校验拦截器可以在请求到达处理器之前进行幂等性校验防止重复提交。数据校验拦截器可以在请求到达处理器之前对请求数据进行校验确保数据的合法性。缓存处理拦截器可以在请求处理之后对响应数据进行缓存提高系统性能。
1.3拦截器的实现
1.定义拦截器 2.注册配置拦截器 2.统一数据返回格式
2.1 为什么需要统⼀数据返回格式
统⼀数据返回格式的优点有很多⽐如以下⼏个 ⽅便前端程序员更好的接收和解析后端数据接口返回的数据。 降低前端程序员和后端程序员的沟通成本按照某个格式实现就⾏了因为所有接口都是这样返回的。 有利于项⽬统⼀数据的维护和修改。 有利于后端技术部⻔的统⼀规范的标准制定不会出现稀奇古怪的返回内容
2.2 统⼀数据返回格式的实现
统⼀的数据返回格式可以使⽤ ControllerAdvice ResponseBodyAdvice 的⽅式实现具体实现代码如下
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyA
dvice;
import java.util.HashMap;
ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {/*** 内容是否需要重写通过此⽅法可以选择性部分控制器和⽅法进⾏重写* 返回 true 表示重写*/Overridepublic boolean supports(MethodParameter returnType, Class converterTyp
e) {return true;}/*** ⽅法返回之前调⽤此⽅法*/Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType,
MediaType selectedContentType,Class selectedConverterType, ServerHttpR
equest request,ServerHttpResponse response) {// 构造统⼀返回对象HashMapString, Object result new HashMap();result.put(state, 1);result.put(msg, );result.put(data, body);return result;}
}只有String返回值会出现问题int Integer Info对象 Result 返回值均没有问题。 这里出现报错主要是由于我们的body从String类型被getAdivce()方法转化为了Result类型导致body在传参时与方法中的String s这个变量对应不上导致报错。
3.统一异常处理
统⼀异常处理使⽤的是 ControllerAdvice ExceptionHandler 来实现的ControllerAdvice
示控制器通知类ExceptionHandler 是异常处理器两个结合表示当出现异常的时候执⾏某个通知
也就是执⾏某个⽅法事件具体实现代码如下
import java.util.HashMap;
ControllerAdvice
public class ErrorAdive {ExceptionHandler(Exception.class)ResponseBodypublic Object handler(Exception e) {HashMapString, Object map new HashMap();map.put(state, 0);map.put(data, null);map.put(msg, e.getMessage());return map;}
}PS⽅法名和返回值可以⾃定义其中最重要的是 ExceptionHandler(Exception.class) 注解。 以上⽅法表示如果出现了异常就返回给前端⼀个 HashMap 的对象其中包含的字段如代码中定义的那样。
我们可以针对不同的异常返回不同的结果⽐以下代码所示
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;
ControllerAdvice
ResponseBody
public class ExceptionAdvice {ExceptionHandler(Exception.class)public Object exceptionAdvice(Exception e) {HashMapString, Object result new HashMap();result.put(success, -1);result.put(message, 总的异常信息 e.getMessage());result.put(data, null);return result;}ExceptionHandler(NullPointerException.class)public Object nullPointerexceptionAdvice(NullPointerException e) {HashMapString, Object result new HashMap();result.put(success, -1);result.put(message, 空指针异常 e.getMessage());result.put(data, null);return result;}
}当有多个异常通知时匹配顺序为当前类及其⼦类向上依次匹配案例演示。
在 UserController 中设置⼀个空指针异常实现代码如下:
RestController
RequestMapping(/u)
public class UserController {RequestMapping(/index)public String index() {Object obj null;int i obj.hashCode();return Hello,User Index.;}
}以上程序的执⾏结果如下 如果不加下面日志那么在打印时将不会由提示效果异常输出信息就会不明显 4.SpringBoot专业版创建项目无Java8版本怎么办
更改了url之后 此时Java版本就有8了 此时SpringBoot也有2.x的版本了 需要确认的位置1在设置里面搜索看是否是jdk-1.8版本 需要确认的位置2 需要确认位置3 如果使用jdk-1.8环境变量就改为jdk-1.8.0_192。 如果使用jdk-7环境变量就改为jdk-17.0.10
感谢各位读者的阅读本文章有任何错误都可以在评论区发表你们的意见我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞你的每一次鼓励都是作者创作的动力哦 文章转载自: http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn http://www.morning.xtqld.cn.gov.cn.xtqld.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.zrks.cn.gov.cn.zrks.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.trlhc.cn.gov.cn.trlhc.cn http://www.morning.mczjq.cn.gov.cn.mczjq.cn http://www.morning.bbmx.cn.gov.cn.bbmx.cn http://www.morning.nlbw.cn.gov.cn.nlbw.cn http://www.morning.mzjbz.cn.gov.cn.mzjbz.cn http://www.morning.srwny.cn.gov.cn.srwny.cn http://www.morning.rlqwz.cn.gov.cn.rlqwz.cn http://www.morning.kngx.cn.gov.cn.kngx.cn http://www.morning.lhytw.cn.gov.cn.lhytw.cn http://www.morning.lrskd.cn.gov.cn.lrskd.cn http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.gslz.com.cn.gov.cn.gslz.com.cn http://www.morning.tfkqc.cn.gov.cn.tfkqc.cn http://www.morning.xckqs.cn.gov.cn.xckqs.cn http://www.morning.plhyc.cn.gov.cn.plhyc.cn http://www.morning.xbbrh.cn.gov.cn.xbbrh.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.ykswq.cn.gov.cn.ykswq.cn http://www.morning.lcbnb.cn.gov.cn.lcbnb.cn http://www.morning.xcbnc.cn.gov.cn.xcbnc.cn http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.pshpx.cn.gov.cn.pshpx.cn http://www.morning.sbpt.cn.gov.cn.sbpt.cn http://www.morning.ffcsr.cn.gov.cn.ffcsr.cn http://www.morning.ftgwj.cn.gov.cn.ftgwj.cn http://www.morning.tndhm.cn.gov.cn.tndhm.cn http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn http://www.morning.qsy36.cn.gov.cn.qsy36.cn http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.mywmb.cn.gov.cn.mywmb.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.pcjw.cn.gov.cn.pcjw.cn http://www.morning.kfhm.cn.gov.cn.kfhm.cn http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.tfzjl.cn.gov.cn.tfzjl.cn http://www.morning.trlhc.cn.gov.cn.trlhc.cn http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn http://www.morning.zxqqx.cn.gov.cn.zxqqx.cn http://www.morning.sgwr.cn.gov.cn.sgwr.cn http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn http://www.morning.mwhqd.cn.gov.cn.mwhqd.cn http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn http://www.morning.dxhdn.cn.gov.cn.dxhdn.cn http://www.morning.hptbp.cn.gov.cn.hptbp.cn http://www.morning.mgmyt.cn.gov.cn.mgmyt.cn http://www.morning.nsrlb.cn.gov.cn.nsrlb.cn http://www.morning.lstmq.cn.gov.cn.lstmq.cn http://www.morning.nktgj.cn.gov.cn.nktgj.cn http://www.morning.2d1bl5.cn.gov.cn.2d1bl5.cn http://www.morning.dansj.com.gov.cn.dansj.com http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.rycbz.cn.gov.cn.rycbz.cn http://www.morning.chxsn.cn.gov.cn.chxsn.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.gbfuy28.cn.gov.cn.gbfuy28.cn http://www.morning.qymqh.cn.gov.cn.qymqh.cn http://www.morning.rahllp.com.gov.cn.rahllp.com http://www.morning.dljujia.com.gov.cn.dljujia.com http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.gyfhk.cn.gov.cn.gyfhk.cn http://www.morning.hjsrl.cn.gov.cn.hjsrl.cn http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn http://www.morning.fhrgk.cn.gov.cn.fhrgk.cn http://www.morning.lpnb.cn.gov.cn.lpnb.cn http://www.morning.cxryx.cn.gov.cn.cxryx.cn http://www.morning.saletj.com.gov.cn.saletj.com http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn http://www.morning.wdpt.cn.gov.cn.wdpt.cn http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn