고급JAVA 28강 - Servlet(forward, redirect방식)

Whatever·2021년 12월 6일
0

고급 JAVA

목록 보기
28/32

URL정보 : http부터
URI정보: context path부터 나오는 것

주소를 쓸 때 request.getContextPath사용하면 주소 사용시 용이

페이지 이동 연습

forward , redirect

  • forward
    ==> 특정 서블릿에 대한 요청을 다른 서블릿이나 JSP로 넘겨준다.
    (파라미터도 같이 넘겨줄 수 있다.)
    ==> URL주소는 처음 요청할 때의 값이 바뀌지 않으며, 서버 내부에서만 접근이 가능하다.
    이동되는 페이지로 값을 넘기려면 Request객체의 setAttribute()
    메서드 로 데이터를 셋팅하여 보내고 ,
    받는 쪽에서는 Request객체의 getAttribute()메서드 로 데이터를 읽어온다.
    형식) request.setAttribute("키값", 데이터);
    형식) request.getAttribute("키값");
    형식) request.getRequestDispatcher("이동할 URL주소");
    '이동할 URL주소'는 Context Path이후의 경로를 기술한다.
    "servletTest/myurl.do' ==> '/myurl/do'

  • redirect
    직접 가는 것이 아니라 처음 보내진 곳으로 redirect
    request, response객체가 서로 다른 것이 됨.
    다른 페이지로 제어가 넘어가도록 한다.(이 때 직접 파라미터를 넘길 수 없다.)
    응답시 브라우저에게 '이동할URL'을 전송하여 브라우저가 해당 URL로 이동하는 방식이다.
    (이 때는 무조건 GET방식으로만 이동한다.)
    redirect방식은 Request객체를 유지하지 못한다.(이유는 브라우저에게 새로운 요청을 하기 때문에...)
    명령 : response.sendRedirect("이동할URL");
    ==> '이동할URL'은 전체 URI주소를 기술한다.
    // request객체 공유 불가
    request.setAttribute("tel", "010-9999-8888");
    response.sendRedirect(request.getContextPath() + "/responseRedirectTest.do");
    // 웹 브라우저에게 위의 주소로 새로운 객체를 생성하게 함
    // request, response객체가 새롭게 만들어짐

쿠키데이터를 추가, 읽어오기, 삭제하는 방법

쿠키 - 필요한 데이터를 웹브라우저에 저장(사용자쪽에 저장)
세션 - 필요한 데이터를 서버에 저장

쿠키변수.setSecure(보안여부) // true : 적용, false : 미적용(기본값)
https - 보안이 더 강화된 프로토콜, 보안여부를 true로 해야함
http

  1. 전체 Cookie 정보를 Request객체를 이용해서 가져온다.
    ==> 가져온 Cookie 정보들은 배열에 저장된다.
    형식) Cookie[] 쿠키배열변수 = request.getCookie();
  2. 쿠키 배열에서 해당 쿠키 정보를 구해온다.
    '쿠키값'으로 저장된 데이터가 한글일 경우 디코딩해서 사용한다.

requestTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Request 연습</title>
</head>
<body>
<h2>Request 연습 Form</h2><hr>
<form name="testForm" method="post" action="<%=request.getContextPath()%>/requestTest01.do"> 
<!-- action에 context Path만 적어도 괜찮음 -->
<table border="1">
<tr>
	<td>이름</td>
	<td><input type="text" size="10" name="username"></td> 
</tr>

<tr>
	<td>직업</td>
	<td>
		<select name="job">
			<option value="무직">무직</option>
			<option value="회사원">회사원</option>
			<option value="전문직">전문직</option>
			<option value="공무원">공무원</option>
			<option value="학생">학생</option>
		</select> 
	</td>
</tr>

<tr>
	<td>취미</td>
	<td>
		<input type="checkbox" name="hobby" value="여행" id="hobby1">
		<label for="hobby1">여행</label>
		
		<input type="checkbox" name="hobby" value="게임" id="hobby2">
		<label for="hobby2">게임</label>
		
		<input type="checkbox" name="hobby" value="배드민턴" id="hobby3">
		<label for="hobby3">배드민턴</label>
		
	</td>
</tr>
<tr>
	<td colspan="2">
		<input type="submit" value="확인">
		<input type="reset" value="취소">
	</td>

</tr>
</table>

</form>
</body>
</html>

requestTest01.java

package kr.or.ddit.reqest;

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;

/**
 * Servlet implementation class requestTest01
 */
