JSP

JSP를 배워보자!! 세션(session)

25G 2021. 5. 4. 11:58

안녕하세요!!~~ 여러분 주말에 할머님 산소에 간다고 공부를 정말 놓아버렸지 뭡니까 ㅋㅋㅋㅋㅋ 흐름이 끊겨 버려서 다시 멘탈 잡고 공부하는 게 쉽지 않았습니다ㅜㅜ.... 그래도 다시 멘털을 잡고 공부한 내용인 세션에 대해서 포스팅해볼게요 ㅎㅎ

 

세션(session)은 이 웹브라우져가 끝날 때까지 클라이언트의 데이터를 가지고 있는 기능이라고 이해하시면 좀 편하실 겁니다.

쉬운 예로 네이버에 로그인을 했다고 가정을 해 보죠ㅎㅎ 근데 그 로그인이 계속 유지가 되지 않고 쇼핑을 하거나 블로그를 들어가거나 카페에 들어가거나 할 때마다 계속 로그인을 해줘야 한다고 생각해 보세요 ㅠㅠ 얼마나 불편하겠습니까

그리고 그렇게 하면 사용자가 몰렸을때 서버가 감당하지 못하고 그대로 다운돼 버리는 일이 발생할 수도 있겠죠

 

그렇기 때문에 웹 개발자 라면 서버에 데이터를 저장할 수 있고 그래서 보안에도 유리한 session을 잘 이해하고 있어야 합니다

좋다고 다 session처리를 해버리면 서버에 저장할 데이터가 기하급수적으로 많아져 버리니 그런 처리는 좋은 처리가 아닙니다

세션은 request 와 같이 내장 객체로 따로 선언할 필요가 없는 객체입니다

 

위 코드는 너무 쉬운 코드라 설명은 넘기겠습니다! 이해가 안 되시면 이전 포스팅을 보시면 되세요!

 

form에 서블릿으로 데이터를 보내고 있으니 저 서블릿도 기능에 맞게 코딩을 해야겠죠?

위 서블릿 코드에 대한 설명은 주석으로 자세히 적혀있으니 참고하시면서 읽으시면 좋을 것 같고요! 64번 줄과 65를 보시면 이 제어를 forward방식으로 넘기는 코드인데 RequestDispatcher를 사용해서 경로를 설정한 객체를 사용해 forward 하고 있습니다

간단하죠?! ㅎㅎ

이제 서블릿에서 데이터를 받아서 시각적으로 그 결과에 대해서 보여주고 있습니다

일단 서블릿에 있는 데이터를 반환받으려면 getAttribute메서드를 사용해야 한다고 위 표를 참고하시면 이해하실 수 있습니다

15번째 줄을 보시면 세션을 지우고 있는 코드입니다

경우에 따라서는 그 상황에 맞게 세션을 지울 필요도 있을 것입니다 그럴 때 removeAttribute를 사용해서 해상 세션을 하나씩 지울 수도 있고

invalidate() 메서드를 사용해서 한 시점에 모든 세션 데이터를 날려버리는 방법도 있습니다

상황에 맞게 적절히 사용하면 좋을 것 같습니다

 

자! 이렇게 세션에 대해서 얄팍하고 간결하게 알아봤습니다. jsp는 단순히 콘솔 창에 출력하는 그런 프로그램을 만드는 언어적인 기술이 아닌 그 언어적 기술을 바탕으로 서비스를 구현하는 방법이다 보니 개발자들이 클라이언트와의 소통적인 부분을 많이 고민하고 그로 인해서 생긴 기술들이 아닐까라는 생각을 해 봤습니다

 

오늘도 긴 글 읽어주셔서 너무 감사하고요!

다음에 또 봐요