길민호(ethan.mino)
코딩수첩
길민호(ethan.mino)
전체 방문자
오늘
어제
  • 분류 전체보기 (215)
    • Computer Science (0)
    • Web (6)
      • CSS (0)
      • HTML (0)
    • Node.js (0)
    • Javascript (2)
    • Java (46)
      • Spring (27)
      • Jsp (0)
    • C\C++ (2)
    • Programming (0)
    • AI (0)
    • Database (7)
    • Git (5)
    • Algorithm (119)
      • Stack (0)
      • Queue (0)
      • Linked List (0)
      • Sort (0)
      • Simulation (27)
      • Recursion (0)
      • Backtracking (4)
      • Two Pointer (3)
      • Dynamic Programming (19)
      • Greedy (10)
      • Graph (3)
      • Dijkstra (1)
      • BFS\DFS (8)
      • Floyd (1)
      • MST (4)
      • Tree (4)
      • Binary Search (8)
      • Binary Search Tree (4)
    • IntelliJ (4)
    • Vscode (0)
    • Operating System (0)
    • 후기 (3)
    • 성장일지 (13)
    • 스터디 (7)
    • 설치 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ㅡ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
길민호(ethan.mino)

코딩수첩

Java/Spring

Spring MVC에서 Session 사용하기

2020. 7. 17. 20:24

1. @SessionAttributes & @ModelAttribute

  • @SessionAttributes 파라미터로 지정된 이름과 같은 이름이 @ModelAttribute에 지정되어 있을 경우 메소드가 반환하는 값은 세션에 저장된다.
  • 아래의 예제는 세션에 값을 초기화 하는 목적으로 사용되었다. (User 객체가 "user"라는 이름으로 세션에 저장됨)
@SessionAttributes("user")
public class LoginController{
    @ModelAttribute("user")
    public User setUpUserForm(){
        return new User();
    }
}
  • @SessionAttributes의 파라미터와 같은 이름이 @ModelAttribute에 있을 경우 세션에 있는 객체를 가져온 후, 클라이언트로 전송받은 값을 설정한다.
@Controller
@SessionAttributes("user")
public class LoginController{
...
    @PostMapping("/dologin")
    public String doLogin(@ModelAttribute("user") User user, Model model){
        ...
    }
}
  • 메소드에 @SessionAttribute가 있을 경우 파라미터로 지정된 이름으로 등록된 세션 정보를 읽어와서 변수에 할당한다.
@GetMapping("/info")
public String userInfo(@SessionAttribute("user" User user)){
    ...
    ...
    return "user";
}
  • SessionStatus는 컨트롤러 메소드의 파라미터로 사용할 수 있는 스프링 내장 타입이다. 이 오브젝트를 이용하면 현재 컨트롤러의 @SessionAttributes에 의해 저장된 오브젝트를 제거할 수 있다.
@Controller
@SessionAttributes("user")
public class UserController{
    ...
    @RequestMapping(value = "/user/add", method = RequestMethod.POST)
    public String submit(@ModelAttribute("user") User user, SessionStatus sessionStatus){
        ...
        sessionStatus.setComplete():
        ...
    }
}
  • modelAttribute 속성으로 지정된 이름의 객체를 세션에서 읽어와서 form 태그로 설정된 태그에 값을 설정한다.
<form:form action="login" method = "post" modelAttribute="user">
    Email : <form:imput path="email" /> <br>
    Password : <form:password path = "password"/> <br>
    <button type = "submit">Login</button>
<form:form>

 

참조 URL

  • https://www.edwith.org/boostcourse-web/lecture/16803/

'Java > Spring' 카테고리의 다른 글

아큐먼트 리졸버란?  (1) 2020.07.17
인터셉터(Interceptor)란?  (0) 2020.07.17
DispatcherServlet, MVC 설정  (0) 2020.07.14
Spring JDBC  (0) 2020.07.12
Spring IoC/DI 컨테이너  (0) 2020.07.11
    'Java/Spring' 카테고리의 다른 글
    • 아큐먼트 리졸버란?
    • 인터셉터(Interceptor)란?
    • DispatcherServlet, MVC 설정
    • Spring JDBC
    길민호(ethan.mino)
    길민호(ethan.mino)
    💻 호기심 많은 서버 개발자 길민호입니다.

    티스토리툴바