spring在请求发起后动态修改请求参数

本文介绍了如何在Spring MVC中应对需要动态修改请求参数的需求。通过使用拦截器和过滤器,特别是过滤器,重写HttpServletRequestWrapper的方法,实现在请求发起后动态添加登录参数。该方法解决了当接口需要统一且部分需要登录验证时,无法仅用token注解注入用户参数的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到了一个需求,由于需要封装一个统一的接口,用正则做路劲匹配,那么需要登录和不需要的登录的action都写在了一起。
于是乎,就不能用简单的一个token注解来完成注入用户参数的事情。而是需要根据是否被登录拦截器拦截(也就是是否需要登录)来判断以及动态的添加登录的参数;

@RequestMapping(value = { "/**/{serverID:*.do)
public Object service(@PathVariable("serviceId") String serviceId, @RequestParam Map<String, Object> map, HttpServletRequest request) {
	return map;
}

这里需要动态的往Map里添加参数
原来考虑过在拦截器中取出这个参数,但是拦截器中取出的参数无法修改。
@RequestParam 参数取值是根据HttpServletRequestWrapper中对应方法取值,那么我们的思路就可以定位到重写这个方法,然后用过滤器将请求定位到我们重写的HttpServletRequestWrapper中。
下面贴代码

/**
 * @author zhangmj
 * 2019年8月30日
 * 上午10:31:35
 */
public class TokenRequestWrapper extends HttpServletRequestWrapper{

    private Logger logger = LoggerFactory.getLogger(this.getClass());
    
    private Map<String, String[]> params = new HashMap<Str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值