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
- Greedy
- SpringBoot
- 김영한
- Servlet
- java
- spring
- JPQL
- transaction
- 스프링
- AOP
- http
- 스프링 핵심 원리
- jpa
- Android
- 스프링 핵심 기능
- 그리디
- 인프런
- Thymeleaf
- 자바
- JDBC
- QueryDSL
- pointcut
- kotlin
- db
- 알고리즘
- 백준
- Exception
- Proxy
- Spring Boot
- springdatajpa
Archives
- Today
- Total
개발자되기 프로젝트
HTTP 요청 데이터 - POST HTML Form 본문
1. HTTP 요청 데이터 - POST HTML Form
HTML의 Form을 사용해서 클라이언트에서 서버로 데이터를 전송
2. 특징
- content-type: application/x-www-form-urlencoded
- 메시지 바디에 쿼리 파리미터 형식으로 데이터를 전달한다.
3. HTML생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/request-param" 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
- 바로 접근 가능.
- 해당 form은 실행 시 post 방식으로 "/request-param"에 접근하여 하래 메서드 실행
- 데이터는 메세지 body에 쿼리 파라미터 형식으로 전달함.
- get 방식과 데이터 전달 방식이 같기 때문에 request.getParameter사용가능 ㅋㅋㅋ
- 즉 HttpServletRequest가 GET, POST 둘다 지원 ㅋㅋ
@WebServlet(name = "RequestParamServlet", urlPatterns = "/request-param")
public class RequestParamServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("[전체 파라미터 조회] - start");
//모든 요청 파라미터 꺼냄.
request.getParameterNames().asIterator().forEachRemaining(paramName -> System.out.println(paramName + " : " + request.getParameter(paramName)));
System.out.println("[전체 파라미터 조회] - end");
System.out.println();
System.out.println("[단일 파라미터 조회] - start");
String username = request.getParameter("username");
String age = request.getParameter("age");
System.out.println("age = " + age);
System.out.println("username = " + username);
System.out.println("[단일 파라미터 조회] - end");
System.out.println();
System.out.println("[이름이 같은 복수 파라미터 조회] - start");
String[] usernames = request.getParameterValues("username");
for (String name : usernames) {
System.out.println("name = " + name);
}
System.out.println("[이름이 같은 복수 파라미터 조회] - end");
response.getWriter().write("ok~~");
}
}
[전체 파라미터 조회] - start
username : kim
age : 20
[전체 파라미터 조회] - end
[단일 파라미터 조회] - start
age = 20
username = kim
[단일 파라미터 조회] - end
[이름이 같은 복수 파라미터 조회] - start
name = kim
[이름이 같은 복수 파라미터 조회] - end
4. 참고
- content-type은 HTTP 메시지 바디의 데이터 형식을 지정한다.
- GET URL 쿼리 파라미터 형식으로 클라이언트에서 서버로 데이터를 전달할 때는
- HTTP 메시지 바디를 사용하지 않기 때문에 content-type이 없다.
- POST HTML Form 형식으로 데이터를 전달하면
- HTTP 메시지 바디에 해당 데이터를 포함해서 보내기 때문에
- 바디에 포함된 데이터가 어떤 형식인지 content-type을 꼭 지정해야 한다.
- 이렇게 폼으로 데이터를 전송하는 형식을 application/x-www-form-urlencoded 라 한다.
5. postman을 활용하는 테스트
- HTML매번 작성하기 귀찮음!!!!!!
- 어차피 CONTETN TYPE지정해서 데이터 넘기면 되는거 아님?
- POSTMAN쓰자 ㅋㅋ
[전체 파라미터 조회] - start
username : kim
age : 20
[전체 파라미터 조회] - end
[단일 파라미터 조회] - start
age = 20
username = kim
[단일 파라미터 조회] - end
[이름이 같은 복수 파라미터 조회] - start
name = kim
[이름이 같은 복수 파라미터 조회] - end
6. GitHub : 210908 POST, HTML FORM
'인프런 > [인프런] 스프링 MVC 1' 카테고리의 다른 글
HTTP 요청 데이터 - API 메시지 바디 - JSON (0) | 2021.09.08 |
---|---|
HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트 (0) | 2021.09.08 |
HTTP 요청 데이터 - GET 쿼리 파라미터 (0) | 2021.09.08 |
HTTP 요청 데이터 (0) | 2021.09.08 |
HttpServletRequest 사용법 (0) | 2021.09.07 |
Comments