当我尝试在春季启动中检索会话数据时,它总是给我一个null值。会话属性数据以BLOB文件的形式存储在数据库中。您可以在下面的照片中看到会话属性表。
这是mysql数据库中SPRING__SESSION_ATTRIBUTE表的照片
这是我用来存储会话数据的代码
@PostMapping("/login")
public String login(@RequestBody LoginModel loginModel, HttpServletRequest request) {
List<String> messages = (List<String>)request.getSession().getAttribute("IS_LOGGED_IN");
if (messages == null) {
messages = new ArrayList<>();
request.getSession().setAttribute("IS_LOGGED_IN", messages);
}
messages.add("hellooooo");
request.getSession().setAttribute("IS_LOGGED_IN", messages);
}
这是我用来检索会话数据的代码。
@GetMapping("/check")
public void process(HttpSession session) {
List<String> messages = (List<String>) session.getAttribute("IS_LOGGED_IN");
System.out.println(messages);
}
这是我在application.properties文件中使用的代码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test2?autoReconnect=true&useSSL=false
spring.datasource.username = root
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.sql.init.mode=always
spring.h2.console.enabled=true
spring.session.store-type=jdbc
spring.session.jdbc.initialize-schema=always
spring.session.timeout.seconds=900
server.port=9092
这是mysql数据库中SPRING_SESSION表的照片
选项1-使用此HttpSession HttpSession作为参数来获取和设置属性。
其次,如果您使用的是Springboot+安全性,则可用于检查任何与登录相关的其他选项是通过
public String login(Principal principal)
如果没有登录用户,它会给你null,并通过-为你提供登录id
principal.getName();
以及使用模型模型对象来传输数据。
model.addAttribute("data", data);