Servlet/JSP의 데이터

Servlet과 JSP에서는 일반적으로 request 객체에 파라미터(parameter) 혹은 속성(attribute)로 데이터를 담아서 주고 받는다.

처음에는 Dispatcher를 이용하는 경우, 리퀘스트가 연장된다고 해서 중간에 거치는 페이지에서 따로 setAttribute를 해주지 않아도 request 속에 파라미터가 남아있을 것이라고 생각했는데, 잘못된 생각이었다.

즉 중간에 페이지를 거친다면 그때마다 다시 setAttribute를 해준 후 다른 페이지를 호출(forward)해줘야 한다.

request.getParameter(파라미터 이름);
request.getAttribute(속성 이름);

request.setAttribute(속성 이름, 데이터);

parameter와 attribute의 차이?
파라미터에는 String만 사용가능
애트리뷰트에는 String외에도 Object, Array 등 다양한 데이터 입력이 가능하다.
파라미터는 request에만 저장이 가능하고, 애트리뷰트는 session, context 등에도 저장이 가능하다.

parameter : 브라우저(클라이언트) 요청에서 넘어온 값 (따라서 HTML의 form 데이터는 parameter로 전송된다.)
attribute : 서버에서 직접 설정하는 값
-> 따라서 setAttribute 는 있지만 setParameter 는 없다.


페이지 이동시 데이터 전달해주는(set) 방법

  1. form 태그
    form 태그의 경우, 다른 과정 없이 method와 action 속성만 지정해주면 해당하는 위치로 form 속의 데이터가 전달된다.
<form action="CalsServlet" method="post">
		숫자1: <input type="text" name="num1"><br>
		숫자2: <input type="text" name="num2"><br>
		<input type="text" name="name"><br>
		<input type="submit" value="계산">
	</form>

이때 getParameter가 받는 파라미터 이름은 name 속성이다.

  1. a 태그
    a 태그를 이용하면 href 속성에 url parameter를 직접 지정해주는 방식으로 데이터를 전달해줄 수 있다.
<a href="template.jsp?body=../main.jsp">메인</a>
  1. 내장 객체 request.setAttribute()

페이지 이동시 데이터 전달받는(get) 방법

  1. request.getParameter() / request.getAttirbute()
    name 하나에 데이터가 여러 개인 경우에는 getParameters() 메서드를 사용한다.

  2. ${속성 이름} / ${param.파라미터 이름}
    JSP에서는 el 식을 통해 바로 데이터를 전달 받아서 html로 출력해줄 수 있다.

좋은 웹페이지 즐겨찾기