티스토리 뷰
직전 포스팅에서 알아본 세션을 활용하여 간단한 로그인, 로그아웃 기능을 구현해보자.
로그인된 사용자의 이름 정보가 세션에 저장되고, 로그아웃을 클릭한다면, 해당 세션 자체를 삭제하는 구조이다.
●loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 화면</title>
</head>
<body>
<form action = "testLogin.jsp" method = "post">
아이디 : <input type = "text" name = "id" required = "required" />
<br />
비밀번호 : <input type = "password" name = "pwd" required = "required"/>
<br />
<input type = "submit" value = "로그인"/>
</form>
</body>
</html>
●testLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String a_id = "admin";
String a_pwd = "1234";
String a_name = "관리자";
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
if(a_id.equals(id) && a_pwd.equals(pwd)){ //올바른 아이디, 비밀번호를 입력했을 때, 세션에 name을 저장한다.
session.setAttribute("loginUser", a_name);
response.sendRedirect("main.jsp");
} else{
response.sendRedirect("loginForm.jsp");
}
%>
●main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%= session.getAttribute("loginUser") %> ㅎㅇㅎㅇ
<br/>
<form action = "logout.jsp" method = "post">
<input type = "submit" value = "로그아웃"/>
</form>
</body>
</html>
●logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
session.invalidate(); //세션 자체를 삭제
%>
<script type = "text/javascript">
alert("로그아웃 되었습니다."); //alert를 닫아야 다음 코드로 넘어감
document.location.href = "loginForm.jsp";
</script>
잘 실행되는 것 같아 보이지만, 위와 같이 코드를 작성한다면 따로 세션을 가지고 있지 않아도, main.jsp에 직접 접속이 가능한 문제가 발생한다.
그렇기 때문에 이를 방지하기 위해 main 페이지를 조금 수정할 필요가 있다.
●main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
if(session.getAttribute("loginUser") == null){
response.sendRedirect("loginForm.jsp");
} else {
%>
<%= session.getAttribute("loginUser") %> ㅎㅇㅎㅇ
<br/>
<form action = "logout.jsp" method = "post">
<input type = "submit" value = "로그아웃"/>
</form>
<% }%>
</body>
</html>
끝!
반응형
'WEB > DynamicWeb' 카테고리의 다른 글
[JSP] Beans - property 쉽게 사용하기 (0) | 2021.04.23 |
---|---|
[JSP] JAVA Beans (0) | 2021.04.23 |
[JSP] 쿠키와 세션 (0) | 2021.04.23 |
[JSP] Action Tags (0) | 2021.04.22 |
[JSP] JSP -> JSP 로 데이터를 전달하는 다양한 방법 (0) | 2021.04.21 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- Async
- 정보보안기사 #실기 #정리
- react
- Promise
- 파니노구스토
- AsyncStorage
- redux
- react-native
- await
- 인천 구월동 맛집
- 맛집
- javascript
- redux-thunk
- 인천 구월동 이탈리안 맛집
- 이탈리안 레스토랑
- Total
- Today
- Yesterday