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

企业网站搭建方案东营网格员招聘

企业网站搭建方案,东营网格员招聘,网站开发需要的技能,国内人做韩国网站一般都卖什么问题回溯 2023年Q2某日运营反馈一个问题#xff0c;商品系统商家中心某批量工具模板无法下载#xff0c;导致功能无法使用#xff08;因为模板是动态变化的#xff09; 商家中心报错#xff08;JSON串#xff09;#xff1a; {code:-1,msg:商品系统商家中心某批量工具模板无法下载导致功能无法使用因为模板是动态变化的 商家中心报错JSON串 {code:-1,msg:失败}负责的同事看到失败后立即与我展开讨论因为不是关键业务所以不需要回滚修复即可我们发现新功能模板下载的代码与之前的代码有所不同恰好之前的功能又可以正常运行所以同事对现有代码进行改造然后预发布测试完成后再次上线。 其他业务代码 /*** 模板下载*/ RequestMapping(/doBatchWareSetAd) public void doBatchWareSetAd(RequestParam MultipartFile file, HttpServletResponse response) {wareBatchBusiness.doBatchWareSetAd(file, response, getLongOrgCode(), getCurrentUserPin(), getCurrentUserId()); }问题业务代码 /*** 模板下载*/ RequestMapping(/doBatchWareSetAdDemo) ResponseBody public MapString, Object doBatchWareSetAd(RequestParam MultipartFile file, HttpServletResponse response) {return wareBatchBusiness.doBatchWareSetAd(file, response, getLongOrgCode(), getCurrentUserPin(), getCurrentUserId()); }上线的结果是仍然无法使用。 其实也正常因为两种代码在预发布都可以正常运行在线上出错只可能是因为其他原因只不过我们不了解底层原理害怕它 “可能” 有问题罢了最终查询得到的结论是权限系统管理员在线上环境没有给我们配置相应的文件导致请求为空导致请求失败。 探索 ResponseBody 与主动写入流的关系 我们都知道 ResponseBody 注解可以帮助我们把返回对象转化为JSON方便展示和交互。 那它到底是如何工作的呢请看下面的讲解 代码案例1 RequestMapping(/test1) ResponseBody public MapString, String test1(HttpServletResponse response) {MapString, String map new HashMap();map.put(1, 1);return map; }// 响应 JSON报文跟代码发现其核心处理类为RequestResponseBodyMethodProcessor.java 方法org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor#handleReturnValue 会处理其相关返回值。 真正的核心处理方法org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor#writeWithMessageConverters 关键DEBUG记录如图所示 后续内容可以想象肯定还有地方去把流按照指定的HEADER写入因为和本文无关所以不深究。 再来看代码案例2 RequestMapping(/test2) ResponseBody public MapString, String test2(HttpServletResponse response) throws IOException {MapString, String map new HashMap();map.put(1, 1);response.setContentType(application/vnd.ms-excel);response.setHeader(Content-Disposition, String.format(attachment; filename%s_%s.xls, Demo, System.currentTimeMillis()));OutputStream out response.getOutputStream();out.flush();out.close();return map; }// 响应 提示下载文件关键DEBUG源码截图 可以发现Spring对这种方式操作文件流视作异常情况然后抛出在后续逻辑中完成整个请求简单来说就是 ResponseBody 注解没起到任何作用。 因此答案呼之欲出当时功能不可用的罪魁祸首就是相关人员没有配置参数导致与写法没有任何关系。 结论与启发 结论 我们要相信自己的代码至少是要相信已经经过测试的代码。在委托他人或者自己配置环境参数如权限、ZK等每次都保证预发布和线上同时配置避免遗漏的情况。 启发 聊了这么多那我们这种类似场景的代码应该怎么写 既然主动写入流会解除ResponseBody的作用反之又能发挥它的作用那我们最佳方案是不是如下所示 RequestMapping(/test1) ResponseBody public MapString, String test1(HttpServletResponse response) {MapString, String map new HashMap();if (获取不到文件配置 true) {return map.put(msg, 获取不到文件配置);}response.setContentType(application/vnd.ms-excel);response.setHeader(Content-Disposition, String.format(attachment; filename%s_%s.xls, Demo, System.currentTimeMillis()));OutputStream out response.getOutputStream();out.flush();out.close();return map; }如此一来当发生预期之外的情况我们有非常明显的报错提示当正常时又可以完美实现功能妙哉我觉得~ 作者京东零售 柯贤铭 来源京东云开发者社区 转载请注明来源
http://www.pierceye.com/news/129406/

相关文章:

  • 哪里有做配音的兼职网站wordpress菜单图标特效
  • 怎样自创广告网站海南网站建设推广公司哪家好
  • 网站开发团队人员网站建设开票属于什么服务
  • 学做网站初入门教程上海网站建设 觉策动力
  • 丰台建站公司做一个企业网站需要哪些技术
  • 黑色网站模板怎么写app程序
  • 常州建设局网站首页网站开发需求文档模板带er图
  • 网站名称是否已被注册简单的个人主页网站制作
  • 太仓网站开发wordpress留言板
  • 大型营销型网站制作装饰画
  • 移动网站和定制网站个体户 做网站
  • 网站建设的计划书网站源码下载 用户注册
  • 培训网站项目ppt怎么做抖音服务商
  • 做一个网站需要多少钱大概费用wordpress 2017
  • 惠州网页模板建站天河建设网站外包
  • html变Wordpress网络营销优化培训
  • 上海网站建设hxwlkj新浪网站源代码
  • 网站如何做美工想做代理商去哪找项目
  • 佛山市品牌网站建设多少钱印度网站开发成本
  • 群晖 nas 做网站软件开发视频网站
  • 建设银行云南分行招聘网站wordpress 教程
  • 杭州知名的网站制作策略创建一个购物网站需要什么
  • 新乡网站seo优化vs做的网站怎么让局域网的看到
  • 做静态网站怎样让图片自己切换重庆互联网公司排名
  • 微网站需要什么郑州哪家专业做淘宝网站
  • 郑州机械网站制作seo专业优化公司
  • 专注苏州网站优化长沙有哪些知名网站
  • 成品网站货源1688免费推荐建设银行科技中心网站
  • 城乡建设部统计信息网站大学生创新创业大赛项目计划书
  • 河南省水利建设厅网站清溪镇网站仿做