@WebServlet("/requestTest01.do")
public class requestTest01 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 클라이언트가 보내온 데이터 가져오기
		
		// POST방식으로 전송되어 온 데이터의 인코딩 방식 설정
		request.setCharacterEncoding("utf-8");
		
		// request.getParameter("파라미터명")
		//	==> 해당 '파라미터명'에 설정된 '값'을 문자열로 가져온다.
		
		// http://localhost/servletTest/서블릿URL패턴?파라미터명=값&파라미터명=값0
		
		String userName = request.getParameter("username");
		String job = request.getParameter("job");
		
		//request.getParameterValues("파라미터명");
		// ==> 파라미터명이 같은 것이 여러 개일 경우에 사용한다.
		// ==> 가져온 '값'의 자료형은 'String[]'이다.
		String hobbies[] = request.getParameterValues("hobby");
		
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		
		PrintWriter out = response.getWriter();
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Request 객체로 전송값 구하기</title></head>");
		out.println("<body>");
		out.println("<h2>클라이언트가 보내온 값</h2>");
		out.println("<table border='1'>");
		
		out.println("<tr><td>이름</td>");
		out.println("<td>"+ userName +"</td></tr>");
		out.println("<tr><td>직업</td>");
		out.println("<td>"+ job +"</td></tr>");
		
		out.println("<tr><td>취미</td>");
		out.println("<td>");
		
		if(hobbies!=null) {
			// 배열 크기 만큼 반복 처리
			for(int i=0; i<hobbies.length; i++) {
				out.println(hobbies[i]+ "<br>");
			}
			out.println("<br>");
			
			//향상된 for문
			for(String h : hobbies) {
				out.println(h + "<br>");
			}
		}else {
			out.println("취미가 하나도 없습니다.");
		
		}
		out.print("</td></tr>");
		
		out.println("</table>");
		out.println("<hr>");
		
		out.println("<h2>request객체의 메서드</h2>");
		out.println("<ul>");
		out.println("<li>클라이언트의 IP주소 : "+ request.getRemoteAddr() + "</li>"); //상대방의 접속한 IP주소
		out.println("<li>요청메서드 : " +request.getMethod()+"</li>");
		out.println("<li>Content Path : " +request.getContextPath() +"</li>");
		out.println("<li>프로토콜 : "+request.getProtocol()+"</li>");
		out.println("<li>URL정보 : "+request.getRequestURL()+"</li>");
		out.println("<li>URI정보 : "+request.getRequestURI()+"</li>");
		out.println("</ul>");
		
		
		out.println("</body></html>");
		
		
	}

}

requestTest02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 연습</title>
</head>
<body>
<h2>Request 연습 form(숫자 입력은 정수형으로 입력하세요.)</h2>
<form method="post" action="<%=request.getContextPath()%>/requestTest02.do">
<table>
<tr>
	<td><input type="text" size="10" name="num1"></td>
	<td>
		<select name="op">
			<option value="+"> + </option> 
			<option value="-"> - </option> 
			<option value="*"> * </option> 
			<option value="/"> / </option> 
			<option value="%"> % </option> 
		</select>
	</td>
	<td><input type="text" size="10" name="num2"></td>
	<td><input type="submit" value="확인"></td> 
</tr>
<!-- 
결과예시)
	첫번째숫자 연산자 두번째숫자 = 결과값
 -->
</table>


</form>
</body>
</html>

requestTest02.java

package kr.or.ddit.reqest;

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;

/**
 * Servlet implementation class requestTest02
 */
@WebServlet("/requestTest02.do")
public class requestTest02 extends HttpServlet {
	private static final long serialVersionUID = 1L;



	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 클라이언트가 보내온 값 가져오기
		
		// POST방식으로 전달되는 문자 인코딩 방식 설정
		request.setCharacterEncoding("utf-8");
		
		// 설정된 값 가져오기(요청)
		int num1 = Integer.parseInt(request.getParameter("num1"));
		int num2 = Integer.parseInt(request.getParameter("num2"));
		String op = request.getParameter("op");
		double result = 0; // 계산된 결과가 저장될 변수 
		boolean calcOk = true; // 계산 성공 여부를 나타내는 변수
		
		switch(op) {
		case "+" : result = num1 + num2; break;
		case "-" : result = num1 - num2; break;
		case "*" : result = num1 * num2; break;
		case "/" : 
			if(num2 == 0) {
				calcOk = false;
			}else {
				result = (double)num1 / num2; 
				break;						
			}
		case "%" : 
			if(num2 == 0) {
				calcOk = false;
			}else {
				result = num1 % num2; 
				break;				
			}
		default : result = 0;
		}
		
		//응답 - 출력작업
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		
		PrintWriter out = response.getWriter();
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>값 계산하기</title></head>");
		out.println("<body>");
		out.println("<h3>계산 결과</h3>");
		
