对springmvc入参进行修改的几个方法 - 类似于修改request里的paramter
博客专区 > 龙鸣 的博客 > 博客详情
对springmvc入参进行修改的几个方法 - 类似于修改request里的paramter
龙鸣 发表于2年前
对springmvc入参进行修改的几个方法 - 类似于修改request里的paramter
  • 发表于 2年前
  • 阅读 1357
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

摘要: 主要为了方便注入自定义的一些参数,不需要每次去调用工具类获取,向@RequestParam 那样去获取就行

场景: springmvc 的请求入参可以用@RequestParam 、@ModelAttribute等来自动获取,但现在有个需求去根据请求参数里的token去获取自定义的Session,然后可以绑定到方法的参数上,而不需要用静态方法去自己获取。

修改前: 

@RequestMapping()
public String test(@RequestParam(requeired = false) String token)
{
    /*意味着每个需要session的地方都需要自己手动获取*/
    Session session =SessionUtil.getSession(token);
}
修改后:
@RequestMapping()
public String test(@ModelAttribute("session")Session session)
{
    /*这里可以直接调用*/
    session.doSomeThing();
}
具体方法有三个(我目前所能找到的):

1. 

@ModelAttribute
    public void getSession(HttpServletRequest request,Model model)
    {
        String token = request.getParameter(GlobalStatic.token_name);
        if (Strings.isNullOrEmpty(token))
        {
            model.addAttribute("session", null);
        }
        else
        {
            System.out.println((String)token);
            model.addAttribute("session", 
            sessionFactory.getSession(token));
        }
    }
这个bind方法可以放在父类Controller里面,你可以根据需求处理没有token的情况。还有就是这个方法还有一些变化,可以参照:
http://blog.csdn.net/li_xiao_ming/article/details/8349115

2.

<mvc:annotation-driven >
		修改request过来的参数,可以实现类似于往parameter里添加参数的功能
		<mvc:argument-resolvers>
			<bean class="TokenHandler"></bean>
		</mvc:argument-resolvers>
	</mvc:annotation-driven>

这里可以配置paramHandler来处理入参,具体代码如下:


public class TokenHandler implements WebArgumentResolver {
    @Override
    public Object resolveArgument(MethodParameter methodParameter,NativeWebRequest webRequest) throws Exception {
        if (methodParameter.getParameterName().equals("token"))
        {
            return new Session();
        }
        return null;
    }
}



上面实现WebArgumentResolver接口,如果有token就会返回session,没有就返回null,可以根据自己业务修改。



3.使用HttpServletRequestWrapper来包装request,然后在filter的chain.dofilter里包装下。





共有 人打赏支持
粉丝 3
博文 10
码字总数 4319
×
龙鸣
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: