下面是关于 SpringMVC 中 Model 与 Session 区别的完整攻略。
一、Model
在 SpringMVC 中,Model 是一个接口,用于将数据传递给 View 层。当控制器处理请求时,我们可以使用 Model 对象将数据传递给 View 层,从而完成数据的展示。
Model 接口的实现类是一个 Map 类型的对象,它可以存储任何类型的数据,并将这些数据传递给 View 层。在控制器处理请求时,我们可以将数据存储在 Model 对象中,例如:
@Controller
public class HomeController {
@GetMapping("/")
public String home(Model model) {
model.addAttribute("message", "Hello, World!");
return "home";
}
}
在上面的代码中,我们使用了 @GetMapping 注解来定义一个 Get 请求的处理方法,方法名为 home。在处理方法的参数列表中,我们注入了一个 Model 对象,这样就可以在方法体内使用 model.addAttribute 方法来将数据存储到 model 对象中。
在 View 层中,我们可以使用 Thymeleaf 模板引擎来访问这个 Model 对象中存储的数据,例如:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Home</title>
</head>
<body>
<h1 th:text="${message}"></h1>
</body>
</html>
在上面的代码中,我们使用了 Thymeleaf 的 th:text 属性来访问 model 中存储的 message 数据。
二、Session
Session 是一种服务器端的存储方式,它用于存储客户端的状态信息。在 SpringMVC 中,我们可以通过 HttpSession 对象来访问 Session 中的数据。
SpringMVC 通过将 HttpServletRequest 传递给控制器的方法来为我们注入 HttpSession 对象,例如:
@Controller
public class LoginController {
@PostMapping("/login")
public String login(HttpServletRequest request, Model model) {
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("admin".equals(username) && "123456".equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
return "redirect:/";
} else {
model.addAttribute("error", "Invalid username or password.");
return "login";
}
}
}
在上面的代码中,我们使用了 @PostMapping 注解来定义一个 Post 请求的处理方法,方法名为 login。在方法体中,我们从 HttpServletRequest 中获取了客户端提交的用户名和密码,并对其进行了验证。如果验证通过,我们就通过 HttpSession 对象将用户名存储到 Session 中,然后重定向到首页。
在 View 层中,我们可以通过 Thymeleaf 的 th:if 属性来判断当前用户是否已经登录,例如:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Login</title>
</head>
<body>
<div th:if="${session.username == null}">
<form action="/login" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
<p th:text="${error}" th:if="${error != null}"></p>
</div>
<div th:if="${session.username != null}">
<p th:text="'Welcome, ' + ${session.username}"></p>
</div>
</body>
</html>
在上面的代码中,我们使用了 Thymeleaf 的 th:if 属性来判断当前用户是否已经登录。如果没有登录,则显示登录表单和登录错误信息;如果已经登录,则显示欢迎信息。我们通过 ${session.username} 来访问 Session 中存储的用户名。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC中Model与Session的区别说明 - Python技术站