SpringMvc---使用session将数据传输到页面上

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";
}
上一篇:SpringMVC拦截器


下一篇:首页:整合thymleaf渲染首页