response.jsp / ResponseTest01 / ResponseTest02

조수경·2021년 12월 6일
0

고급자바

목록 보기
87/97

response.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

package kr.or.ddit.basic.reqreusp;

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이후의 경로를 기술한다.
		// '/subvletTest/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 {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

ResponseTest02

package kr.or.ddit.basic.reqreusp;

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;

/**
 * Servlet implementation class ResponseTest02
 */
@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'은 전체 URL주소를 기술한다.
		 *  
		 */
		/*
		 //request객체는 공유가 불가능 하다는 것을 보여주는 예제(null갑ㅅ만나옴)
		request.setAttribute("tel", "010-9999-8888");
		
		response.sendRedirect(request.getContextPath()+"/responseRedirectTest.do");
		*/
		
		//데이터를 보내려명 GET방식으로 보낼 수 있다.
		String userName = request.getParameter("username");
		
		response.sendRedirect(request.getContextPath()
				+"/responseRedirectTest.do?username="
				+userName+"&tel=010-9999-8888");
		
	}

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

}
profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보