parameter와 attribute를 구분하지 못하고 그저 사용가능한 것을 쓰고있다가 문득 차이가 궁금해서 정리해보았다.
ServletRequest의 api를 확인해 보자.
우선, parameter에 관한 method를 찾아보면 알겠지만 setter는 없고 getter만 존재한다. 반면에, attribute는 setter, getter 둘 다 존재한다.
Api에서는 request parameter를 request와 함께 보내어지는 여분의 정보라고 한다. 또한 이 parameter들은 쿼리스트링이나 폼 데이터에 포함되어 있다고 한다. 즉, 우리가 servlet에서 사용하는 parameter들은 브라우저에서 사용자가 작성한 데이터들(ex, id, pwd 등)인 것이다. 그러므로 servlet에서는 parameter를 set할 수 없고 get만 가능하며, getParameter()가 반환하는 값 또한 String이다(우리가 입력하거나 입력된 값이므로).
반면 request attribute가 설정되는 방법에는 두 가지가 존재하는데, 하나는 servlet container가 request에 대한 정보를 이용할 수 있게 설정하는 것이고, 다른 방법은 setAttribute()를 이용해서 requestDispatcher가 호출되기 전에 request에 정보를 삽입할 수 있게 해주는 것이다. 그리고 getAttribute()의 반환값은 Object이다.
결론,
parameter는 브라우저(client)에서 만들어진 정보이고,
attribute는 servlet(server)에서 만들어진 정보이다.
출처
docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getAttribute(java.lang.String)
'Web > JSP&Servlet' 카테고리의 다른 글
JSP와 Servlet (0) | 2020.08.14 |
---|