		out.print(num1 +" "+ op +" "+ num2+" = ");
		if(calcOk) {
			out.println(result + "<br>");
			
		}else {
			out.println("계산 불능(0으로 나눔)<br>");
		}
		
		out.println("</body></html>");
		
	}

}

responseTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>페이지 이동 연습</title> <!-- 페이지가 여러번 이동해야 할때 -->
</head>
<body>
<h2>forward redirect 연습</h2>

<form method="post" action="<%=request.getContextPath()%>/responseTest01.do">
	forward 이동 : <input type="text" name="username">
	<input type="submit" value="확인">

</form>
<hr>

<form method="post" action="<%=request.getContextPath()%>/responseTest02.do">
	response.sendRedirect: <input type="text" name="username">
	<input type="submit" value="확인">
	
</form>
</body>
</html>

responseTest01.java

package kr.or.ddit.reqest;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class responseTest01
 */
@WebServlet("/responseTest01.do")
public class responseTest01 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		- forward
			==> 특정 서블릿에 대한 요청을 다른 서블릿이나 JSP로 넘겨준다.
				(파라미터도 같이 넘겨줄 수 있다.)
			==> URL주소는 처음 요청할 때의 값이 바뀌지 않으며, 서버 내부에서만 접근이 가능하다.	
				(Request객체의 Response객체를 공유해서 사용한다.)
		*/
		// 이동되는 페이지로 값을 넘기려면 Request객체의 setAttribute()
		// 메서드 로 데이터를 셋팅하여 보내고 ,
		// 받는 쪽에서는 Request객체의 getAttribute()메서드 로  데이터를 읽어온다.
		// 형식) request.setAttribute("키값", 데이터);
		// 형식) request.getAttribute("키값");
		request.setAttribute("tel", "010-1234-5678");
		
		// 형식) request.getRequestDispatcher("이동할 URL주소");
		// '이동할 URL주소'는 Context Path이후의 경로를 기술한다.
		// "servletTest/myurl.do' ==> '/myurl/do'
		RequestDispatcher rd = request.getRequestDispatcher("/responseForwardTest.do");
		rd.forward(request, response);
			
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// Get방식으로 하려면 doPost에서 doGet을 호출해주면 됨.
		doGet(request, response);
	}

}

ResponseForwardTest.java

package kr.or.ddit.reqest;

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;


@WebServlet("/responseForwardTest.do")
public class ResponseForwardTest extends HttpServlet {
	private static final long serialVersionUID = 1L;


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		
		// 파라미터로 넘어온 데이터받기
		String userName = request.getParameter("username");
		
		// setAttribute()로 셋팅한 데이터 받기
		String tel = (String) request.getAttribute("tel");

		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html charset=utr-8");
		
		PrintWriter out = response.getWriter();
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Forward방식 연습</title></head>");
		out.println("<body>");
		out.println("<h2>Forward 결과 </h2><hr>");
		out.println("<table border='1'>");
		out.println("<tr><td>이름</td><td>" + userName + "</td></tr>");
		out.println("<tr><td>전화번호</td><td>" + tel + "</td></tr>");
		out.println("<table>");
		out.println("</body></html>");
		
				
		
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

responseTest02.java

package kr.or.ddit.reqest;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/responseTest02.do")
public class responseTest02 extends HttpServlet {
	private static final long serialVersionUID = 1L;


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	/*
	- redirect
	 	다른 페이지로 제어가 넘어가도록 한다.(이 때 직접 파라미터를 넘길 수 없다.)
	 	응답시 브라우저에게 '이동할URL'을 전송하여 브라우저가 해당 URL로 이동하는 방식이다.
	 	(이 때는 무조건 GET방식으로만 이동한다.)
	 	redirect방식은 Request객체를 유지하지 못한다.(이유는 브라우저에게 새로운 요청을 하기 때문에...)
	 	
	 	명령 : response.sendRedirect("이동할URL");
	 		==> '이동할URL'은 전체 URI주소를 기술한다.
	*/
		
	/*	
	 	// request객체 공유 불가
		request.setAttribute("tel", "010-9999-8888");
		
		response.sendRedirect(request.getContextPath() + "/responseRedirectTest.do");
		// 웹 브라우저에게 위의 주소로 새로운 객체를 생성하게 함
		// request, response객체가 새롭게 만들어짐
 
	 */
		// 데이터를 보내려면 GET방식으로 보낼 수 있다.
		String userName = request.getParameter("username");
		
		response.sendRedirect(
				request.getContextPath() + "/responseRedirectTest.do?username=" + userName
				+ "&tel=010-9999-8888");
		
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

ResponseRedirectTest.java

package kr.or.ddit.reqest;

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;


@WebServlet("/responseRedirectTest.do")
public class ResponseRedirectTest extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		
		// 파라미터로 넘어온 데이터받기
		String userName = request.getParameter("username");
		
