SpringMvc---使用session将数据传输到页面上
1、先放上接收数据的jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
原生的:${type}
Hello ${requestScope.type}.
Hello ${sessionScope.type}.
</body>
</html>
2、通过servlet去读取session
2.1、普通方式传递数据
这种方法有参数的强耦合,不建议使用。
因为要将 HttpSession 参数写在方法上,所以叫强耦合,因为每一次你请求时都得带着session参数。
@RequestMapping("/servletApi/session")
public String session01(HttpSession session){
session.setAttribute("type","servletApi-session");
return "main";
}
2.2、使用Autowired的方式传递数据(推荐使用)
session参数可全局使用
@Autowired
private HttpSession session;
@RequestMapping("/autowired/session")
public String session02(){
session.setAttribute("type","autowired-session");
return "main";
}
3、通过springMvc提供的注解去读取session
3.1、@SessionAttributes
用在类上面的,写入session的。
当我们在model中设置了一个参数的时候,会将model里面的参数复制一份放到session中(model中复制一份覆盖掉session中的)。
如果下一次请求model没有,model也会将session中的值复制一份放到model中(session中复制一份覆盖掉model中的)。
依赖于方法的model。
@SessionAttributes("type")
public class DAMController {
@RequestMapping("/modelAndView")
public ModelAndView map(){
ModelAndView modelAndView = new ModelAndView("main");
modelAndView.addObject("type","modelAndView");
return modelAndView;
}
}
3.2、@SessionAttribute
用在参数上面的,读取session的。
可以获取到上一个放进去的相应参数。
@RequestMapping("/annotation/session")
public String session03(value = "type",required = false) String type){
System.out.println(type);
return "main";
}