@SessionAttributes:用于在session会话的多个请求中共享参数。
作用在哪?只能作用在类上!
index.jsp的内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <body> <a href="testSet?name=Tom&age=20">testSet</a><br/><br/> <a href="testGet">testGet</a><br/><br/> <a href="testDelete">testDelete</a><br/><br/> </body> </html>
success.jsp的内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>Title</title> </head> <body> <h3>${name}、${requestScope.age}</h3> <hr/> <h3>${sessionScope}</h3> </body> </html>说明1:JSP里有四个跟作用范围相关的内置对象:pageScope、requestScope、sessionScope各applicationScope。requestScope是最常用的一个。它们的内容可以采用类似这样的方式来获取:{sessionScope}、${requestScope}、${requestScope.age}等等。
如果要获取requestScope的属性,可以简写。比如${requestScope.age}可以简写成${age}。
说明2:${}这种方式叫EL表示式,使用前必须先设置isELIgnored="false",否则不生效!
HelloController.java的内容:
package cn.liuxingchang.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.bind.support.SessionStatus; @Controller @SessionAttributes({"name", "age"}) public class HelloController { @RequestMapping("/testSet") public String testSet(Model model, String name, Integer age) { model.addAttribute("name", name); model.addAttribute("age", age); return "success"; } @RequestMapping("/testGet") public String testGet(ModelMap modelMap) { String name = (String) modelMap.get("name"); Integer age = (Integer) modelMap.get("age"); System.out.println(name); System.out.println(age); return "success"; } @RequestMapping("testDelete") public String testDelete(SessionStatus sessionStatus) { sessionStatus.setComplete(); return "success"; } }说明:只有在testSet方法执行后,session里面才有name和age!在testDelete方法执行后,session就被清空了!