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

网站开发 纠纷网站建站教程

网站开发 纠纷,网站建站教程,哪个网站做3d模型,wordpress 制作微信小程序先看歧义现象 值为null 未传递此属性 所以此时如何区分null 时传递进来的的null,还是属性的默认值null? 引入方案 引入过滤器,中间截获requestBodyData并保存到HttpServletRequest,业务层从HttpServletRequest 获取到requestBodyData辅…

先看歧义现象

值为null
在这里插入图片描述

在这里插入图片描述
未传递此属性
在这里插入图片描述
在这里插入图片描述
所以此时如何区分null 时传递进来的的null,还是属性的默认值null?

引入方案

引入过滤器,中间截获requestBodyData并保存到HttpServletRequest,业务层从HttpServletRequest 获取到requestBodyData辅助判断此属性为未传递还是值为null

第1步:定义并注册过滤器

自定义过滤器截获requestBodyData并保存到HttpServletRequest

import com.practisesvr.utils.http.FilterHttpServletRequest;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.GenericFilterBean;import java.io.IOException;@Component
public class RequestCheckFilter extends GenericFilterBean {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.err.println("***RequestHeaderCheckFilter.doFilter.start***");if (!(request instanceof HttpServletRequest)) {throw new IllegalStateException("Expected HttpServletRequest");}HttpServletRequest httpRequest = (HttpServletRequest) request;FilterHttpServletRequest filterHttpRequest = new FilterHttpServletRequest(httpRequest);String body = filterHttpRequest.getBody();filterHttpRequest.setAttribute("requestBodyData", body);// 继续执行filter链chain.doFilter(filterHttpRequest, response);System.err.println("***RequestHeaderCheckFilter.doFilter.end***");}
}

[Ref: 过滤器使用到 HttpServletRequestWrapper 参考如下 ] What is HttpServletRequestWrapper does?

注册过滤器

@Configuration
public class AppConfig {@Beanpublic FilterRegistrationBean<RequestCheckFilter> requestCheckFilterRegistration() {FilterRegistrationBean<RequestCheckFilter> registration = new FilterRegistrationBean<>();registration.setFilter(new RequestCheckFilter());// 可以设置过滤器名称registration.setName("requestCheckFilter");// 设置拦截规则registration.addUrlPatterns("/*"); // 拦截所有请求// 设置过滤器执行顺序,默认为0,数值越小优先级越高registration.setOrder(2);return registration;}
}

第2步:从HttpServletRequest 获取到requestBodyData

public class RequestIUtils {/*** 从当前请求上下文中获取并解析请求体数据,将其转换为Map类型对象.** @return 如果成功获取到请求体数据并转换成功,则返回一个包含请求体内容的Map对象;* 若RequestAttributes不存在或请求体数据为空,则返回一个新的空HashMap对象。*/public static Map<String, Object> getRequestBodyBody() {RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();if (requestAttributes == null) {return new HashMap<>();}HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();Object requestBody = request.getAttribute("requestBodyData");if (requestBody == null) {return new HashMap<>();}return JsonUtils.jsonToT(requestBody.toString(), Map.class);}
}    

第3步:业务层使用requestBodyData辅助判断

@Override
public Student update(Student student) {Map<String, Object> requestBody = RequestIUtils.getRequestBodyBody();Student stu = new Student();stu.setId(student.getId());stu.setUsername(student.getUsername());stu.setPassword(student.getPassword());stu.setAge(student.getAge());stu.setHeight(student.getHeight());stu.setGender(student.getGender());// 使用方式if (requestBody.containsKey("classId")){stu.setClassId(student.getClassId());}stu.setIsDelete(student.getIsDelete());this.studentsMapper.update(student);return this.queryById(student.getId());
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

http://www.ritt.cn/news/11178.html

相关文章:

  • 那个网站做租赁好seo服务 文库
  • 做苗木网站哪个公司好百度推广服务
  • 最好的网站推广百度网盘资源免费搜索引擎入口
  • 做网站购买什么百度官网电话
  • 怎么做网站icp备案google免登录网页版
  • 众车网是哪家公司网站北京seo编辑
  • 建一个类似b站的网站多少钱3seo
  • 在哪个网站做推广好seo最强
  • 中国疫情彻底结束了吗八宿县网站seo优化排名
  • 乌鲁木齐做四维彩超哪凤凰L网站成都关键词排名推广
  • 一般网站的宽度是多少像素湖北网站seo策划
  • 自己做游戏网站学什么网络推广靠谱吗
  • 北郊网站建设公司适合推广的app有哪些
  • 邯郸手机建站价格百度一下就知道百度首页
  • 做淘宝客网站哪个好用漯河seo公司
  • 做影视会员网站厦门seo管理
  • 建筑模板的规格广州网站排名优化公司
  • wordpress建站视频品牌推广策略分析
  • 买高端品牌网站建设郑州seo优化顾问
  • wordpress 注释问题seo内容优化
  • 网站设计的原则不包括国内最好用免费建站系统
  • 质量可靠的小企业网站建设竞价推广出价多少合适
  • 喀什做网站如何推广app赚钱
  • 网站互点可以自己点么上海网站seo快速排名
  • 现在的网络怎么做网站广告竞价
  • 做网站要注册那些商标网站友情链接有什么用
  • 烟台网站建设设计开发百度seo和sem
  • html可以做网站后台吗免费seo网站自动推广
  • 丽水专业网站建设价格广州品牌seo推广
  • 扬州做网站的网络公司软件开发公司联系方式