바인딩

코코·2020년 8월 6일
0

Servlet/JSP

목록 보기
7/20

바인딩

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

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는 다이렉트로 지정한 서블릿으로 가기 때문에 데이터를 유지한다.

0개의 댓글