본문 바로가기
java

[JAVA/스프링] setAttribute getParameter / getParameter

by CodeMango 2023. 2. 21.

getParameter와 setAttribute / getAttribute의 쓰임새가 헷갈릴 때가 있습니다.

둘의 공통점과 차이점을 정리해봤습니다.

 

공통점

모두 웹 애플리케이션에서 클라이언트가 서버로 보내는 HTTP 요청에 대한 정보를 가져오는 메소드입니다.

 

 

차이점 

getParameter

- HTTP 요청의 쿼리 문자열에서 파라미터 값을 가져옵니다.

- 보통 HTML 폼을 통해 전송된 데이터나 URL의 쿼리 문자열에서 파라미터를 가져올 때 사용됩니다.

  예) HTML 폼에서 "name" 속성이 "username"인 input 엘리먼트에서 입력된 값을 가져올 수 있습니다.

- String 값을 반환합니다.

- 즉, 쿼리 문자열에서 파라미터 값을 가져오는 데 사용됩니다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {

    // HTML 폼에서 전송된 username 파라미터 값을 가져옴
    String username = request.getParameter("username");
    // username 값을 사용하여 다른 작업 수행
}

setAttribute 

- HttpServletRequest, HttpSession 및 ServletContext 인터페이스에서 모두 사용할 수 있습니다.

- setAttribute 메소드를 사용하여 속성 값을 설정해줄 수 있습니다.

- HTTP 요청에 속성을 추가하거나 변경하는 데 사용됩니다.

- HttpServletRequest, HttpSession 및 ServletContext 인터페이스에서 모두 사용할 수 있습니다.

- 속성 이름과 값을 인수로 받으며, 값은 Object 타입으로 전달됩니다. 

getAttribute 

- HttpServletRequest, HttpSession 및 ServletContext 인터페이스에서 모두 사용할 수 있습니다.

- HTTP 요청에서 지정된 이름의 속성을 가져옵니다.

- 일반적으로 서버 측에서 저장된 데이터를 검색할 때 사용됩니다.

   예) 세션 또는 요청 객체에 저장된 데이터를 가져올 때 사용됩니다.

- Object 값을 반환합니다. 따라서 반환된 값을 적절한 타입으로 형변환하여 사용해야 합니다.

- 즉, 세션 또는 요청 객체에 저장된 데이터는 getAttribute를 사용하여 가져옵니다.

 

setAttribute와 getAttribute를 사용한 예제

다음과 같은 Servlet 코드에서는 setAttribute 메소드를 사용하여 "username" 속성 값을 설정하고, getAttribute 메소드를 사용하여 해당 속성 값을 가져옵니다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
    // "username" 속성 값을 설정
    request.setAttribute("username", "John");
    // "username" 속성 값을 가져와서 출력
    String username = (String) request.getAttribute("username");
    response.getWriter().write("Hello " + username + "!");
}

위의 예제에서는 HttpServletRequest 객체에서 setAttribute 메소드와 getAttribute 메소드를 사용하여 "username" 속성 값을 설정하고, 가져와 출력합니다. 이 속성은 HttpServletRequest 객체에서 설정되었기 때문에, 같은 요청에서만 사용할 수 있습니다.

다음은 HttpSession 객체에서 setAttribute 메소드와 getAttribute 메소드를 사용하는 예제입니다.

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {

    // 세션에서 "user" 속성 값을 가져옴
    HttpSession session = request.getSession();
    String user = (String) session.getAttribute("user");
    if (user == null) {
        // "user" 속성이 없으면 "user" 속성 값을 설정
        session.setAttribute("user", "John");
    }
    // "user" 속성 값을 가져와서 출력
    response.getWriter().write("Hello " + session.getAttribute("user") + "!");
}

위의 예제에서는 HttpSession 객체에서 getAttribute 메소드를 사용하여 "user" 속성 값을 가져오고, 이 속성 값이 없으면 setAttribute 메소드를 사용하여 "user" 속성 값을 설정합니다. 이 속성은 HttpSession 객체에 저장되기 때문에, 같은 세션에서는 모든 요청에서 사용할 수 있습니다.

'java' 카테고리의 다른 글

[java] 인터페이스 interface  (0) 2023.02.21
[java] 추상클래스,추상메서드  (0) 2023.02.21
[JAVA] foreach문  (0) 2023.02.20
[java] Generics(제네릭), Collection(컬렉션)-list, map  (0) 2023.02.20
[java] 다형성  (0) 2023.02.19

댓글