JSP를 이용해 아주 간단한 로그인 기능을 만들어보자.
로그인페이지(login), 로그인결과를 처리할 loginResult 페이지, 로그인 성공시 넘어갈 mypage, 로그아웃을 처리할 logout 페이지 총 네개의 페이지를 만든다.
우선 가장 메인이 될, 로그인 페이지를 만든다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
table,th,td {
border: 1px solid black;
border-collapse: collapse;
}
th,td {
padding: 5px 10px;
}
</style>
</head>
<body>
<form action="loginResult.jsp" method="POST">
<table>
<tr>
<th>ID</th>
<td><input type="text" name="id" value=""/></td>
</tr>
<tr>
<th>PW</th>
<td><input type="text" name="pw" value=""/></td>
</tr>
<tr>
<th colspan="2">
<button>LOGIN</button>
</tr>
</table>
</form>
</body>
</html>
|
cs |

실행시 위와 같은 로그인 페이지가 열린다. 여기서 로그인버튼을 누르면 loginResult.jsp로 넘어가게끔 코드를 작성한다.
입력받은 id와 pw를 loginResult로 보낸다. post 방식을 이용할 것인데, get 방식에 비해 속도는 느리지만 값 제한이 없고 보안성이 뛰어나다는 장점이 있다.
loginResult
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//id랑 pw가 제대로 왔는지 확인
String id = request.getParameter("id");
String pw = request.getParameter("pw");
System.out.println(id+"/"+pw);
if(id == null || pw == null) { //NullPointException 에 대한 방어코드
//혹시라도 id와 pw에 null 값이 하나라도 들어오면 login.jsp로 보내버림
response.sendRedirect("login.jsp");
}
//id 와 pw 가 'admin' 과 'pass' 가 아니면 login.jsp 로 돌려보내는 조건문
if (id.equals("admin") && pw.equals("pass")) { //받아온 id와 pw가 각각 admin, pass와 일치한다면
//일치하면 session 에 loginId 라는 이름으로 받아온 id 값을 넣는다.
session.setAttribute("loginId", id);
//그 뒤 mypage.jsp로 보냅니다.
response.sendRedirect("mypage.jsp");
} else { //일치하지 않는다면
response.sendRedirect("login.jsp"); //login.jsp 로 돌려보냅니다.
}
%>
|
cs |
request 객체를 통해 id와 pw가 제대로 왔는지 확인한다. 입력받은 id와 pw를 콘솔창에서 확인할 수 있도록 출력문을 넣어준 뒤, NullPointException에 대한 방어코드를 작성해준다. 혹시라도 아무런 값을 입력하지 않고 로그인 버튼을 눌렀을 경우, login.jsp 페이지로 다시 보낸다.
올바른 id와 pw가 admin과 pass라고 정했을 경우,
조건문을 통해 id와 pw가 일치하는 경우와 일치하지 않는 경우에 대해 코드를 작성한다.
일치할 경우에는 session에 loginId라는 이름으로 입력받은 id 값을 넣고 mypage로 보낸다.
일치하지 않을 경우에는 login 페이지로 돌려보낸다.
mypage
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>Login 성공 페이지</h3>
안녕하세요 <%=session.getAttribute("loginId") %>님 <a href="logout.jsp">로그아웃</a>
<!-- 로그인 성공시 입력한 loginId 값을 이름이 뜨게끔, 그리고 logout.jsp로 연결되는 로그아웃 버튼이 뜨게 한다. -->
</body>
<script>
<%if(session.getAttribute("loginId")==null){%>
alert("로그인이 필요한 서비스입니다.");
location.href="login.jsp";
<!-- 만약 세션에 넣어진 loginId가 null 인데 mypage에 접근할 경우, 경고창이 뜨게 한 후 login.jsp로 보낸다. -->
<%}%>
</script>
</html>
|
cs |
로그인에 성공할 경우 입력한 loginId 값과 logout.jsp로 연결되는 로그아웃 버튼이 나란히 뜨게 한다.
세션에 넣어진 loginId가 null 인데 mypage에 접근할 경우를 대비해 이 경우 경고창이 뜨게 한 후 login.jsp로 돌려보내게끔 코드를 짠다.


logout
|
1
2
3
4
5
6
7
8
9
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//session 에서 loginId 라는 속성을 지우고
session.removeAttribute("loginId");
//login.jsp 페이지로 보낸다.
response.sendRedirect("login.jsp");
%>
|
cs |
로그아웃은 기존에 입력받은 값을 모두 지우면 되는데, session에서 loginId 속성을 지우고
login.jsp로 보내면 된다.
'Spring' 카테고리의 다른 글
| root-context 에 파일업로드 설정하기 (0) | 2022.05.26 |
|---|---|
| 기본 DB 설정하기 (0) | 2022.05.24 |
| 로그인 페이지 만들기 (0) | 2022.05.23 |
| pom.xml에 라이브러리 추가하기 (0) | 2022.05.20 |
| web.xml 에 한글 강제 인코딩 설정하기 (0) | 2022.05.19 |