반응형

▶ 바인딩 

 

: 서블릿에서 다른 서블릿 또는 JSP로 대량의 데이터를 공유하거나 전달하고 싶을 때 사용

 

 

˙서블릿 객체에서 사용되는 바인딩 관련 메서드

setAttribute(String name, Object obj) : 자원(데이터)를 각 객체에 바인딩 합니다.

getAttribute(String name) 각 객체에 바인딩된 자원(데이터)를 name으로 가져옵니다.

removeAttribute(String name) 각 객체에 바인딩 된 자원(데이터)을 name으로 제거합니다.

 

 

 

HttpServletRequest를 이용한 redirect 포워딩 시 바인딩 

 

① FirstServlet.java 생성

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
33
package sec04.ex01;
 
import java.io.IOException;
import javax.servlet.ServletConfig;
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 FristServlet
 */
@WebServlet("/first")
public class FristServlet 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 {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        request.setAttribute("address""서울시 성북구");
        response.sendRedirect("second");
    
    }
 
 
}
 
cs

 

② SecondServlet.java 생성

 

http://colorscripter.com/s/g4txVE0

 

공유된 코드 - Color Scripter

저작권자 : jung_ye_jin@naver.com 삭제 요청 코드 설명 : SecondServlet

colorscripter.com

 

③ http://localhost:70/proc2/first 으로 실행

주소가 null 이 나오는 이유는 redirect 방식의 포워드 과정 때문입니다.

포워딩 과정 1단계인 웹 브라우저에서 요청할 때 서블릿에 전달되는 첫 번째 request는 웹 브라우저를 통해

재요청되는 3단계의 두번째 request와 다른 요청입니다.

즉 redirect 방식으로는 서블릿에서 바인딩한 데이터를 다른 서블릿으로 전송할 수 없습니다.

 

 

 

▶ HttpServletRequest를 이용한 dispatch 포워딩 시 바인딩 

 

① FirstServlet2.java 생성

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
33
package sec04.ex02;
 
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 FirstServlet2
 */
@WebServlet("/first2")
public class FirstServlet2 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 {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        request.setAttribute("address""서울시 성북구");
        
        RequestDispatcher dispatch = request.getRequestDispatcher("second2");
        dispatch.forward(request, response);
    }
 
}
 
cs

 

②SecondServlet2.java 생성

 

http://colorscripter.com/s/x91Sb73

 

공유된 코드 - Color Scripter

저작권자 : jung_ye_jin@naver.com 삭제 요청 코드 설명 : SecondServlet2

colorscripter.com

 

③ http://localhost:70/proc2/first2 으로 실행

첫번째 서블릿에서 두번째 서블릿으로 전달되는 request가 브라우저를 거치지 않고 바로 전달

따라서 첫번째 서블릿의 request에 바인딩 된 데이터가 그대로 전달됨

반응형

+ Recent posts