목차

id저장을 체크했을 때 id를 불러와 아이디 입력 칸에 표시해주는 것은 사용자의 pc에 저장된 것을 가져오는 것이다. 이를 쿠키라고 한다.
Cookie 클래스
- javax.servlet.http.Cookie 클래스를 이용한다.
- Tomcat 서버가 Client에 저장하는 텍스트 파일로 된 정보이다.
- 보안성이 없음으로 계정과 패스워드를 동시에 쿠키에 저장하면, 쿠키의 내용을 전부 편집기로 열어 볼 수 있음으로 보안에 문제가 될 수 있다.


아이디가 저장되는 시점은 일반적으로 로그인을 성공했을 때 일 것이다.

c_id 값을 가져왔을 때 save가 있으면 아이디를 저장한다.
loginProc.jsp
<%@page import="javax.swing.event.MouseInputListener"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="ssi.jsp" %>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginProc.jsp-->
<h3>* 로 그 인 결 과 *</h3>
<%
String id = request.getParameter("id").trim();
String passwd = request.getParameter("passwd").trim();
dto.setId(id);
dto.setPasswd(passwd);
String mlevel = dao.loginProc(dto);
if(mlevel==null) {
out.println("<p>아이디/비밀번호 다시 한번 확인해주세요!!</p>");
out.println("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
} else {
//로그인 성공
//out.print("로그인 성공~~");
//out.print("회원등급:" + mlevel);
//다른 페이지에서 로그인 상태 정보를 공유할 수 있도록
session.setAttribute("s_id", id);
session.setAttribute("s_passwd", passwd);
session.setAttribute("s_mlevel", mlevel);
//쿠키시작----------------------------------------
//->웹서버가 사용자PC에 저장하는 텍스트 파일로 된 정보
//->각 브라우저의 쿠키삭제의 영향을 받는다
//->보안에 취약하다
//->예)아이디저장, 오늘창그만보기, 클락한상품목록
//->예)오늘창그만보기는 자바스크립트 쿠키. 참조)https://www.w3schools.com/js/js_cookies.asp
//<label><input type="checkbox" name="c_id" value="SAVE">아이디 저장
String c_id = Utility.checkNull(request.getParameter("c_id"));
Cookie cookie = null;
if(c_id.equals("SAVE")){ //아이디저장에 체크를 했다면
//쿠키변수선언 new Cookie("변수명", 값)
cookie = new Cookie("c_id", id);
//쿠키의 생존기간 1개월
cookie.setMaxAge(60*60*24*30); //각 브라우저의 쿠키 삭제의 영향을 받는다
} else {
cookie = new Cookie("c_id", "");
cookie.setMaxAge(0);
}//if end
response.addCookie(cookie); //요청한 사용자 PC에 쿠키값을 저장
//쿠키 끝-----------------------------------------
//첫페이지 이동
//http://localhost:9090/myweb/index.jsp
String root = Utility.getRoot(); //myweb반환
response.sendRedirect(root+"/index.jsp");
}//if end
%>
<!-- 본문 끝 -->
<%@ include file="../footer.jsp"%>
쿠키에 저장된 id를 아이디 창에 보여줘야 한다. 이때 사용자의 PC에 저장된 모든 쿠키를 가져와서 원하는 값을 찾아 출력해주는 것이다.
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="ssi.jsp" %>
<%@ include file="auth.jsp"%>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginForm.jsp-->
<h3>* 로 그 인 *</h3>
<%if(s_id.equals("guest") || s_passwd.equals("guest") || s_mlevel.equals("guest")) {
//아이디 저장 쿠키 확인---------------------------------
Cookie[] cookies = request.getCookies(); //사용자 PC에 저장된 모든 쿠키값 가져오기
String c_id="";
if(cookies!=null){ //쿠키가 존재하는지?
for(int i=0; i<cookies.length; i++){ //모든 쿠키값을 검색
Cookie cookie = cookies[i]; //쿠키 하나씩 가져오기
if(cookie.getName().equals("c_id")==true){
c_id = cookie.getValue();
}//if end
}//for end
}//if end
//------------------------------------------------
%>
<form name="loginfrm" id="loginfrm" action="loginProc.jsp" onsubmit="return loginCheck()"><!-- myscript.js -->
<table class="table">
<tr>
<td>
<input type="text" name="id" id="id" value="<%=c_id%>" placeholder="아이디" maxlength="10" required>
</td>
<td rowspan="2">
<!-- type=image는 기본 속성이 submit -->
<input type="image" src="../images/bt_login.gif">
</td>
</tr>
<tr>
<td>
<input type="password" name="passwd" id="passwd" placeholder="비밀번호" maxlength="10" required>
</td>
</tr>
<tr>
<td colspan="2">
<label><input type="checkbox" name="c_id" value="SAVE" <%if(!c_id.isEmpty()){out.print("checked");}%>>아이디 저장</label>
<a href="agreement.jsp">회원가입</a>
<a href="findID.jsp">아이디/비밀번호찾기</a>
</td>
</tr>
</table>
</form>
<%
} else {
//로그인 성공했다면
out.println("<strong>" + s_id + "</strong> 님");
out.println("<a href='logout.jsp'>[로그아웃]</a>");
out.println("<br><br>");
out.println("<a href='memberModify.jsp'>[회원정보수정]</a>");
out.println(" ");
out.println("<a href='memberWithdraw.jsp'>[회원탈퇴]</a>");
}//if end
%>
<!-- 본문끝 -->
<%@ include file="../footer.jsp"%>
아이디 저장에 체크를 했다면, 다시 로그인 화면에 왔을 때 아이디도 출력되고 아이디 저장 체크박스에 체크도 된 상태로 보이도록 했다.


'웹개발 교육 > jsp' 카테고리의 다른 글
[57일] jsp (31) - myweb 프로젝트(회원가입 유효성 검사) (0) | 2022.10.18 |
---|---|
[57일] jsp (30) - myweb 프로젝트(id 중복 확인) (0) | 2022.10.18 |
[57일] jsp (28) - myweb 프로젝트(회원 등급 별 권한 부여) (0) | 2022.10.18 |
[55~56일] jsp (27) - myweb 프로젝트(로그인, 로그아웃) (0) | 2022.10.17 |
[55일] jsp (26) - application, response 내장 객체 (0) | 2022.10.17 |

id저장을 체크했을 때 id를 불러와 아이디 입력 칸에 표시해주는 것은 사용자의 pc에 저장된 것을 가져오는 것이다. 이를 쿠키라고 한다.
Cookie 클래스
- javax.servlet.http.Cookie 클래스를 이용한다.
- Tomcat 서버가 Client에 저장하는 텍스트 파일로 된 정보이다.
- 보안성이 없음으로 계정과 패스워드를 동시에 쿠키에 저장하면, 쿠키의 내용을 전부 편집기로 열어 볼 수 있음으로 보안에 문제가 될 수 있다.


아이디가 저장되는 시점은 일반적으로 로그인을 성공했을 때 일 것이다.

c_id 값을 가져왔을 때 save가 있으면 아이디를 저장한다.
loginProc.jsp
<%@page import="javax.swing.event.MouseInputListener"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="ssi.jsp" %>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginProc.jsp-->
<h3>* 로 그 인 결 과 *</h3>
<%
String id = request.getParameter("id").trim();
String passwd = request.getParameter("passwd").trim();
dto.setId(id);
dto.setPasswd(passwd);
String mlevel = dao.loginProc(dto);
if(mlevel==null) {
out.println("<p>아이디/비밀번호 다시 한번 확인해주세요!!</p>");
out.println("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
} else {
//로그인 성공
//out.print("로그인 성공~~");
//out.print("회원등급:" + mlevel);
//다른 페이지에서 로그인 상태 정보를 공유할 수 있도록
session.setAttribute("s_id", id);
session.setAttribute("s_passwd", passwd);
session.setAttribute("s_mlevel", mlevel);
//쿠키시작----------------------------------------
//->웹서버가 사용자PC에 저장하는 텍스트 파일로 된 정보
//->각 브라우저의 쿠키삭제의 영향을 받는다
//->보안에 취약하다
//->예)아이디저장, 오늘창그만보기, 클락한상품목록
//->예)오늘창그만보기는 자바스크립트 쿠키. 참조)https://www.w3schools.com/js/js_cookies.asp
//<label><input type="checkbox" name="c_id" value="SAVE">아이디 저장
String c_id = Utility.checkNull(request.getParameter("c_id"));
Cookie cookie = null;
if(c_id.equals("SAVE")){ //아이디저장에 체크를 했다면
//쿠키변수선언 new Cookie("변수명", 값)
cookie = new Cookie("c_id", id);
//쿠키의 생존기간 1개월
cookie.setMaxAge(60*60*24*30); //각 브라우저의 쿠키 삭제의 영향을 받는다
} else {
cookie = new Cookie("c_id", "");
cookie.setMaxAge(0);
}//if end
response.addCookie(cookie); //요청한 사용자 PC에 쿠키값을 저장
//쿠키 끝-----------------------------------------
//첫페이지 이동
//http://localhost:9090/myweb/index.jsp
String root = Utility.getRoot(); //myweb반환
response.sendRedirect(root+"/index.jsp");
}//if end
%>
<!-- 본문 끝 -->
<%@ include file="../footer.jsp"%>
쿠키에 저장된 id를 아이디 창에 보여줘야 한다. 이때 사용자의 PC에 저장된 모든 쿠키를 가져와서 원하는 값을 찾아 출력해주는 것이다.
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="ssi.jsp" %>
<%@ include file="auth.jsp"%>
<%@ include file="../header.jsp"%>
<!-- 본문 시작 loginForm.jsp-->
<h3>* 로 그 인 *</h3>
<%if(s_id.equals("guest") || s_passwd.equals("guest") || s_mlevel.equals("guest")) {
//아이디 저장 쿠키 확인---------------------------------
Cookie[] cookies = request.getCookies(); //사용자 PC에 저장된 모든 쿠키값 가져오기
String c_id="";
if(cookies!=null){ //쿠키가 존재하는지?
for(int i=0; i<cookies.length; i++){ //모든 쿠키값을 검색
Cookie cookie = cookies[i]; //쿠키 하나씩 가져오기
if(cookie.getName().equals("c_id")==true){
c_id = cookie.getValue();
}//if end
}//for end
}//if end
//------------------------------------------------
%>
<form name="loginfrm" id="loginfrm" action="loginProc.jsp" onsubmit="return loginCheck()"><!-- myscript.js -->
<table class="table">
<tr>
<td>
<input type="text" name="id" id="id" value="<%=c_id%>" placeholder="아이디" maxlength="10" required>
</td>
<td rowspan="2">
<!-- type=image는 기본 속성이 submit -->
<input type="image" src="../images/bt_login.gif">
</td>
</tr>
<tr>
<td>
<input type="password" name="passwd" id="passwd" placeholder="비밀번호" maxlength="10" required>
</td>
</tr>
<tr>
<td colspan="2">
<label><input type="checkbox" name="c_id" value="SAVE" <%if(!c_id.isEmpty()){out.print("checked");}%>>아이디 저장</label>
<a href="agreement.jsp">회원가입</a>
<a href="findID.jsp">아이디/비밀번호찾기</a>
</td>
</tr>
</table>
</form>
<%
} else {
//로그인 성공했다면
out.println("<strong>" + s_id + "</strong> 님");
out.println("<a href='logout.jsp'>[로그아웃]</a>");
out.println("<br><br>");
out.println("<a href='memberModify.jsp'>[회원정보수정]</a>");
out.println(" ");
out.println("<a href='memberWithdraw.jsp'>[회원탈퇴]</a>");
}//if end
%>
<!-- 본문끝 -->
<%@ include file="../footer.jsp"%>
아이디 저장에 체크를 했다면, 다시 로그인 화면에 왔을 때 아이디도 출력되고 아이디 저장 체크박스에 체크도 된 상태로 보이도록 했다.


'웹개발 교육 > jsp' 카테고리의 다른 글
[57일] jsp (31) - myweb 프로젝트(회원가입 유효성 검사) (0) | 2022.10.18 |
---|---|
[57일] jsp (30) - myweb 프로젝트(id 중복 확인) (0) | 2022.10.18 |
[57일] jsp (28) - myweb 프로젝트(회원 등급 별 권한 부여) (0) | 2022.10.18 |
[55~56일] jsp (27) - myweb 프로젝트(로그인, 로그아웃) (0) | 2022.10.17 |
[55일] jsp (26) - application, response 내장 객체 (0) | 2022.10.17 |