하루에 글 하나씩은 쓰자고 마음먹었는데, 퇴근하고 뒹굴 뒹굴하다 보니 벌써 새벽 2시가 다 되어 간다ㅠ 그래도 1일 1 글이라는 목표를 지키기위해 써야지 ... ( 내일 출근하는게 두렵다 )
포털 사이트를 이용하다 보면, 어떤 페이지를 가던지 로그아웃을 하기 전까지 로그인 상태가 유지 되어 있다.
가장 많이 접하는 네이버를 보자.
이렇게 메인 화면에서도 ......
내가 좋아하는 네이버 만화 화면에서도 ........
세상 얘기 궁금할 때보는 네이버 뉴스에서도 ......
이렇게 어느 페이지를 가든 내 로그인 정보가 보이는 걸 볼 수 있다.
보통 웹에서는 이것을 Session 이나 Cookie 를 통해 관리한다. 이거 무슨 말인지 모르는 사람들을 위해서 딱 간단하게 한 마디만 하고 간다.
Session 이랑 Cookie 둘 다 정보를 가지고 있는데 정보를 가지고 있는 곳이 다르다. Session은 서버에 정보가 저장되어있고 Cookie 는 클라이언트에 정보가 저장되어 있다. 성능을 위해서 두 개를 적절하게 나눠쓴다고 하는데, 이런 부분은 조금 더 공부해보는 걸 추천한다.
아무튼.... 오늘 나는 Session을 중점적으로 다루어볼 예정이다. 졸리다. 언제 다쓰냐..
Session에 대해 알기 쉽도록 그림을 그려봤다.
간단하게 설명을 해보자면,
① 서버에 연결하고 서비스를 요청한다. 편하게 로그인 서비스라고 생각하자.
② 로그인 기능을 수행하는 메서드가 있으면 메서드 바디에서 setAttribute() 메서드를 호출한다.
③ 그러고 나면 해당 속성값이 Session 안에다가 저장이 된다.
④ 그 후 결과를 응답해준다. 이러면 로그인이 완료된거다.
⑤ 로그인 하고 난 뒤에 유저 수정 화면에 들어간다고 생각해보자. 유저 수정 서비스를 호출한다.
⑥ 수정 기능을 수행하는 메서드가 있으면 메서드 바디에서 getAttribute() 메서드를 호출한다.
⑦ 그러고 나면 해당 속성 값이 반환된다.
⑧ 이 값을 클라이언트에게 응답해주면 유저의 정보가 화면에 보여진다.
어떤 페이지에서든 로그 아웃을 하기 전까지 이런 방식으로 정보를 유지한다고 보면 된다.
좀 더 자세하게 코드를 통해 보자.
1
2
3
4
5
6
7
8
9
|
public String login(User user, HttpServletRequest request) {
User user = service.userSearch(user);
HttpSession session = request.getSession();
session.setAttribute("user", user);
return "userLogin";
}
|
cs |
위의 코드는 로그인을 위한 메서드인데, 해당 코드가 잘 이해가 안된다면 Spring Framework에 대한 기초적인 부분을 공부할 필요가 있다. (시간이 된다면 추후에 기초적인 부분까지 올릴게용) 위와 같은 방법으로 세션에 값을 저장해주면된다.
자 그럼, 세션에 값을 저장했으니 써봐야지~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public ModelAndView userModify(User user, HttpServletRequest request) {
HttpSession session = request.getSession();
User befUser = (User) session.getAttribute("user");
User aftUser = service.userModify(user);
ModelAndView mav = new ModelAndView();
mav.addObject("befUser", befUser);
mav.addObject("aftUser", aftUser);
session.setAttribute("user", aftUser);
mav.setViewName("userModify");
return mav;
}
|
cs |
위의 코드는 "user" 라는 키값을 통해서 저장된 유저 정보를 찾고, 입력된 유저 객체로 값을 변경 한 뒤에 전 후의 유저 정보를 비교해주는 화면을 출력하는 코드이다. 뭐 이런식으로 사용하면 된다. 나중에 프로젝트할 때 응용해서 써보길 바란다.
아 그리고, 또 많이 쓰이는 걸 하나 빼먹을 뻔했다. 로그아웃 하거나 탈퇴할때는 저장된 세션을 삭제해버려야하지 않겠는가? 이때 쓰는게 invalidate() 메서드다. 코드를 한번 보자.
1
2
3
4
5
6
7
8
9
|
public String userRemove(@ModelAttribute("user") User user, HttpServletRequest request) {
service.userRemove(user);
HttpSession session = request.getSession();
session.invalidate();
return "userRemove";
}
|
위와 같이 하면 세션을 날려버릴 수 있다.
이렇게 글로 읽어보면 어렵지 않은걸 볼 수 있다. 하지만 코딩 안해보면 절대로 익숙해질 수 없다. 한번 프로젝트 만들어서 실습해보길 바란다. 그럼 오늘도 즐겁게 코딩하자~~
'Develop > Spring' 카테고리의 다른 글
[Spring] Redirect를 이용하여 특정 페이지로 전환하기 (2) (0) | 2019.09.28 |
---|---|
[Open API] SOAP 란? (1) | 2019.09.25 |
[Open API] Open API 란? (1) | 2019.09.25 |
[Spring] Redirect를 이용하여 특정 페이지로 전환하기 (1) (2) | 2019.09.24 |
[Spring] Spring MVC 란 무엇인가 (1) | 2019.09.14 |
댓글