본문 바로가기
Java Web/JSP

[JSP] RequestDispatcher

by 스응 2023. 3. 27.
728x90
728x90

RequestDispatcher

  - JSP와 Servlet 사이에서 request와 response를 전달하는 기능을 제공

      · Servlet에서 JSP로 or JSP에서 Servlet으로

      · 데이터를 공유하면서 같이 사용할 수 있음

 

  - 사용 목적

      · 웹 애플리케이션의 모듈화

      · 재사용성 향상

 

  - 요청 주소는 여전히 기존 주소로 유지됨  (비교 : sendRedirect 메서드는 주소도 바뀜)

      → 클라이언트는 전달받은 Servlet or JSP의 정확한 주소를 알지 못함

      → 보안 good

 

#  방식 1) forward() 메서드 사용

  - 서버 내부에서만 작동함

  - request와 response를 그대로 넘김 

 

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
// 데이터를 보내는 Servlet 파일
 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 데이터 설정
    String message = "보낼_데이터";
 
    // 인코딩 표준 지정
    request.setCharacterEncoding("UTF-8");    
    
    // 보낼 데이터 지정
    request.setAttribute("msg", message); // ("key", value)
    
    // request, responce 객체를 보낼 대상 파일 지정
    RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
 
    dispatcher.forward(request, response);
}
 
-----------------------------------------------
 
// 데이터를 받는 jsp 파일
 
<%
    // MIME 타입과 인코딩 표준 지정
    response.setContentType("text/plain; charset=UTF-8"); // 평문
 
    // "key"에 해당하는 value 데이터 가져오기
    String message = (String) request.getAttribute("msg"); 
%>
 
cs

#  방식 2) include() 메서드 사용

  - 다른 Servlet or JSP에서 처리한 결과를 현재 Servlet or JSP의 출력에 포함시킴

 

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
31
32
// 데이터를 보내는 Servlet 파일
 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 데이터 설정
    String message = "보낼_데이터";
 
    // 인코딩 표준 지정
    request.setCharacterEncoding("UTF-8");    
    
    // 보낼 데이터 지정
    request.setAttribute("msg", message); // ("key", value)
    
    // request, responce 객체를 보낼 대상 파일 지정
    RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
 
    dispatcher.include(request, response);
}
 
-----------------------------------------------
 
// 데이터를 받는 jsp 파일
 
<%
    // 인코딩 표준 지정
    response.setCharacterEncoding("UTF-8");
 
    // MIME 타입 지정
    response.setContentType("text/plain"); // 
 
    // "key"에 해당하는 value 데이터 가져오기
     String message = (String) request.getAttribute("msg"); 
%>
cs
320x100
반응형

댓글