Jsp
[jsp 내장 객체] session 개념, 로그인 성공 시 아이디 저장 예제
쟈근꿈틀이
2022. 5. 12. 12:37
728x90
session의 주요 메서드
메서드 | 기능 |
setAttribute(String 속성 이름, Object 속성 값) |
세션에 속성 데이터를 저장 |
getAttribute(String 속성 이름) | 속성 이름을 통해 세션의 속성 데이터(Object)를 반환 |
removeAttribute(String 속성 이름) | 속성 이름을 통해 세션의 속성 데이터(Object)를 삭제 |
invaliate() | 현재 invalidate()라는 메서드를 호출한 프로그램의 세션에 저장된 모든 속성 데이터를 삭제 |
setMaxInactiveInterval(int 초) | 세션의 유효 시간을 설정(기본 값: 1800초[30분]) |
getMaxInactiveInterval() | 세션의 유효 시간을 반환 |
login.jsp
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
<style>
#errorMsg { color: red; font-weight: bold; }
</style>
<script>
function check(){
id = document.getElementById('id');
pw = document.getElementById('pw');
if(id.value == ""){
alert('아이디는 필수 항목입니다.');
id.focus();
return false;
}else if(pw.value == ""){
alert('비밀번호는 필수 항목입니다.');
pw.focus();
return false;
}else{
return true;
}
}
</script>
<%
String uId = (String)session.getAttribute("uId");
if(uId == null)
uId = "";
String errorMsg = (String)request.getAttribute("errorMsg");
if(errorMsg == null)
errorMsg = "";
%>
</head>
<body>
<form action="loginChk.jsp" method="post" onSubmit="return check()" id="f">
아이디: <input type="text" id="id" name="id" value="<%=uId %>" placeholder="아이디"><br>
패스워드: <input type="password" id="pw" name="pw" placeholder="패스워드"><br>
<%if(uId == ""){%>
<input type="checkbox" name="rememberId" value="true">아이디 기억하기<br>
<%} else {%>
<input type="checkbox" name="rememberId" value="true" checked="checked">아이디 기억하기<br>
<%} %>
<input type="submit" value="로그인">
<input type="reset" value="취소"> <br>
<p><span id="errorMsg"><%=errorMsg %></span></p>
</form>
</body>
</html>
input type="submit"인 버튼이 눌릴 때마다 check()라는 함수를 호출하여 반환 값을 받는다.
check()가 true가 반환될 때(아이디와 비밀번호가 모두 입력됐을 때)만 form태그 내부의 데이터들을 loginChk.jsp로 전달하도록 하였다.
웹 서버에 의해 login.jsp가 실행될 때 session의 getAttribute()라는 함수를 통해 아이디 속성 데이터를 반환받고,
이 값이 null이 아니라면 유저의 아이디를 id의 input태그에 출력한다.
에러 메시지의 로직도 이와 동일하다.
loginChk.jsp
<%
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String rememberId = request.getParameter("rememberId");
if(id == "" || pw == ""){
session.removeAttribute("uId");
request.setAttribute("errorMsg", "아이디와 비밀번호는 필수 값입니다!");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}else if(!id.equals("admin") || !pw.equals("1234")){
session.removeAttribute("uId");
request.setAttribute("errorMsg", "아이디나 비밀번호가 일치하지 않습니다!");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}else if(rememberId != null && rememberId.equals("true")){
session.setAttribute("uId", id);
}else{
session.removeAttribute("uId");
}
response.sendRedirect("login.jsp");
%>
또, 사용자가 아이디를 기억이라는 checkbox를 클릭하고 로그인에 성공했다면 session의 setAttribute()를 통해 사용자의 아이디를 세션에 저장한다. 이 아이디는 사용자가 웹 브라우저를 종료하지 않는 이상 30분간 유지된다.
저장한 후 login.jsp로 이동한다.
아이디나 비밀번호가 공백, 로그인에 실패, 아이디 기억 체크박스를 해제하고 로그인에 성공했을 경우, 세션의 removeAttribute()를 통해 아이디 속성 데이터를 삭제한다.
728x90