在昨天的代码中遇见一个问题,请求头是在过滤器进行拦截的,但是我想要在实现类中得到请求头中携带的值,我该怎么做?
这是过滤器中得到的参数,想要应用在全局
思路1:将这个参数存入redis,然后根据redis自带的set和get方法去取值,这里为大家提供一下redisUtis
public class RedisAPI { JedisPool jedisPool; Jedis jedis; public void setJedisPool(JedisPool jedisPool) { this.jedisPool = jedisPool; } public void set(String key, String value, Integer expireTime){ try { jedis = jedisPool.getResource(); jedis.setex(key,expireTime,value); } catch (Exception e) { e.printStackTrace(); } finally { jedisPool.returnResource(jedis); } } public void set(String key, String value){ try { jedis = jedisPool.getResource(); jedis.set(key,value); } catch (Exception e) { e.printStackTrace(); } finally { jedisPool.returnResource(jedis); } } public String get(String tokenString) { try { jedis = jedisPool.getResource(); return jedis.get(tokenString); } catch (Exception e) { e.printStackTrace(); } finally { jedisPool.returnResource(jedis); } return null; } }
思路2:将数据存入线程,在另一个线程去得到,这样会涉及到多线程和线程安全问题,不考虑,有兴趣的小伙伴可以去试试
思路3:图一可以看见数据是根据Http获取的,所以我们可以直接在requst中拿到数据,在需要得到数据的类中注入HttpServletRequest,我相信很多小伙伴会想着注入ServerHttpRequest但是注意在spring cloud框架中,ServerHttpRequest是不能直接注入的。
这样就能拿到值啦