SpringMVC处理请求的Controller可以在请求范围内保存属性。
项目结构图 如下:

1.使用Model保存属性。
创建Users实体类如下。
package com.entity;
public class Users {
private String username;
private String password;
public Users() {
}
public Users(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Users{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
UsersController如下:
package com.controller;
import com.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("users")
public class UsersController {
//处理登录请求。
@RequestMapping(value="login",method ={RequestMethod.GET,RequestMethod.POST})
public String login(Users user, Model model){
System.out.println("执行用户登录...");
System.out.println(user);
model.addAttribute("loginUser",user);
return "login_success";
}
//以上代码完全等同于使用HttpServletRequest方式。
/*
@RequestMapping(value="login",method ={RequestMethod.GET,RequestMethod.POST})
public String login(Users user, HttpServletRequest request){
System.out.println("执行用户登录...");
System.out.println(user);
//model.addAttribute("loginUser",user);
request.setAttribute("loginUser",user);
return "login_success";
}*/
//使用ModelAndView方式保存属性
/*
public ModelAndView login(Users user){
ModelAndView mv = new ModelAndView();
System.out.println("执行用户登录...");
System.out.println(user);
mv.setViewName("login_success");
mv.addObject("loginUser",user);
return mv;
}*/
}
login_success.jsp视图如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<h1>登录成功</h1>
<hr>
<div>
用户名:${loginUser.username}<br>
密码:${loginUser.password}<br>
</div>
</body>
</html>
使用PostMan测试登录请求。


2.使用@ModelAttribute注解
UsersController改写如下:
package com.controller;
import com.entity.Users;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("users")
public class UsersController {
@RequestMapping(value="login",method ={RequestMethod.GET,RequestMethod.POST})
public String login(@ModelAttribute("loginUser") Users user){
System.out.println("执行用户登录...");
System.out.println(user);
return "login_success";
}
}
使用PostMan测试登录请求。


小结: Controller在处理请求的同时可以在web的request范围保存属性,但是考虑到目前前后端分离开发的大趋势,这样做的意义已经不大,大家仅仅需要基本了解即可。