250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 추상클래스
- @configuration
- 의존관계
- 스프링컨테이너
- 백준
- http 메시지 컨버터
- 싱글톤
- 프록시
- objecterror
- DI
- ocp
- 티스토리챌린지
- fielderror
- 오버라이딩
- 오블완
- equals()
- java
- 참조변수
- 김영한
- 스프링
- HttpServletResponse
- 코드트리
- 다형성
- 테스트코드
- html form
- 인터페이스
- 코드트리조별과제
- JSON
- 서블릿
- 코딩테스트
Archives
- Today
- Total
minOS
스프링 MVC 기본 기능 - HTTP 요청 파라미터 본문
728x90
HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form
클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용한다.
1) GET - 쿼리 파라미터
- /url?username=hello&age=20
- 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
- 예) 검색, 필터, 페이징등에서 많이 사용하는 방식
2) POST - HTML Form
- content-type: application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20
- 예) 회원 가입, 상품 주문, HTML Form 사용
3) HTTP message body에 데이터를 직접 담아서
- 요청 HTTP API에서 주로 사용, JSON, XML, TEXT
- 데이터 형식은 주로 JSON 사용
- POST, PUT, PATCH
요청 파라미터 - 쿼리 파라미터, HTML Form
HttpServletRequest의 request.getParameter()를 사용하면 다음 두 가지 요청 파라미터를 조회할 수 있다.
1) GET 방식: 쿼리 파라미터 전송
GET 방식은 URL에 파라미터를 추가하여 서버에 데이터를 전송한다. 예를 들어, 다음과 같은 요청이 있을 때:
http://localhost:8080/request-param?username=hello&age=20
위 URL은 username이라는 파라미터에 hello라는 값을, age라는 파라미터에 20이라는 값을 포함하고 있다.이 경우 HttpServletRequest 객체의 request.getParameter() 메서드를 사용하여 다음과 같이 파라미터 값을 조회할 수 있다
위 코드를 통해 username 변수에는 hello가, age 변수에는 20이 저장된다.String username = request.getParameter("username"); String age = request.getParameter("age");
2)POST 방식: HTML Form 전송
POST 방식은 폼 데이터를 HTTP 요청의 본문에 포함하여 서버로 전송한다. 예를 들어, 다음과 같은 HTML 폼이 있을 때
<form action="/request-param" method="post"> <input type="text" name="username" value="hello"> <input type="text" name="age" value="20"> <button type="submit">Submit</button> </form>
클라이언트가 폼을 제출하면 서버로 다음과 같은 HTTP 요청이 전송된다POST /request-param HTTP/1.1 Host: localhost:8080 Content-Type: application/x-www-form-urlencoded Content-Length: 27 username=hello&age=20
이 경우에도 HttpServletRequest 객체의 request.getParameter() 메서드를 사용하여 다음과 같이 파라미터 값을 조회할 수 있다
String username = request.getParameter("username"); String age = request.getParameter("age");
위 코드를 통해 username 변수에는 hello가, age 변수에는 20이 저장된다.
스프링으로 요청 파라미터를 조회하는 방법
import com.example.springmvc.basic.HelloData; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.io.IOException; import java.util.Map; @Slf4j @Controller public class RequestParamController { // HttpServletRequest와 HttpServletResponse를 사용한 요청 파라미터 처리 예제 @RequestMapping("request-param-v1") public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException { // 요청 파라미터에서 username과 age를 추출 String username = request.getParameter("username"); int age = Integer.parseInt(request.getParameter("age")); // 로그로 username과 age 출력 log.info("username = {} , age = {}", username, age); // 응답으로 "ok" 메시지 전송 response.getWriter().write("ok"); } }
로그
Post Form 페이지 생성
먼저 테스트용 HTML Form을 만들어야 한다.리소스는 `/resources/static` 아래에 두면 스프링 부트가 자동으로 인식한다.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/request-param-v1" method="post"> username: <input type="text" name="username" /> age: <input type="text" name="age" /> <button type="submit">전송</button> </form> </body> </html>
http://localhost:8080/basic/hello-form.html 접속POST
728x90
'TIL > 김영한의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 카테고리의 다른 글
스프링 MVC 기본 기능 - HTTP 요청 메시지(1) (0) | 2024.07.29 |
---|---|
스프링 MVC 기본 기능 - @RequestParam,@ModelAttribute (0) | 2024.07.28 |
스프링 MVC 기본 기능 - HTTP 요청 (0) | 2024.07.28 |
스프링 MVC 기본 기능 - 요청 매핑 API 예시 (0) | 2024.07.28 |
스프링 MVC 기본 기능 - 요청 매핑 (0) | 2024.07.21 |