Servlet-JSP

바인딩

voider 2020. 9. 10. 13:23

바인딩

웹 프로그램 실행 시 자원(데이터)을 서블릿 관련 객체에 저장하는 방법

GET방식으로 많은 데이터를 전달하기에 한계가 있다. 많은 양의 데이터를 전달할 때 바인딩binding을 사용한다.

그냥 key-value다.

/*데이터를 각 객체에 바인딩한다.*/
setAttribute(String name, Object obj)

/*각 객체에 바인딩된 데이터를 name으로 가져온다.*/
getAttribute(String name)

/*각 객체에 바인딩된 데이터를 name으로 제거한다.*/
removeAttribute(String name)

예제

보내는 쪽

@WebServlet("/bind")
public class BindingTestServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        request.setAttribute("address", "소행성 b-612");

        RequestDispatcher dis = request.getRequestDispatcher("/getBind");
        dis.forward(request, response);
    }
}

받는 쪽

@WebServlet("/getBind")
public class GetBindingTestServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        String address = (String)request.getAttribute("address");
        System.out.println("adress : " + address);
        out.print("<html><body><h1>나의 주소 : "+address+"</h1></body></html>");
    }
}

redirect가 아닌 RequestDispatcher를 이용한 이유는 redirect는 클라이언트를 거치기 때문에 중간에서 데이터가 손실된다. 반면 dispatcher는 다이렉트로 지정한 서블릿으로 가기 때문에 데이터를 유지한다.

'Servlet-JSP' 카테고리의 다른 글

쿠키  (0) 2020.09.10
ServletContext & ServletConfig  (0) 2020.09.10
Connection Pool  (0) 2020.09.10
포워드  (0) 2020.09.10
JDBC  (0) 2020.09.10