본문 바로가기
웹개발/jsp

세션 생성 및 제거.

by heavenLake 2022. 2. 17.
반응형

 

 출처 : https://devkingdom.tistory.com/m/9

 

 

<Session 원리>

간단하게 설명을 해보자면,

 

① 서버에 연결하고 서비스를 요청한다. 편하게 로그인 서비스라고 생각하자.

② 로그인 기능을 수행하는 메서드가 있으면 메서드 바디에서 setAttribute() 메서드를 호출한다.

③ 그러고 나면 해당 속성값이 Session 안에다가 저장이 된다. 

④ 그 후 결과를 응답해준다. 이러면 로그인이 완료된거다.

⑤ 로그인 하고 난 뒤에 유저 수정 화면에 들어간다고 생각해보자. 유저 수정 서비스를 호출한다.

⑥ 수정 기능을 수행하는 메서드가 있으면 메서드 바디에서 getAttribute() 메서드를 호출한다.

⑦ 그러고 나면 해당 속성 값이 반환된다.

⑧ 이 값을 클라이언트에게 응답해주면 유저의 정보가 화면에 보여진다.

 

어떤 페이지에서든 로그 아웃을 하기 전까지 이런 방식으로 정보를 유지한다고 보면 된다. 

 

 좀 더 자세하게 코드를 통해 보자.

 

1
2
3
4
5
6
7
8
9
    @RequestMapping(value = "/userLogin", method = RequestMethod.POST)
    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
    @RequestMapping(value = "/userModify", method = RequestMethod.POST)
    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
    @RequestMapping(value = "/userRemove", method = RequestMethod.POST)
    public String userRemove(@ModelAttribute("user") User user, HttpServletRequest request) {
        
        service.userRemove(user);
        HttpSession session = request.getSession();
        session.invalidate();
        
        return "userRemove";
    }
 

위와 같이 하면 세션을 제거 할 수 있다.

 

 

 

반응형

댓글