Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

HTTP 요청 데이터 - POST HTML Form 본문

인프런/[인프런] 스프링 MVC 1

HTTP 요청 데이터 - POST HTML Form

Seung__ 2021. 9. 8. 20:35

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


 

GitHub - bsh6463/MVC1

Contribute to bsh6463/MVC1 development by creating an account on GitHub.

github.com

 

Comments