如何在Spring Boot Web应用程序中将对象或数据从一个控制器传递到另一个控制器?

时间:2019-02-10 15:14:07

标签: spring spring-boot

我想从用户输入中获取一些数据,然后在controllers之间进行传输。但是出于安全考虑,此传输必须在后台 中进行。 。我不想在URL上发送参数。

我想将在page1控制器中创建的用户对象发送到page2。 我为此使用了模型方法,但没有成功。

@Controller
public class DemoController {
...
..
.

@GetMapping("/page1")
public String page1(Model model) {

    User user = new User();
    user.setName("TestName");
    user.setSurname("TestSurname");
    user.setMail("xyzabc@gmail.com");

    model.addAttribute("user", user);
    return "redirect:/page2";
}

@GetMapping("/page2")
public String page2(@ModelAttribute("user") User user, Model model) {

    System.out.println(user.toString());
    return "page2";
}

.
..
...
}

如何转移对象?

1 个答案:

答案 0 :(得分:1)

此问题有2个解决方案:

  

解决方案1:将对象存储在session

代码示例:

@GetMapping("/page1")
public String page1(Model model, HttpSession session) {
   ...

   session.setAttribute("user", user);
   return "redirect:/page2";
}

@GetMapping("/page2")
public String page2(Model model, HttpSession session) {
    User user = null;
    if (session.getAttribute("user") != null) {
        user = (User) session.getAttribute("user");
        System.out.println(user.toString());
    }
    return "page2";
}
  

解决方案2:使用转发而不是重定向

代码示例:

@GetMapping("/page1")
public String page1(Model model) {
    ...
    model.addAttribute("user", user);
    return "forward:/page2";
}