Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오라클
- 자바
- NestedFor
- abstract
- 인터페이스
- GRANT VIEW
- 대덕인재개발원
- 추상메서드
- 환경설정
- cursor문
- 어윈 사용법
- 메소드오버로딩
- oracle
- 한국건설관리시스템
- 컬렉션프레임워크
- 정수형타입
- 다형성
- 컬렉션 타입
- 사용자예외클래스생성
- EnhancedFor
- 예외미루기
- 참조형변수
- 집합_SET
- 제네릭
- 예외처리
- 객체 비교
- Java
- 자동차수리시스템
- exception
- 생성자오버로드
Archives
- Today
- Total
거니의 velog
231002_Servlet 4 본문
cookieLogin.jsp 문서의 'id 체크하기' 체크박스를 체크한 후 'Login'버튼을 클릭하면
입력했던 'ID'를 쿠키에 저장하고, 쿠키에 'ID'값이 저장되어 있으면 'ID'가 나타나도록 한다.
이 때 체크박스도 체크가 된 상태로 유지되도록 한다.
체크박스를 해제한 후 로그인을 하면 쿠키에 저장된 'ID'를 삭제하고 체크 박스도 해제된
상태가 되도록 한다.
ID가 'test'이고 PassWord가 '1234'이면 로그인에 성공한 것으로 보고 'cookieMain.jsp'로
이동하고 그렇지 않으면 'cookieLogin.jsp'로 이동되도록 한다.
[cookieMain.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>Cookie 연습 1</title>
</head>
<body>
<h2>cookie연습용 main페이지입니다.</h2>
<br />
<a href="<%= request.getContextPath() %>/basic/cookie/cookieLogin.jsp">Login 창으로 이동</a>
</body>
</html>
[cookieLogin.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <!-- 쿠키값으로 id정보 받아오기 -->
<%
String cookie = "";
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("userId")) {
cookie = cookies[i].getValue();
}
}
}
%>
<form action="<%= request.getContextPath() %>/cookieLoginServlet.do" method="post">
ID : <input name="id" type=text value="<%= cookie %>"
placeholder="ID 입력하세요."><br>
PASS : <input name="pass" type=password placeholder="PassWord 입력하세요."><br>
<input name="checkbox" type=checkbox> id 기억하기 <br>
<input type="submit" value="Login">
</form>
</body>
</html>
[CookieLoginServlet.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/cookieLoginServlet.do")
public class CookieLoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// id, pass, checkbox 정보 받아오기
String id = request.getParameter("id"); // id 가져오기
String pass = request.getParameter("pass"); // pass 가져오기
String checkbox = request.getParameter("checkbox");// 체크박스의 체크여부 가져오기
Cookie cookie = new Cookie("userId", id);// userId라는 쿠키를 생성한다.
//System.out.println(checkbox); // 체크여부 확인
if (checkbox != null) { // 체크박스 체크여부에 따라 쿠키 저장 확인
// 체크박스 체크 되었을 때 쿠키 저장
response.addCookie(cookie);
}else {
// 체크박스 체크 해제되었을 때 쿠키 유효시간 0으로 해서 브라우저에서 삭제하게 한다.
cookie.setMaxAge(0);
response.addCookie(cookie);
}
// id , pass 에 null 체크 반드시 하기
if (id != null && !id.isEmpty() && pass != null && !pass.isEmpty()) {
if (id.equals("test") && pass.equals("1234")) { // 로그인 성공시
// id 와 pwd가 일치하는 경우...
response.sendRedirect(request.getContextPath() + "/basic/cookie/cookieMain.jsp");
} else { // 로그인 실패시
// 로그인 실패시 바로 login 화면으로...
response.sendRedirect(request.getContextPath() + "/basic/cookie/cookieLogin.jsp");
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
[선생님 풀이]
[cookieMain.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<title>Cookie 연습 1</title>
</head>
<body>
<h2>cookie연습용 main페이지입니다.</h2>
<br />
<a href="<%= request.getContextPath() %>/basic/cookie/cookieLogin.jsp">Login 창으로 이동</a>
</body>
</html>
[cookieLogin.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="<%= request.getContextPath() %>/cookieLoginServlet.do" method="post">
<table style="margin: auto;">
<tr>
<td>ID : </td>
<td><input type="text" name="userid" placeholder="ID를 입력하세요." /></td>
</tr>
<tr>
<td>PASS : </td>
<td><input type="password" name="pass" placeholder="PassWord 입력하세요."></td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" name="chkid" value="check" /> id 기억하기
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<input type="submit" value="Login" />
</td>
</tr>
</table>
</form>
</body>
</html>
[CookieLogin.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/cookieLoginServlet.do")
public class CookieLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
// userid, pass, chkid 파라미터의 값을 구한다.
String userId = request.getParameter("userid");
String pass = request.getParameter("pass");
String chkId = request.getParameter("chkid"); // checkbox의 값
// userid값을 갖는 Cookie객체 생성
Cookie loginCookie = new Cookie("USERID", userId);
//CheckBox의 체크 여부 : check
//CheckBox의 체크 여부 : null
System.out.println("CheckBox의 체크 여부 : " + chkId);
if(chkId == null) { // 체크박스가 체크되지 않으면...
loginCookie.setMaxAge(0); // Cookie를 삭제하기 위해서 유지시간을 0으로 설정
}
// 쿠키를 다시 저장한다.
response.addCookie(loginCookie);
String contextPath = request.getContextPath();
if("test".equals(userId) && "1234".equals(pass)) { // 로그인 성공 시
response.sendRedirect(contextPath + "/basic/cookie/cookieMain.jsp");
}else { // 로그인 실패 시
response.sendRedirect(contextPath + "/basic/cookie/cookieLogin.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
[cookieMain.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<%
// 쿠키에 저장된 ID값을 구한다.
String cookieUserId = "";
String chkBox = "";
Cookie[] cookieArr = request.getCookies();
if(cookieArr != null) {
for(Cookie cookie : cookieArr) {
if("USERID".equals(cookie.getName())) { // 원하는 쿠키이름을 찾는다.
cookieUserId = cookie.getValue(); // 쿠키값을 저장한다.
chkBox = "checked";
}
}
}
%>
</head>
<body>
<form action="<%= request.getContextPath() %>/cookieLoginServlet.do" method="post">
<table style="margin: auto;">
<tr>
<td>ID : </td>
<td><input type="text" name="userid" placeholder="ID를 입력하세요." value="<%= cookieUserId %>" /></td>
</tr>
<tr>
<td>PASS : </td>
<td><input type="password" name="pass" placeholder="PassWord 입력하세요."></td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" name="chkid" value="check" <%= chkBox %> /> id 기억하기
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center;">
<input type="submit" value="Login" />
</td>
</tr>
</table>
</form>
</body>
</html>
[sessionTest.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session 연습</title>
</head>
<body>
<a href="<%= request.getContextPath() %>/sessionAdd.do">Session 정보 저장하기</a><br /><br />
<a href="<%= request.getContextPath() %>/sessionRead.do">Session 정보 확인하기</a><br /><br />
<a href="<%= request.getContextPath() %>/sessionDelete.do">Session 정보 삭제하기</a><br /><br />
</body>
</html>
[SessionAdd.java]
package kr.or.ddit.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/sessionAdd.do")
public class SessionAdd extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Session 정보 저장하는 방법 및 순서
// 1. Session객체를 생성하거나 현재 세션 가져오기
// 형식1) Request객체.getSession(); 또는 Request객체.getSession(true);
// ==> 현재 세션이 존재하면 현재 세션을 반환하고,
// 세션이 존재하지 않으면 새로운 세션을 생성하여 반환한다.
// 형식2) Request객체.getSession(false);
// ==> 현재 세션이 존재하면 현재 세션을 반환하고,
// 세션이 존재하지 않으면 null을 반환한다.
HttpSession session = request.getSession();
// 2. Session객체의 setAttribute()메서드를 이용하여 세션값을 저장한다.
// 형식) Session객체.setAttribute("key값", session값);
// ==> 'key값'은 문자열, 'session값'은 자바의 모든 자료형 사용 가능
session.setAttribute("testSession", "연습용 세션입니다.");
session.setAttribute("userName", "홍길동");
session.setAttribute("age", 30);
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>Session 저장</title></head>");
out.println("<body>");
out.println("<h3>Session값이 저장되었습니다.</h3>");
out.println("<a href='"+ request.getContextPath() +"/basic/session/sessionTest.jsp'>시작문서로 이동</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
[SessionRead.java]
package kr.or.ddit.session;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/sessionRead.do")
public class SessionRead extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
// 저장된 Session값 읽어오기
// 1. Session객체를 생성하거나 현재 세션 가져오기
HttpSession session = request.getSession();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>Session 읽기</title></head>");
out.println("<body>");
out.println("<h3>저장된 Session값 확인하기</h3>");
// 2. Session값 가져오기 ==> getAttribute()메서드 이용
// 형식) Session객체.getAttribute("key값");
out.println("<h3>Session값 1개 확인하기</h3>");
String sessionValue = (String) session.getAttribute("testSession");
if(sessionValue == null) {
out.println("<h3>세션의 key값이 'testSession'인 세션 정보는 없습니다.</h3>");
}else {
out.println("<h4>testSession의 세션값 : " + sessionValue + "</h4>");
}
out.println("<br /><hr /><br />");
out.println("<h3>전체 세션 데이터 확인하기</h3>");
out.println("<ol>");
// 세션 전체의 세션이름(key값) 가져오기
Enumeration<String> sessionKeys = session.getAttributeNames();
int cnt = 0;
while(sessionKeys.hasMoreElements()) {
cnt++;
String sessionKey = sessionKeys.nextElement();
out.println("<li>"+ sessionKey +" : "+ session.getAttribute(sessionKey) +"</li>");
}
if(cnt == 0) out.println("<li>세션이 하나도 없습니다.</li>");
out.println("</ol>");
out.println("<br /><hr /><br />");
out.println("<h3>세션 관련 정보</h3>");
// 세션ID ==> 세션을 구분하기 위한 고유한 값
out.println("세션 ID : " + session.getId() + "<br /><br />");
// 생성시간 ==> 1970년 1월 1일부터 경과한 시간(밀리세컨드 단위)
out.println("세션 생성 시간 : " + session.getCreationTime() + "<br /><br />");
// 가장 최근 세션에 접근한 시간 ==> 1970년 1월 1일부터 경과한 시간(밀리세컨드 단위)
out.println("세션 최근 접근 시간 : " + session.getLastAccessedTime() + "<br /><br />");
// 세션의 유효시간 ==> (초 단위)
// 유효시간의 설정은 Session객체.setMaxInactiveInterval(설정시간); 으로 설정할 수 있다.
out.println("세션 유효 시간 : " + session.getMaxInactiveInterval() + "<br /><br />");
out.println("<br /><hr /><br />");
out.println("<a href='"+ request.getContextPath() +"/basic/session/sessionTest.jsp'>시작문서로 이동</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- http://localhost:8090/webTest/basic/session/sessionTest.jsp
[SessionDelete.java]
package kr.or.ddit.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/sessionDelete.do")
public class SessionDelete extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Session 정보 삭제하기
// 1. Session객체를 생성하거나 현재 세션 가져오기
HttpSession session = request.getSession();
// 2-1. 개별적인 Session값 삭제하기
// 형식) Session객체.removeAttribute("key값");
// ==> 세션 자체는 삭제되지 않고 개별적인 세션값만 삭제된다.
session.removeAttribute("testSession");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>Session 삭제</title></head>");
out.println("<body>");
out.println("<h3>Session값이 삭제되었습니다.</h3>");
out.println("<a href='"+ request.getContextPath() +"/basic/session/sessionTest.jsp'>시작문서로 이동</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- http://localhost:8090/webTest/basic/session/sessionTest.jsp
[SessionDelete.java]
package kr.or.ddit.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/sessionDelete.do")
public class SessionDelete extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Session 정보 삭제하기
// 1. Session객체를 생성하거나 현재 세션 가져오기
HttpSession session = request.getSession();
// 2-1. 개별적인 Session값 삭제하기
// 형식) Session객체.removeAttribute("key값");
// ==> 세션 자체는 삭제되지 않고 개별적인 세션값만 삭제된다.
//session.removeAttribute("testSession");
// 2-2. 세션 자체를 삭제하기
// 형식) Session객체.invalidate();
session.invalidate();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>Session 삭제</title></head>");
out.println("<body>");
out.println("<h3>Session값이 삭제되었습니다.</h3>");
out.println("<a href='"+ request.getContextPath() +"/basic/session/sessionTest.jsp'>시작문서로 이동</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
- http://localhost:8090/webTest/basic/session/sessionTest.jsp
'대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
231004_유스케이스 다이어그램 작성 (0) | 2023.10.04 |
---|---|
231004_Servlet 5 (0) | 2023.10.02 |
230927_Servlet 3 (2) | 2023.09.27 |
230926_Servlet 2 (0) | 2023.09.26 |
230925_Servlet 1 (0) | 2023.09.25 |