zoukankan      html  css  js  c++  java
  • 前端快速连续请求, 导致后台获取request错乱, 无法获取到header, 已解决

    原文链接:https://www.cnblogs.com/zizaiwuyou/p/13936567.html

    前几天我遇到一个问题, 在后端获取header内参数的一个方法出现了偶发的bug, 获取不到值

    之前是在controller父类中有一个保存request的方法, 如下

        @ModelAttribute
        public void setRequest(HttpServletRequest request) {
            this.request = request;
        }

    然后在获取时直接

        protected Integer getTeamId() {
            String teamIdStr = request.getHeader("teamId");
            //如果header中不存在teamId,则从参数中获取teamId
            if(StringUtils.isBlank(teamIdStr)){
                teamIdStr = request.getParameter("teamId");
            }
            return decryptTeamId(teamIdStr);
        }

    这样获取会偶尔获取不到

    解决方法:

    后来改了一下获取方式, 使用如下的方式获取request就好了

        protected Integer getTeamId() {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            String teamIdStr = request.getHeader("teamId");
            //如果header中不存在teamId,则从参数中获取teamId
            if(StringUtils.isBlank(teamIdStr)){
                teamIdStr = request.getParameter("teamId");
            }
            return decryptTeamId(teamIdStr);
        }

    主要是这两句

    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();

  • 相关阅读:
    常用编码格式算法
    js显示当前时间
    客户端和服务器端乱码问题
    常用的小技巧
    开发jsp中常用标签
    java中的反射
    java中的单例设计模式
    java中的枚举类
    关于继承时构造方法的问题
    TCP三次握手和四次握手全过程 为什么要三次握手而不是二次握手?
  • 原文地址:https://www.cnblogs.com/zizaiwuyou/p/13936567.html
Copyright © 2011-2022 走看看