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

怎么做网站的软文推广网站建设运营的成本

怎么做网站的软文推广,网站建设运营的成本,青岛外贸网站制作,四会建设局网站问题描述 想在postHandle方法里执行addHeader方法来补充一些Header信息#xff08;如分页信息#xff09;#xff0c;但是最后执行却未如期显示 拦截器源码 import com.zhangziwa.practisesvr.utils.response.ResponseContext; import jakarta.servlet.http.HttpServletR…问题描述 想在postHandle方法里执行addHeader方法来补充一些Header信息如分页信息但是最后执行却未如期显示 拦截器源码 import com.zhangziwa.practisesvr.utils.response.ResponseContext; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;Component public class ResponsePostInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {# 想在postHandle方法里执行addHeader方法来补充一些Header信息HttpHeaders headers ResponseContext.getHeaders();if (headers ! null) {headers.forEach((key, values) - values.forEach((value) - {if (!response.getHeaderNames().contains(key)) {response.addHeader(key, value);}}));}if (ResponseContext.getResponseCode() ! null) {response.setStatus(ResponseContext.getResponseCode().value());}}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {ResponseContext.clear();} }Controller 构造初始的HttpHeaders RequestMapping(value /getAllStudents4, method RequestMethod.GET)public ResponseEntityListStudent getAllStudents4() {System.err.println(***Controller.getAllStudents4***);ListStudent students userService.listStudents3(1, 5);HttpHeaders httpHeaders new HttpHeaders();httpHeaders.add(test, test);return ResponseEntity.ok().headers(httpHeaders).contentType(MediaType.APPLICATION_JSON).body(students);}postHandle 补充HttpHeaders的代码正常执行 执行结果却没有补充的HttpHeaders 原因分析 [Ref] springboot设置返回的response中的header解决办法 解决方案 方案1postHandle追加HttpHeaders的逻辑前移到preHandle方法 Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.err.println(***ResponsePostInterceptor.preHandle***);response.addHeader(test1, test1);return true;}验证可行 弊端 preHandle执行时机是在进入Controller层之前如果要追加的HttpHeaders是在Controller层里计算得到的则此方案完全用不上 方案2使用ResponseBodyAdvice ControllerAdvice Further Reading ControllerAdvice 源码HandlerInterceptor 去除补充HttpHeaders逻辑 import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;Component public class ResponsePostInterceptor implements HandlerInterceptor {//在Controller执行之前调用如果返回falsecontroller不执行Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.err.println(***ResponsePostInterceptor.preHandle***);return true;}//controller执行之后且页面渲染之前调用Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.err.println(***ResponsePostInterceptor.postHandle***);}//页面渲染之后调用一般用于资源清理操作Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.err.println(***ResponsePostInterceptor.afterCompletion***);ResponseContext.clear();} }源码ResponseBodyAdvice 补充HttpHeaders逻辑 import org.springframework.core.MethodParameter; import org.springframework.http.HttpHeaders; 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.ResponseBodyAdvice;import static java.util.Objects.nonNull;ControllerAdvice public class ResponsePostAdvice implements ResponseBodyAdvice {Overridepublic boolean supports(MethodParameter returnType, Class converterType) {System.err.println(***ResponsePostAdvice.supports***);return true;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class clazz, ServerHttpRequest request, ServerHttpResponse response) {System.err.println(***ResponsePostAdvice.beforeBodyWrite***);HttpHeaders headers response.getHeaders();// 分页信息添加到ServerHttpResponseHttpHeaders headersContext ResponseContext.getHeaders();// 实现方式1: 一次性梭哈 重复项新值覆盖旧值 // if (nonNull(headersContext) !headersContext.isEmpty()) { // headers.addAll(headersContext); // }// 实现方式1: 逐个补充 重复项不添加if (nonNull(headersContext) !headersContext.isEmpty()) {headersContext.forEach((key, values) - values.forEach((value) - {headers.addIfAbsent(key, value);}));}// 状态码添加到ServerHttpResponseif (nonNull(ResponseContext.getResponseCode())) {response.setStatusCode(ResponseContext.getResponseCode());}return body;} }验证好用 补充执行顺序为 ResponseBodyAdvice → HandlerInterceptor ***ResponsePostInterceptor.preHandle*** ***Controller.getAllStudents4*** ***ResponsePostAdvice.supports*** ***ResponsePostAdvice.beforeBodyWrite*** ***ResponsePostInterceptor.postHandle*** ***ResponsePostInterceptor.afterCompletion***
http://www.zqtcl.cn/news/199658/

相关文章:

  • 商业门户网站是什么意思哪家培训机构学校好
  • 青岛企业网站制作seo排名优化培训网站
  • 2018做网站还是app上海搜索seo
  • 网站建设用模板好吗罗湖网站制作费用
  • 网站图片延时加载app推广视频
  • 郑州设计师网站个人搭建网站要多少钱
  • 网站制作成品下载wordpress怎么更改样式
  • 河北省城乡和建设厅网站首页网站维护属于什么部门
  • 西安建网站公司哪家好网站导航条设计欣赏
  • 张家港网站网络优化济南网站建设0531soso
  • 关于网站的建设深圳搜索优化排名
  • 网站建设的布局建设通破解vip
  • 怎样做公司网站介绍网站百度排名优化
  • 广州网站建设工作室招聘wordpress在哪里设置编辑器
  • 苏州网站建设功能大宗交易平台软件
  • 无域名网站 能否被百度品牌营销优化
  • 做爰全过程免费的网站视频做网站视频背景
  • 网站布局设计分析特点手机网站设计欣赏网站
  • 建设网站对服务器有什么要求灌南县规划局网站一品嘉苑规划建设
  • 常平镇仿做网站wordpress教程 菜单
  • 大气的企业网站做网站服务怎么赚钱
  • 如何用网站做淘宝客网易企业邮箱怎么修改密码
  • 白酒网站设计wordpress增加网址大全
  • 网站上图片可以做商业作品吗成都十大景观设计公司
  • 自助建站网站哪个好2017织梦网站怎么做seo
  • 佛山新网站建设咨询做业精灵官方网站
  • 大庆网站设计费用asp网站仿制
  • 革吉网站建设网页游戏中心大全
  • 好的网站特点京东物流网站建设特点
  • 昆明企业自助建站系统网站建设技术交流