상세 컨텐츠

본문 제목

parameter 전송 및 받아오기

Java TIL

by 개발일지작성 2023. 12. 15. 16:23

본문

728x90

input 값이나 select value 값으로 전송하고 싶을 때 parameter를 이용하여 값을 전달한다.

ex) HttpServletRequest, @RequestParam, @ModelAttribute

 

1. HTTPServletRequest (인터페이스)

웹 애플리케이션에서 클라이언트로부터 온 HTTP 요청(GET, POST)에 대한 정보를 얻을 수 있는 객체이다.

이 인터페이스를 사용하면 클라이언트가 보낸 HTTP 요청의 여러 속성 및 데이터에 접근이 가능하다.

 

주요 메서드 및 속성:

  1. 파라미터(Parameter) 관련 메서드:
    • getParameter(String name): 주어진 이름의 요청 파라미터 값을 반환
    • getParameterNames(): 모든 요청 파라미터의 이름을 Enumeration으로 반환
  2. 속성(Attribute) 관련 메서드:
    • setAttribute(String name, Object o): 지정된 이름으로 속성을 설정
    • getAttribute(String name): 지정된 이름의 속성 값을 반환
    • removeAttribute(String name): 지정된 이름의 속성을 제거
  3. 세션(Session) 관련 메서드:
    • getSession(): 현재 요청과 관련된 세션을 반환
    • getSession(boolean create): 현재 요청과 관련된 세션을 반환하며, 세션이 없는 경우에는 새로 생성할지 여부를 결정
  4. 요청 헤더(Header) 관련 메서드:
    • getHeader(String name): 주어진 이름의 요청 헤더 값을 반환
    • getHeaders(String name): 주어진 이름의 모든 요청 헤더 값을 반환
    • getHeaderNames(): 모든 요청 헤더의 이름을 Enumeration으로 반환
  5. 요청 메서드 및 경로 관련 메서드:
    • getMethod(): HTTP 요청 메서드(GET, POST 등)를 반환
    • getRequestURI(): 요청된 URI를 반환

 

2. @RequestParam

HTTP 요청 파라미터를 메서드의 파라미터로 바인딩할 때 사용된다. 클라이언트가 HTTP 요청을 보낼 때 쿼리 파라미터나 폼 데이터 등을 전달하면, 이를 메서드의 파라미터로 받아서 사용할 수 있음

 

사용 예시)

 

  • @GetMapping("/greet") : HTTP GET 요청이 "/greet" 경로로 오면 이 메서드가 처리
  • @RequestParam String name : 클라이언트가 "name" 이라는 파라미터를 전달하면이를 메서드의 'name' 파라미터에 바인딩

 

예를 들어, "/greet?name=John" 으로 요청을 보내면 메서드는 "Hello, John!" 이라는 응답을 반환한다.

@RequestParam 은 기본적으로 필수 바라미터로 간주되어, 클라이언트가 해당 파라미터를 전달하지 않으면 예외가 발생한다. 필수가 아닌 파라미터로 설정하려면 @RequestParam(required = false) 와 같이 사용할 수 있다.

 

/greet로 요청 시 "name" 파라미터를 생략할 수 있고, 생략할 경우 "Hello, Geust!" 가 반환됨

 

3. @ModelAttribute

메서드의 파라미터에 해당하는 객체를 자동으로 모델에 추가한다. 주로 HTML 폼과 연동하여 사용자의 입력 데이터를 객체로 바인딩할 때 유용하게 사용

 

사용 예시)

 

  • @ModelAttribute("user") User user : showUserForm 메서드와 saveUser 메서드의 파라미터로 User 객체를 받음, 이 때 User라는 이름으로 모델에 추가됨
  • showUserForm 메서드는 사용자의 입력을 받기 위한 폼을 보여주는 역할을 함. 폼에서 입력한 데이터는 자동으로 User 객체로 바인딩
  • saveUser 메서드는 사용자가 입력한 데이터를 받아와서 처리하는 역할을 함. 이 메서드에서 데이터를 저장하거나 다른 비즈니스 로직을 수행할 수 있음

 

HTML 폼에서 사용자 입력을 받는 부분 구상

 

@ ModelAttribute 는 컨트롤러 메서드의 파라미터로 사용되면 해당 객체를 모델에 추가하고, 뷰에서 이를 참조할 수 있게 만듬. 주로 사용자의 입력 데이터를 받아 처리하는 폼 처리와 관련된 기능에서 활용

관련글 더보기