HttpServletRequest 객체에서 Parameter와 Attribute는 서로 다른 용도로 사용되며, 요청(request) 처리 시 다양한 데이터를 저장하고 전달하는 방식입니다. 이 두 개념은 저장 목적, 데이터의 생명 주기, 사용 방식에서 차이가 있습니다.
| 구분 | Parameter | Attribute |
|---|---|---|
| 저장 목적 | 클라이언트가 요청 시 전송한 파라미터 데이터를 담음 | 서버에서 요청 처리 중 추가한 데이터를 담음 |
| 데이터 소스 | 주로 쿼리 문자열, 폼 데이터, URL 파라미터 | 서버에서 코드로 추가된 객체 |
| 데이터 유형 | 문자열(String) | 객체(Object) |
| 생명 주기 | 요청이 시작될 때부터 클라이언트 요청 내에서 유지 | 요청 객체 내에서 유지되며, 필요 시 추가 및 수정 가능 |
| 사용 메서드 | getParameter(), getParameterValues() | setAttribute(), getAttribute(), removeAttribute() |
Parameter는 클라이언트가 서버로 보낸 요청의 데이터를 포함하는 값입니다. 예를 들어, HTML 폼 데이터, 쿼리 문자열, URL 매개변수 등이 이에 해당합니다. 주로 String 타입으로 다루며, 사용자가 입력한 값을 서버에서 읽어올 때 사용합니다.
getParameter(String name): 지정한 이름의 요청 파라미터 값을 String으로 반환합니다.getParameterValues(String name): 동일한 이름을 가진 여러 요청 파라미터의 값을 String[] 배열로 반환합니다. (예: 체크박스)클라이언트가 login.jsp?username=johndoe&password=1234 같은 URL로 요청할 때, username과 password는 요청 파라미터가 됩니다.
String username = request.getParameter("username");
String password = request.getParameter("password");
username과 password는 클라이언트가 보낸 값이며, request.getParameter()를 통해 String으로 읽어올 수 있습니다.Attribute는 서버에서 요청(request) 객체에 추가하는 데이터입니다. 주로 서블릿과 JSP 간의 데이터 전달에 사용됩니다. Attribute는 객체(Object) 형태로 저장되며, 서버에서 요청 처리 중 필요한 데이터를 공유하는 용도로 사용됩니다. 클라이언트가 직접 접근하거나 변경할 수 없고, 서버 내에서만 유효합니다.
setAttribute(String name, Object value): 지정한 이름으로 객체를 속성으로 저장합니다.getAttribute(String name): 지정한 이름의 속성 값을 반환합니다.removeAttribute(String name): 지정한 이름의 속성을 제거합니다.서블릿에서 데이터를 JSP로 전달할 때 Attribute를 사용합니다. 예를 들어, 사용자의 이름과 같은 데이터를 JSP로 넘겨야 할 때 Attribute에 저장하여 전달합니다.
// 서블릿에서 설정
request.setAttribute("username", "John Doe");
// JSP에서 접근
String username = (String) request.getAttribute("username");
이 경우, username이라는 속성은 서블릿에서 JSP로 전달되어 JSP에서 사용할 수 있습니다. 클라이언트는 이 데이터를 직접 변경할 수 없으며, 서버 측에서만 유지됩니다.
getParameter()로 문자열 값을 읽습니다.setAttribute()와 getAttribute()로 객체를 저장하고 읽어옵니다.이처럼 Parameter는 클라이언트가 보낸 값을 읽을 때, Attribute는 서버에서 요청 처리 중 데이터를 전달할 때 사용하여 요청의 성격에 맞게 데이터를 다루는 것이 중요합니다.