1 minute read

Session 이란?

사용자와 서버의 연결 상태를 유지해주는 방법
서버에서 연결 정보를 관리해준다. (쿠키는 클라이언트 쪽에서 연결정보를 관리한다)

예제를 통해 알아보자 (비밀번호 변경)

<form action="/guest/find_pswd" method="post">
	<input type="text" name="userId" placeholder="사용자 아이디"
		class="form-control w300" required /> 
	<input type="text" name="phone" placeholder="전화번호 (-)포함" 
		class="form-control w300" required />
	<button type="submit" class="btn btn-primary">비밀번호 찾기</button>
</form>

이런식으로 비밀번호 찾기 form이 있다.

Controller로 가보자

public String find_pswd(HttpServletRequest request, Model model) throws Exception {
	String uid = request.getParameter("userId");
	String phone = request.getParameter("phone");

	if (userService.user_exist(userid, phone)) { // 정보가 일치한다면
		HttpSession session = request.getSession(); // 세션을 생성해서
		session.setAttribute("userid", uid); // userid로 uid값을 넘기자
			
		return "redirect:/guest/change_pswd";
	}

	return "redirect:/guest/pswd?error";
}

uid값과 phone의 정보가 유저의 정보와 일치한다면 세션을 생성해서 setAttribute 메서드를 이용하여 세션의 속성값을 설정한다.

이제 비밀번호 찾기버튼을 누르고 난 후 페이지를 보자

<form action="/guest/change_pswd_correct">
	<div class="a">
		<input type="hidden" name="userid" value="${userid}" /> <!-- 이 부분의 userid가 세션으로 받아온 uid다 -->
		<input type="password" name="newpswd" placeholder="새로운 비밀번호를 입력해주세요"
			class="form-control w300" required />

		<button type="submit" class="btn btn-primary">비밀번호 변경</button>
	</div>
</form>

설정후 사용자의 세션을 끊고 싶으면 아래와 같은 방법으로 세션삭제하면 된다.

@RequestMapping("guest/change_pswd_correct")
public String change_pswd_correct(HttpServletRequest request) throws Exception {
	String userid = request.getParameter("userid");
	String pswd = request.getParameter("newpswd");

	userService.pswd_update(pswd, userid); // 비밀번호 변경

	///////// 세션삭제 /////////
	HttpSession session = request.getSession();
	session.invalidate(); // 비활성화 시킴으로 세션 끊김

	return "redirect:/guest/login";
}

비밀번호 변경 완료 and 세션삭제도 완료!

Comments