在 SpringMVC 中,我们可以使用 Servlet API 中的 HttpSession 接口,向 session 域对象共享数据。session 域对象是一个服务器端的对象,用于在客户端和服务器端之间共享数据。它是一个类似于 Map 的对象,可以存储任意类型的数据。
获取 HttpSession 对象
在 SpringMVC 中,我们可以通过 HttpServletRequest 对象获取 HttpSession 对象。HttpServletRequest 对象是在每次请求时自动创建的,它代表了一个客户端发起的请求。我们可以通过调用它的 getSession() 方法获取 HttpSession 对象。如果客户端没有提供 session ID,该方法将创建一个新的 HttpSession 对象,并返回它的引用。
下面是一个示例,演示如何在 SpringMVC 中获取 HttpSession 对象:
代码语言:javascript复制@Controller
public class MyController {
@GetMapping("/hello")
public String sayHello(HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("message", "Hello, world!");
return "hello";
}
}
在上面的示例中,我们使用了一个名为 "request" 的参数,它的类型是 HttpServletRequest。我们调用了 getSession() 方法获取 HttpSession 对象,然后使用 setAttribute() 方法向 session 域对象中添加了一个名为 "message" 的属性,它的值为 "Hello, world!"。
从 HttpSession 对象中获取数据
在 SpringMVC 中,我们可以通过 HttpSession 对象的 getAttribute() 方法获取 session 域对象中存储的数据。如果该属性不存在,该方法将返回 null。
下面是一个示例,演示如何从 HttpSession 对象中获取数据:
代码语言:javascript复制@Controller
public class MyController {
@GetMapping("/hello")
public String sayHello(HttpServletRequest request) {
HttpSession session = request.getSession();
String message = (String) session.getAttribute("message");
System.out.println(message);
return "hello";
}
}
在上面的示例中,我们使用了一个名为 "request" 的参数,它的类型是 HttpServletRequest。我们调用了 getSession() 方法获取 HttpSession 对象,然后使用 getAttribute() 方法获取名为 "message" 的属性的值。如果该属性不存在,该方法将返回 null。
从 HttpSession 对象中删除数据
在 SpringMVC 中,我们可以通过 HttpSession 对象的 removeAttribute() 方法从 session 域对象中删除属性。
下面是一个示例,演示如何从 HttpSession 对象中删除数据:
代码语言:javascript复制@Controller
public class MyController {
@GetMapping("/hello")
public String sayHello(HttpServletRequest request) {
HttpSession session = request.getSession();
session.removeAttribute("message");
return "hello";
}
}
在上面的示例中,我们使用了一个名为 "request" 的参数,它的类型是 HttpServletRequest。我们调用了 getSession() 方法获取 HttpSession 对象,然后使用 removeAttribute() 方法删除名为 "message" 的属性。