一.前言
由于业务需要,在网上找了很久得到了这两种方式。本文代码偏少,主要讲解一下怎么传,如何接收,也记录一下,以便之后查看。
二.Spring拦截器传递参数到controller
下面是我拦截器中的代码,preHandle中设置变量,然后在controller中得到 1,变量放在request请求域中,request.setAttribute(“getAttribute”, “getAttribute”); 2,变量放在全局Servlet Context中,request.getServletContext().setAttribute(“getServletContext”, “getServletContext”); 3,变量放在request的请求头中,在controller中在到请求头header中得到数据
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws RRException {
//把变量放在request请求域中,仅可以被这次请求,即同一个requerst使用
request.setAttribute("getAttribute", "getAttribute");
//放在全局的ServletContext中,每一个web应用拥有一个ServletContext,是全局对象,具体请百度
//把变量放在这里面,在之后什么地方都可以访问
request.getServletContext().setAttribute("getServletContext", "getServletContext");
//把自己的变量放在头部
reflectSetHeader(request, "header", "header");
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("拦截器之后输出ServletContext中保存的数据:"+request.getServletContext().getAttribute("getServletContext"));
}
//把自己想要的信息设置到header头部,就相当于是在request的请求头部添加一个键值对,保存自己的数据
private void reflectSetHeader(HttpServletRequest request, String key, String value){
Class |