Java - Session

개미는뚠뚠·2023년 10월 28일
0

java

목록 보기
10/11
post-thumbnail

오늘은 오랜만에 JAVA로 돌아와서 Session에 관한 내용을 다루려고 한다.
내가 Session을 주제로 정한 이유는 사내 프로젝트 개발 중 관리자 권한에 대한 처리를 다룰 때 유용하게 사용하였고, 그 내용을 글로 정리하고 싶었다.


🚀Session이란?

세션은 각각의 클라이언트 관한 정보가 서버에 저장되는 것을 말한다.

사용자 컴퓨터에 저장되던 쿠키와 다르게 서버에 저장하여, 비교적 보안이 필요한 데이터는 쿠키보다 세션에 저장한다.

세션은 서버가 종료되거나 유효기간이 지나면 사라진다.

🚀Session의 사용방법

1) 세션 생성

HttpSession session = reuqest.getSession();
HttpSession session = request.getSession(ture);

requset의 getSession()메서드는 서버에 생성된 세션이 있다면 세션을 반환하고, 없다면 세 세션을 생성하여 반환한다(인수의 default는 true).

인수를 false를 전달하면 이미 생성된 세션이 있을 때 그 세션을 반환하고 없으면 null을 반환한다.

2) 세션에 값 저장

setAttribute(String name, Object value)

setAttribute는 name,value 객체 형태로 세션에 값을 저장하는 메서드다.

  • session.setAttribute(이름, 값)

3) 세션 값 가져오기

String myName = (String)session.getAttribute("name");

getAttribute 메서드를 통해 세선에 저장한 값을 활용할 수 있다.

리턴 타입은 기본적으로 Object이므로 다른 자료형으로 활용시 형변환이 필요하다.

4) 세션 값 삭제하기

1. removeAttribute(String name);

removeAttribute(name) 메서드를 통해 해당하는 세션 정보를 삭제할 수 있다.

2. invalidate();

invalidate로 모든 세션을 한 번에 삭제할 수 있다.

5) 세션 유지 시간 설정하기

기본적으로 세션은 30분으로 설정이 되어있다. 클라이언트가 30분 이상 서버에 아무런 요청이 없다면, 세션이 자동을 끊어진다.

해당 세션 유지 시간은 web.xml 파일에서 별도로 설정한다.

🚀Spring MVC - Session

1) SessionAttributes를 Cortroller 위에 선언하고 메서드 파라미터로 @ModeAttribute를 인수로 전달.

@Controller
@SessionAttribute("name") {
    @PostMapping("/test")
    public String test(@ModelAttribute("name") Test test) {
    ...
    }
}

2) Spring MVC의 form tag라이브러리 사용하기

<form:form action="login" method="post" modelAttribute="user">
Email : <form:input path="email" /><br>
Password : <form:password path="password" /><br>
<button type="submit">Login</button>
</form:form>

0개의 댓글