BackEnd/Java

[Servlet/JSP]Forward(요청 위임)

Hojung7 2024. 8. 16. 10:56
▶ forward(요청 위임)

 

- 클라이언트 요청을 받은 Servlet/JSP가

직접 응답하는 것이 아닌

다른 Servlet/JSP에

HttpServletRquest, HttpServletResponse

객체를 넘겨서(위임) 대신 응답하게 하는 것

 

- 요청 위임시

RequestDispatcher(요청 발송자)를 이용

 

- 요청 위임할 JSP ***파일 경로*** 작성

 

- 응답 화면(결과 페이지) 주소는

처음 Servlet이 요청 받은 주소 그대로!

 

#예제

<form action="/fr/forward">

forward 입력 1 : <input type="text" name="forwardInput1">

<br>

forward 입력 2 : <input type="text" name="forwardInput2">

<button>forward 확인하기</button>

</form>

 

[Servlet]

package edu.kh.jsp2.controller;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet ("/fr/forward")
public class ForwardServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		// requestScope에 값 세팅
		 req.setAttribute("str", "안녕하세용용용");
		
		//JSP 파일 경로 작성(webapp 폴더 기준)
		String path = "/WEB-INF/views/fr/forward_result.jsp";
		
		// 요청 발송자를 이용해서 req, resp 위임하기
		req.getRequestDispatcher(path).forward(req, resp);
		
	}
}

 

[result.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>forward 결과 페이지</title>
</head>
<body>
  <h3>request scope 객체를 이용해서 전달 받은 값</h3>

  <ul>
    <li> forward 입력 1 : ${param.forwardInput1}</li>
    <li> forward 입력 2 : ${param.forwardInput2}</li>
    <li> str : ${str}</li>
  </ul>

</body>
</html>

 

#결과