		// setAttribute()로 셋팅한 데이터 받기
		//String tel = (String) request.getAttribute("tel");
		String tel = request.getParameter("tel");

		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html charset=utr-8");
		
		PrintWriter out = response.getWriter();
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Redirect방식 연습</title></head>");
		out.println("<body>");
		out.println("<h2>Redirect 결과 </h2><hr>");
		out.println("<table border='1'>");
		out.println("<tr><td>이름</td><td>" + userName + "</td></tr>");
		out.println("<tr><td>전화번호</td><td>" + tel + "</td></tr>");
		out.println("<table>");
		out.println("</body></html>");	
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

cookieTest.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() %>/cookieAddTest.do">
	Cookie 정보 저장하기
</a><br><hr><br>

<a href="<%=request.getContextPath() %>/cookieReadTest.do">
	Cookie 정보 확인하기
</a><br><hr><br>

<a href="<%=request.getContextPath() %>/cookieDeleteTest.do">
	Cookie 정보 삭제하기
</a><br><hr><br>

</body>
</html>

CookieReadTest.java

package kr.or.ddit.basic.cookie;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
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;

@WebServlet("/cookieReadTest.do")
public class CookieReadTest 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();
		// 저장된 Cookie 정보 읽어오기
		// 1. 전체 Cookie 정보를 Request객체를 이용해서 가져온다.
		//		==> 가져온 Cookie 정보들은 배열에 저장된다.
		// 형식) Cookie[] 쿠키배열변수 = request.getCookie();
		Cookie[] cookieArr = request.getCookies();
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Cookie 읽기 연습</title></head>");
		out.println("<body>");
		out.println("<h2>저장된 Cookie 데이터 확인하기</h2>");
		
		if(cookieArr == null|| cookieArr.length==0) {
			out.println("<h2>저장된 쿠키가 하나도 없습니다.</h2>");
		}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 + "<br>");
			}
		}
		out.println("<a href='"+ request.getContextPath() +"/cookie/cookieTest.jsp'>시작문서로 가기</a>");
		out.println("</body></html>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

CookieAddTest.java

package kr.or.ddit.basic.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;

@WebServlet("/cookieAddTest.do")
public class CookieAddTest 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();
		
		// Cookie 저장하는 방법
		// 1. Cookie객체 생성한다. 
		//		==> '쿠키변수'와 '쿠키값'은 문자열로 저장한다.
		// 형식) Cookie cookie변수 = new Cookie('쿠키변수', '쿠키값');
		//  ==> 쿠키값으로 한글을 사용할 경우에는 URLEncoder.encode()메서드로 인코딩 후 저장한다.
		
		Cookie nameCookie = new Cookie("name", URLEncoder.encode("홍길동","utf-8"));
		Cookie ageCookie = new Cookie("age", String.valueOf(30));
		Cookie cityCookie = new Cookie("city", "seoul");
		
		// 2. 쿠키 속성 설정
		// 쿠키변수.setPath("적용경로"); // 지정한 경로와 그 하위 경로에서 사용 가능하다.
		//		  ==> 생략하면 쿠키를 설정할 당시의 경로가 설정된다.
		// 쿠키변수.setMaxAge(유지시간); // 단위(초)
		//		( -1: 브라우저가 종료될 때까지 유지(기본값)
		//		   0: 즉시 쿠키가 삭제된다.)
		// 쿠키변수.setDomain("적용도메인명");
		//		예) ".ddit.or.kr" ==> www.ddit.or.kr, www2.ddit.or.kr
		// 쿠키변수.setSecure(보안여부); // true:적용, false:미적용(기본값)
		
		//https - 보안이 더 강화된 프로토콜, true만 가능
		//http - 보안이 더 낮은 프로토콜, false로 사용 가능
		
		// 3. response객체를 이용하여 쿠키를 웹브라우저로 보내면 웹브라우저가 이 쿠키를 받아서 저장한다.
		// 형식)response객체.addCookie(1번에서 만든 Cookie객체);
		
		response.addCookie(nameCookie);
		response.addCookie(ageCookie);
		response.addCookie(cityCookie);
		
		out.println("<html><head><meta charset='utf-8'>");
		out.println("<title>Cookie 연습</title></head>");
		out.println("<body>");
		out.println("<h2>Cookie 데이터가 저장되었습니다. </h2>");
		
		out.println("<a href=''"+ request.getContextPath() +"/cookie/cookieTest.jsp'>시작문서로 가기</a>");
		out.println("</body></html>");
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}

0개의 댓글