Spring BootでHTTPセッションを使う方法は3通りあるらしい。その時の備忘録φ(..)メモメモ
- セッション属性(@SessionAttribute)をつかう
- セッションスコープBeanをつかう
- Http Sessionを直接つかう
セッション属性(@SessionAttribute)をつかう
- 同一Controller内で完結する場合は、セッション属性をつかう
- セッション属性で指定したクラスのオブジェクトをHTTPセッション内で管理してくれる
@Controller @RequestMapping(value = "/user/") @SessionAttributes(types = UserForm.class) public class UserAddController { @ModelAttribute("userForm") public UserForm setupForm() { return new UserForm(); } @RequestMapping(path = "/add", method = RequestMethod.GET) public String index(Model model) { return "user-add"; } @RequestMapping(path = "/add", params = "redo", method = RequestMethod.POST) public String redo(Model model) { return index(model); } @RequestMapping(path = "/add", params = "confirm", method = RequestMethod.POST) public String confirm(@Validated UserForm form, BindingResult result, Model model) { if (result.hasErrors()) return index(model); return "user-add-confirm"; } @RequestMapping(path = "/add", params = "complete", method = RequestMethod.POST) public String add(@Validated UserForm form, BindingResult result, Model model) { if (result.hasErrors()) return index(model); return "redirect:/user/add?complete"; } @RequestMapping(path = "/add", params = "complete", method = RequestMethod.GET) public String complete(Model model, SessionStatus sessionStatus) { sessionStatus.setComplete(); return "user-add-complete"; } }
セッションスコープBeanをつかう
- 複数のController間で共有したい場合に使う
@Component @Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) public class UserForm implements Serializable { // セッションスコープで使いたいBean }
@Controller @RequestMapping("/user/add") public class UserAddController { @Autowired UserForm userForm; } @Controller @RequestMapping("/user/edit") public class UserEditController { @Autowired UserForm userForm; }
Http Sessionを直接つかう
- Http Sessionを直接使いたい場合は、ControllerでHttpSessionをインジェクトして使う
@Controller public class FooController { @Autowired HttpSession session; @RequestMapping(value = "/save", method = RequestMethod.GET) public String save() { // 保存 session.setAttribute("data", "保存したいデータ"); return "index" } @RequestMapping(value = "/load", method = RequestMethod.GET) public String load() { String data = session.getAttribute("data"); // 取得 session.invalidate(); // クリア return "index" }
以上!!
参考になる書籍

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
- 作者: 株式会社NTTデータ
- 出版社/メーカー: 翔泳社
- 発売日: 2016/07/21
- メディア: 大型本
- この商品を含むブログ (1件) を見る

- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2017/12/20
- メディア: 単行本
- この商品を含むブログを見る

- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2018/01/30
- メディア: 単行本
- この商品を含むブログを見る

はじめてのSpring Boot―スプリング・フレームワークで簡単Javaアプリ開発 (I・O BOOKS)
- 作者: 槙俊明
- 出版社/メーカー: 工学社
- 発売日: 2016/09/01
- メディア: 単行本
- この商品を含むブログ (1件) を見る