一.问题描述:
在给app做token验证的时候,要先在拦截器中获取到提交的参数并进行判断,如果携带的token不为空并且验证成功就放行,否则提示token验证失败。但是在interceptor中获取了参数之后,在controller中就获取不到参数了,因为在request中获取post方式提交的参数是从流中获取的,并且只能获取一次。
二.解决办法。
1.将参数存放到本地线程中(threadlocal)中。
2.是用servlet中的HttpServletRequestWrapper对request进行包装。
三.具体实现
@1将参数存放到本地线程(开发环境为jfinal)
1.新建一个类实现interceptor接口重写intercept方法
2.配置拦截器
jfinal拦截器的配置方式
3.threadlocal工具类
将参数存放到本地线程(开发环境为springmvcl)
1.新建一个拦截器实现HandlerInterceptor接口重写preHandle(),postHandle(),afterCompletion()。
preHandle()在进入方法之前进行拦截。
postHandle()在进入方法之后,视图渲染之前拦截。
afterCompletion()在请求方法之后进行拦截。
将参数存放到本地线程的方式,controller中获取参数的方式为:
@2使用HttpServletRequestWrapper对request进行包装
1.创建拦截器实现HandlerInterceptor 接口
2.拦截器的配置和上面的方式一样,根据框架选择相应的配置。
3.croller中接受参数的方式