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
- GRANT VIEW
- 추상메서드
- 컬렉션프레임워크
- 컬렉션 타입
- 참조형변수
- 제네릭
- EnhancedFor
- NestedFor
- 예외처리
- 자바
- 메소드오버로딩
- 사용자예외클래스생성
- 생성자오버로드
- exception
- 예외미루기
- 한국건설관리시스템
- cursor문
- 환경설정
- 어윈 사용법
- 집합_SET
- oracle
- abstract
- 객체 비교
- 정수형타입
- 대덕인재개발원
- Java
- 다형성
- 인터페이스
- 자동차수리시스템
- 오라클
Archives
- Today
- Total
거니의 velog
230927_Servlet 3 본문
[cookieTest01.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie 연습 1</title>
</head>
<body>
<a href="<%= request.getContextPath() %>/cookieAdd.do">Cookie 정보 저장하기</a><br /><br />
<a href="<%= request.getContextPath() %>/cookieRead.do">Cookie 정보 읽어오기</a><br /><br />
<a href="<%= request.getContextPath() %>/cookieDelete.do">Cookie 정보 삭제하기</a><br /><br />
</body>
</html>
[CookieAdd.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
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;
// Cookie를 추가하는 서블릿
@WebServlet("/cookieAdd.do")
public class CookieAdd 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();
// Cookie를 저장하는 방법 및 순서
// 1. Cookie 객체를 생성한다. ==> '쿠키이름'과 '쿠키값'은 문자열로 지정한다.
// 형식) Cookie cookie변수 = new Cookie("쿠키이름", "쿠키값");
// - '쿠키값'에 한글이 포함되었을 경우에는 URLEncoder.encode()메서드로 인코딩 후 저장한다.
// - 하나의 쿠키는 4KB(4096byte)까지 저장 가능하다.
// - 하나의 도메인 당 20개 (총 300개) 까지 가능하다.
// Cookie nameCookie = new Cookie("name", "홍길동");
Cookie nameCookie = new Cookie("name", URLEncoder.encode("홍길동", "utf-8"));
Cookie ageCookie1 = new Cookie("age", "20");
int age = 30;
// Cookie ageCookie2 = new Cookie("age", age + "");
Cookie ageCookie2 = new Cookie("age", String.valueOf(age));
Cookie genderCookie = new Cookie("gender", "Male");
// 2. 쿠키 속성 설정
// cookie변수.setPath("적용경로"); ==> 지정된 경로와 그 하위 경로에서만 사용 가능하다. 현재 경로가 기본값.
// cookie변수.setMaxAge(유지시간); ==> 단위:초,
// (-1:브라우저가 종료될 때까지 유지(기본값), 0:즉시 삭제된다.)
// cookie변수.setDomain("적용도메인명"); ==> 현재 도메인이 기본값.
// 예)"ddit.or.kr" ==> www.ddit.or.kr, mail.ddit.or.kr, cafe.ddit.or.kr
// cookie변수.setSecure(보안여부); ==> true:보안적용(https프로토콜사용), false:미적용-기본값
// 3. Response객체를 이용하여 쿠키를 웹브라우저로 보낸다.
// 그러면 웹 브라우저가 이 쿠키를 받아서 저장한다.
// 형식) response객체.addCookie(1번에서 만든 Cookie객체);
response.addCookie(nameCookie);
response.addCookie(ageCookie1);
response.addCookie(ageCookie2);
response.addCookie(genderCookie);
//--------------------------------------------
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>쿠키 저장</title></head>");
out.println("<body>");
out.println("<h3>Cookie가 저장되었습니다.</h3><br /><hr /><br />");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest01.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/cookie/cookieTest01.jsp
[CookieRead.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
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;
// 저장된 Cookie를 읽어오는 서블릿
@WebServlet("/cookieRead.do")
public class CookieRead 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();
// 저장된 쿠키 읽어오기
// 1. 전체 쿠키 정보를 Request객체를 통해서 가져온다.
// ==> 가져온 쿠키 정보들은 배열에 저장된다.
// 형식) Cookie[] 쿠키배열변수 = request객체.getCookies();
Cookie[] cookieArr = request.getCookies();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>쿠키 읽기</title></head>");
out.println("<body>");
out.println("<h3>저장된 Cookie 데이터 확인하기</h3>");
if(cookieArr == null || cookieArr.length == 0) {
out.println("<h3>저장된 쿠키가 하나도 없습니다.</h3>");
}else {
// 2. 쿠키 배열에서 해당 쿠키 정보를 구해온다.
for(Cookie cookie : cookieArr) {
String name = cookie.getName(); // '쿠키이름' 가져오기
// String value = cookie.getValue(); // '쿠키값' 가져오기
// 한글로 저장된 쿠키값을 읽어온 후 디코딩해서 사용한다.
String value = URLDecoder.decode(cookie.getValue(), "utf-8"); // '쿠키값' 가져오기
out.println("쿠키이름 : " + name + "<br />");
out.println("쿠키값 : " + value + "<hr />");
}
}
// JSP문서, CSS문서 등이 저장된 폴더 중에서 'ContextPath'에 해당하는 폴더는
// 'WebContent' 폴더이다.
out.println("<br />");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest01.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/cookie/cookieTest01.jsp
[CookieDelete.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
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("/cookieDelete.do")
public class CookieDelete 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();
// 저장된 쿠키 삭제하기
// 쿠키의 삭제는 쿠키의 '유지시간'을 '0'으로 설정하여 다시 저장하는 방법을 사용한다.
// 1. 전체 쿠키 정보 가져오기
Cookie[] cookieArr = request.getCookies();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>쿠키 삭제</title></head>");
out.println("<body>");
out.println("<h3>저장된 Cookie정보 삭제하기</h3>");
if(cookieArr != null) {
// 2. 전체 쿠키 정보 중에서 삭제할 쿠키를 찾는다. (예: gender쿠키 삭제하기)
for(Cookie cookie : cookieArr) {
String name = cookie.getName(); // '쿠키이름' 구하기
if("gender".equals(name)) { // 삭제할 쿠키이름과 같은지 비교하여 찾는다.
// 3. 찾은 쿠키의 유지시간을 '0'으로 설정하여 다시 저장한다.
cookie.setMaxAge(0); // 유지시간 설정
response.addCookie(cookie); // 쿠키 다시 저장
}
}
}
out.println("<br /><hr /><br />");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest01.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/cookie/cookieTest01.jsp
[cookieTest02.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie 연습 2 - Count</title>
</head>
<body>
<a href="<%= request.getContextPath() %>/cookieCountServlet.do">Cookie Count 증가하기</a><br /><br />
<a href="<%= request.getContextPath() %>/cookieCountDelServlet.do">Cookie Count 초기화 하기</a><br /><br />
</body>
</html>
[CookieCountServlet.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
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("/cookieCountServlet.do")
public class CookieCountServlet 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");
PrintWriter out = response.getWriter();
// count라는 쿠키변수를 사용해서 처리하자.
// 쿠키가 있는지 검사하여 있을 때만 count 세기
Cookie[] cookies = request.getCookies();
int count = 0; // 카운트 값 저장할 변수 선언 및 초기화
if(cookies != null) {
for(Cookie cookie : cookies) {
String name = cookie.getName();
if("count".equals(name)) {
// 현재의 count값 구하기
count = Integer.parseInt(cookie.getValue());
}
}
}
count++;
// 증가된 count값을 저장한다.
Cookie countCookie = new Cookie("count", String.valueOf(count));
response.addCookie(countCookie);
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>Cookie Count 연습</title></head>");
out.println("<body>");
out.println("<h3>어서오세요. 당신은 "+ count +"번째 방문입니다.</h3><br /><hr /><br />");
out.println("<a href='"+ request.getContextPath() +"/cookieCountServlet.do'>카운트 증가하기</a>");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest02.jsp'>시작 문서로 가기</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
[CookieCountDelServlet.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
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("/cookieCountDelServlet.do")
public class CookieCountDelServlet 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();
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>쿠키 삭제</title></head>");
out.println("<body>");
out.println("<h3>저장된 Cookie정보 삭제하기</h3>");
Cookie[] cookieArr = request.getCookies();
if(cookieArr != null) { // 쿠키가 비어 있지 않을 때 실행
for(Cookie cookie : cookieArr) {
String count = cookie.getName(); // 쿠키변수 값 구하기
if("count".equals(count)) { // 삭제할 쿠키 찾기
cookie.setMaxAge(0); // 유지시간을 0으로 설정
response.addCookie(cookie); // 변경된 쿠키를 저장한다.
}
}
}
out.println("<br /><hr /><br />");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest02.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/cookie/cookieTest02.jsp
[선생님 풀이]
[cookieTest02.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookie 카운트 연습</title>
</head>
<body>
<a href="<%= request.getContextPath() %>/cookieCountServlet.do">Cookie Count 증가하기</a><br /><br />
<a href="<%= request.getContextPath() %>/cookieCountDelServlet.do">Cookie Count 초기화 하기</a><br /><br />
</body>
</html>
[CookieCountServlet.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
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("/cookieCountServlet.do")
public class CookieCountServlet 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();
// 쿠키 이름은 'count'로 한다.
// 'count'라는 쿠키가 있는지 검사한다.
Cookie[] cookieArr = request.getCookies();
int count = 0; // 읽어온 쿠키값이 저장될 변수
if(cookieArr != null) {
for(Cookie cookie : cookieArr) {
if("count".equals(cookie.getName())) { // 'count' 쿠키이름 찾기
String value = cookie.getValue(); // 현재의 쿠키값(count) 구하기
count = Integer.parseInt(value);
}
}
}
count++; // count값 증가
// 쿠키 객체 생성
Cookie countCookie = new Cookie("count", String.valueOf(count));
response.addCookie(countCookie); // 쿠키 저장
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>쿠키 카운트</title></head>");
out.println("<body>");
out.println("<h3>어서오세요. 당신은 "+ count +"번째 방문입니다.</h3><br /><br />");
out.println("<a href='"+ request.getContextPath() +"/cookieCountServlet.do'>카운트 증가하기</a>");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest02.jsp'>시작 문서로 이동하기</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
[CookieCountDelServlet.java]
package kr.or.ddit.cookie;
import java.io.IOException;
import java.io.PrintWriter;
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("/cookieCountDelServlet.do")
public class CookieCountDelServlet 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();
Cookie[] cookieArr = request.getCookies();
if(cookieArr != null) {
for(Cookie cookie : cookieArr) {
if("count".equals(cookie.getName())) {
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
}
out.println("<html>");
out.println("<head><meta charset='utf-8' /><title>쿠키 삭제</title></head>");
out.println("<body>");
out.println("<h3>count가 초기화 되었습니다.</h3>");
out.println("<a href='"+ request.getContextPath() +"/basic/cookie/cookieTest02.jsp'>시작 문서로 가기</a>");
out.println("</body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
'대덕인재개발원_자바기반 애플리케이션' 카테고리의 다른 글
231004_Servlet 5 (0) | 2023.10.02 |
---|---|
231002_Servlet 4 (0) | 2023.09.27 |
230926_Servlet 2 (0) | 2023.09.26 |
230925_Servlet 1 (0) | 2023.09.25 |
230922_Log4J (0) | 2023.09.22 |