삼색꼬치전 2024. 6. 3. 16:27

 

Servlet

 

package hello.servlet.basic;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet.service");
        System.out.println("request = " + request);
        System.out.println("response = " + response);

        String username = request.getParameter("username");
        System.out.println("username = " + username);
    }
}

 

http://localhost:8080/hello?username=kim 요청

protected void service(HttpServletRequest request, HttpServletResponse response)

 

실행

 

 

! Query Parameter vs Path Variable

! HTTP 

 

-> 클라이언트 데이터 전달.

1. (GET) 쿼리 파라미터

2. (POST) HTML Form

3. HTTP message body 에 데이터 담아 보냄

- JSON, TXT, XML

 

 

1. 쿼리 파라미터

?username=kim&age=20

System.out.println("[전체 파라미터 조회] - start");
        // ?쿼리 스트링 이후로 붙은 파라미터 전체 조회
        request.getParameterNames().asIterator()
                .forEachRemaining(paramName -> System.out.println(paramName +
                        "=" + request.getParameter(paramName)));
        System.out.println("[전체 파라미터 조회] - end");

 

console

[전체 파라미터 조회] - start
username=kim
age=20
[전체 파라미터 조회] - end

 

?username=kim&age=20&username=lee&age=33

        System.out.println("[이름이 같은 복수 파라미터 조회]");
        System.out.println("request.getParameterValues(username)");
        String[] usernames = request.getParameterValues("username");
        for (String name : usernames) {
            System.out.println("username=" + name);
        }

console

[이름이 같은 복수 파라미터 조회]
request.getParameterValues(username)
username=kim
username=lee

=> 복수 파라미터 전체 값 가져옴

 

단일 파라미터의 경우 -> request.getParameter()

 

 

2. HTML Form

<form action="/request-param" method="post">
  username: <input type="text" name="username" />
  age:      <input type="text" name="age" />
  <button type="submit">전송</button>
</form>

 

요청 url http://localhost:8080/request-param

post 

 

 

=>클라이언트(웹 브라우저) 입장에선 1과 2가 차이 있지만 서버 입장에서는 차이 x 

request.getParameter로 찾아오면 됨. 

 

3.