티스토리 뷰
로그인한 사람들만 사용할 수 있도록 세션을 활용하는 방법을 알아보자.
세션(Session)이란?
일정 시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. 방문자의 요청에 따른 정보를 방문자 메모리에 저장하는 것이 아닌 웹 서버가 세션 아이디 파일을 만들어 서비스가 돌아가고 있는 서버에 저장하는 것이다. 서버에 저장되기 때문에 사용자 정보가 노출되지 않는다.
세션을 정할 때는 session.setAttribute(String name, value); 로 작성하면 된다.
사이트에 보여지는 jsp(04-02_Session_Client.jsp)에서 아이디와 비밀번호를 입력받은 후
처리해주는 jsp(04-02_Session_Sever.jsp)로 값을 넘겨주어 세션에 저장하도록 할 예정이다.
사이트에 보여지는 jsp(04-02_Session_Client.jsp) 코드
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html lang="en">
<head>
<title>login</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<script>
// ** 유효성 검사
function loginchk() {
var regx = /^[a-zA-Z0-9]*$/;
var id = document.getElementById("mem_id").value;
var pw = document.getElementById("mem_pass").value;
// 아이디 입력 안 했을 때
if(id.length == 0 || id == null) {
alert("아이디를 입력해주세요.");
return false;
}
// 비밀번호 입력 안 했을 때
if(pw.length == 0 || pw == null) {
alert("비밀번호를 입력해주세요.");
return false;
}
// 아이디를 잘못입력 했을 때
if (!regx.test(id)){
alert("아이디는 영어, 숫자만 입력가능합니다.");
return false;
}
document.form.submit();
}
</script>
</head>
<body>
<h1>LOGIN</h1>
<form method="post" action="04-02_Session_Server.jsp" onsubmit='return loginchk()'>
<p> 아이디 : <input type="text" name="mem_id" placeholder="ID" id='mem_id'>
<p> 암호 : <input type="password" name="mem_pass" placeholder="PASSWORD" id='mem_pass'>
<p> <input type="submit" value="LOGIN">
<input type="button" value="Sign Up" onclick='window.open("Insert01.jsp")'>
</form>
</body>
</html>
유효성 검사를 통해 잘못입력했을 때 생길 에러를 방지했다.
처리해주는 jsp(04-02_Session_Sever.jsp)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>처리해주는 JSP</title>
</head>
<body>
<%@ include file="dbconn.jsp" %>
<%
// 입력된 아이디(mem_id), 비밀번호(mem_pss) 가져옴
String mem_id = request.getParameter("mem_id");
String mem_pass = request.getParameter("mem_pass");
// 아이디(mem_id) 또는 비밀번호(mem_pss)가 null일 때
if(mem_id == null || mem_pass == null) {
response.sendRedirect("04-02_Session_Client.jsp");
}
// 서버에 저장되어 있는지 조회하기
ResultSet rs = null;
Statement stmt = conn.createStatement();
String sql = "SELECT mem_pass FROM member WHERE mem_id='";
sql += mem_id+"'";
rs = stmt.executeQuery(sql);
String mem_pass2="";
// 서버의 비밀번호는 mem_pass2라고 함.
while(rs.next()){
mem_pass2 = rs.getString("mem_pass");
}
// 입력된 비밀번호와 서버의 비밀번호가 같을 때 세션에 저장하기
if(mem_pass.equals(mem_pass2)) {
session.setAttribute("mem_id",mem_id);
session.setAttribute("mem_pass", mem_pass);
response.sendRedirect("04-01-1_Photo_Client.jsp");
}// 입력된 비밀번호와 서버의 비밀번호가 다를 때 경고창 띄우기
else {
%>
<script>
alert("가입하지 않은 아이디이거나, 잘못된 비밀번호입니다.");
history.go(-1); </script>
<%
}
stmt.close();
conn.close();
%>
</body>
</html>
오류창 잘 뜨나 봅시다.
이것저것 추가하고 크롬에서 로그인 하기
로그인 됐다!
근데 임시로 만든 계정이라 유출 될 정보가 없는데 왜 저런게 뜨지?
이제 로그인 후에 보여질 JSP에
String mem_id = (String) session.getAttribute("mem_id");
String mem_pass = (String) session.getAttribute("mem_pass");
이 코드를 추가하면 된다.
예시를 위한 jsp(계정삭제페이지)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<title>계정 삭제</title>
</head>
<body>
<%
String mem_id = (String) session.getAttribute("mem_id");
String mem_pass = (String) session.getAttribute("mem_pass");
if (mem_id == null || mem_pass == null){
response.sendRedirect("04-02_err_Session_Client.jsp");
}
%>
<form method="post" action="Delete01_process.jsp">
<input type="text" name="mem_id" placeholder="ID를 입력해주세요" id="mem_id" />
<br>
<input type="text" name="mem_pass" id="mem_pass"placeholder="비밀번호를 입력해주세요" />
<input type="submit" value="Delete" class="special" /></li>
<input type="reset" value="Reset" /></li>
</form>
</body>
</html>
실행하면 계정삭제 jsp가 아닌 미리 만들어둔 jsp파일(04-02_err_Session_Client.jsp) 실행 된다.
반응형
LIST
'공부합시다 > 찍먹' 카테고리의 다른 글
[spring / Errors] Missing artifact javax.servlet:servlet-api:jar:4.0.1 (0) | 2021.05.13 |
---|---|
[spring / Errors] cvc-elt.1.a: Cannot find the declaration of element 'project'.pom.xml (0) | 2021.05.12 |
Linux Commands (0) | 2021.05.08 |
[JSP - DB 연동하기] (2) DB 연동 (0) | 2021.05.03 |
[JSP - DB 연동하기] (1) DB 설치 및 만들기 (0) | 2021.05.03 |
댓글