728x90
반응형
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자.
클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 다음 3가지 방법을 사용.
- GET - 쿼리 파라미터
- /url?username=hello&age=20
- 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
- ex) 검색, 필터, 페이징 등에서 많이 사용하는 방식
- POST - HTML Form
- content-type:application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20
- ex) 회원 가입, 상품 주문, HTML form 사용
- HTTP message body에 데이터를 직접 담아서 요청
- HTTP API에서 주로 사용, JSON, XML, TEXT
- 데이터 형식은 주로 JSON 사용
- POST, PUT, PATCH
요청 파라미터 - 쿼리 파라미터, HTML Form
HttpServletRequest의 request.getParameter()를 사용하면 다음 두 가지 요청 파라미터를 조회할 수 있다.
GET, 쿼리 파라미터 전송
http://localhost:8080/request-param?username=hello&age=20
POST, HTML 전송
POST / reqeust-param ...
content-type: application/x-www-form-urlencoded
username=hello&age=20
GET 쿼리 파라미터 전송이든, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분 없이 조회할 수 있다.
이것을 간단히 요청 파라미터(request parameter) 조회라 한다.
스프링으로 요청 파라미터를 조회하는 방법을 단계적으로 알아본다.
@Slf4j
@Controller
public class RequestParamController {
@RequestMapping("/request-param-v1")
public void requestParamV1(HttpServletRequest request, HttpServletResponse response) throws IOException {
String username = request.getParameter("username");
int age = Integer.parseInt(request.getParameter("age"));
log.info("username = {}, age = {}", username, age);
response.getWriter().write("ok");
}
}
reqeust.getParameter()
여기서는 단순히 HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회했다.
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 을 실행시키면
다음과 같은 화면이 나오고 위와 같이 정보를 입력하고 전송을 누르면
위와 같이 받을 수 있다.
더보기
참고 : <인프런> 김영한 : 스프링 MVC - 기본 기능
728x90
반응형
'Spring > MVC' 카테고리의 다른 글
HTTP 요청 메시지 - 단순 텍스트 (0) | 2022.07.07 |
---|---|
HTTP 요청 파라미터 - @RequestParam @ModelAttribute (0) | 2022.07.07 |
[웹 애플리케이션 이해] - HTML, HTTP API, CSR, SSR (0) | 2022.07.03 |
[웹 애플리케이션 이해] 동시 요청 - 멀티 쓰레드 (0) | 2022.07.03 |
[웹 애플리케이션 이해] 서블릿 (0) | 2022.07.03 |