728x90
Session
- 브라우저가 최초로 서버에 요청을 하게 되면 브라우저당 하나씩 메모리 공간을 서버에게 할당하게 된다.
- 이 메모리 영역은 브라우저당 하나씩 지정되며 요청이 새롭게 발생하더라도 같은 메모리 공간을 사용하게 된다.
- 이러한 공간을 session이라고 부른다.
- 이 영역은 브라우저를 종료 할 때 까지 서버에서 사용할 수 있다.
SessionScope
- 브라우저가 최초의 요청을 발생 시키고 브라우저를 닫을 때 까지를 SessionsScope라고 부른다.
- session 영역에 저장되어 있는 데이터나 객체를 자유롭게 사용 할 수 있다.
public String test(HttpServletRequest request){
HttpSession session = request.getSession();
session.setAttribute("name","이름");
}
public String test1(HttpServletRequest request){
HttpSession session = request.getSession();
String name = (String)session.getAttribute("name");
}
<h1>name : ${sessionScope.name} </h1>
바로 스프링으로 주입받기
public String test(HttpSession session){
String name = (String)session.getAttribute("name");
}
redirect 든 forward 든 브라우저가 바뀌지 않는 한 세션 저장하면 계속 유지
bean 저장해서 사용 (MemberDTO)
public String test(HttpSession session){
MemberDTO member = new MemberDTO();
member.setName("홍길동");
member.setId("hong");
session.setAttribute("member",member1);
}
<h1>name : ${sessionScope.member.name} </h1>
<h1>id : ${sessionScope.member.id} </h1>
@SessionAttribute
- Session 영역에 저장되어 있는 객체를 사용하고자 할 때 메서드의 매개변수로 @SessionAttribute를 설정 하면 Session 영역에 저장되어 있는 Bean을 주입 받을 수 있습니다.
이미 저장된 객체를 받아서 사용할 경우만 가능
public String test(@SessionAttribute("member") MemberDTO member){
//MemberDTO member = new MemberDTO();
//session.setAttribute("member",member1);
}
@SessionAttributes
- @ModelAttribute를 통해 주입 받는 Bean은 자동으로 Request 영역에 저장되고 Request 영역으로 부터 주입을 받게 된다.
- 이 때, @ModelAttribute를 통해 주입받는 Bean을 @SessionAttributes로 지정해 놓으면 request 영역이 아닌 session 영역에 저장되고 session 영역으로 부터 주입을 받을 수 있다.
- 주의 할 점은 @ModelAttribute 를 활용하여 객체를 생성해 반환하는 메서드를 반드시 작성해 주어야 한다.
@Controller
@SessionAttributes("sessionMember")
public class TestController{
@ModelAttribute("sessionMember")
public MemberDTO sessionMember(){
return new MemberDTO;
}
public String test(@ModelAttribute("sessionMember") MemberDTO member){
sessionMember.setName("홍길동");
sessionMember.setId("hong");
//sessionMember.getName();
}
}
728x90
'Back-End > Spring(Boot)' 카테고리의 다른 글
스프링 Application Scope (0) | 2021.03.06 |
---|---|
스프링 Session 빈 주입 (0) | 2021.03.06 |
스프링 Request Scope 빈 주입 (0) | 2021.03.06 |
스프링 RequestScope (0) | 2021.03.06 |
스프링 Redirect / Forward (0) | 2021.03.06 |