@Controller
public class ActionChuanZhiController { @RequestMapping(value="/a1.html")
public String A(Model  m)
{
System.out.println("-------------AIndex-------------");
User u = new User();
u.setSname("admin");
u.setSage(20);
m.addAttribute("u", u);
m.addAttribute("name","james");
m.addAttribute("age",34);
return "redirect:/a2.html";

}

@RequestMapping(value="/a2.html")
public String B()
{
return "show";
}
}如何在B方法中,获取在A中设置的内容,或者A如何保存内容,B中可以直接获取?例如存一个变量或者对象,B中都可以获取不用session的情况下

解决方案 »

  1.   

    @SessionAttributes
      

  2.   

    不用session恐怕无法做到,因为spring的controller是单例的,url映射是方法级的,和Struts不一样,不要定义全局变量,有线程安全隐患。而且,你既然是redirect,request中的请求变量自然是获取不到了,forward不好么?
      

  3.   

    把A中设定的内容放到session里面,然后B从session里面拿。
      

  4.   

    这个可以的,你需要连接一些session的原理http请求是无状态的,就是说A,B其实是没有任何关系的,那么session是如何确定多个请求在一起的
    答案是在request中的cookies中,两个请求会有一摸一样的sessionid的值,你可以在A,B方法中加一个 HttpServletRequest 参数,debug就能看到那么你知道这个原理就简单了,你可以模拟session的这种思想,例如在A,B方法各加一个参数标识符,表明两者需要读取同一份数据
    ,然后在A中将标识符作为key,数据作为value存在一个全局map,在B中通过这个标识符取出来