[Spring] Httpservlet 메서드

2024. 7. 8. 19:44WebBack/Spring

Spring 주제 URL
원격 프로그램은 어떻게 실행될까? https://ycraah.tistory.com/37
AWS에 배포하기 https://ycraah.tistory.com/38
HTTP 요청을 받아 화면에 출력하기 https://ycraah.tistory.com/39
resourse폴더 이용하기 https://ycraah.tistory.com/40

 

1. getParameter

URL에서 ? 이후를 QueryString이라고 한다. 추가적인 데이터를 보내는데 사용된다. 

 

 

QueryString은 name과 value 한 쌍으로 값이 붙어있다. 그리고 각 쌍은 '&'을 통해서 구분된다. 이 파라미터 값을 얻으려면 getParameter()을 이용하면 된다. 

String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");

 

참고로 파라미터는 '문자열'이기 때문에 저장할 때에도 String으로 저장해야한다. 만약 숫자로 읽으려고 한다면, 아래처럼 Integer을 이용해야한다. 

int yyyy = Integer.parseInt(year);
int mm = Integer.parseInt(month);
int dd = Integer.parseInt(day);

 

 

2.getParameterNames

만약, name만 뽑아서 값을 읽고 싶다면 어떻게 해야할까? 다음과 같이 할 수 있다. 

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;

public void printRequestParameters(HttpServletRequest request) {
    Enumeration<String> parameterNames = request.getParameterNames();

    while (parameterNames.hasMoreElements()) {
        String paramName = parameterNames.nextElement();
        String paramValue = request.getParameter(paramName);
        System.out.println("Parameter Name: " + paramName + ", Value: " + paramValue);
    }
}

 

여기서 Enumeration은 Java의 Iterator과 동일한 역할을 한다고 생각하면 된다. 

 

3.getParameterMap

getParameterMap을 이용하면 전송될 파라미터를 map 형태로 저장할 수도 있다. 

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public void printRequestParameters(HttpServletRequest request) {
    Map<String, String[]> paramMap = request.getParameterMap();

    for (Map.Entry<String, String[]> entry : paramMap.entrySet()) {
        String paramName = entry.getKey();
        String[] paramValues = entry.getValue();

        System.out.print("Parameter Name: " + paramName + ", Values: ");
        for (String value : paramValues) {
            System.out.print(value + " ");
        }
        System.out.println();
    }
}

 

" /example?name=John&age=30&hobbies=reading&hobbies=traveling " 이렇게 입력하면 다음과 같이 저장한다. 

{
    "name": ["John"],
    "age": ["30"],
    "hobbies": ["reading", "traveling"]
}

 

 

4. getParameterValue

만약 name이 중복된다면 value를 배열로 저장할 수 있다. 

import javax.servlet.http.HttpServletRequest;

public void printParameterValues(HttpServletRequest request) {
    String name = request.getParameter("name");
    String age = request.getParameter("age");
    String[] hobbies = request.getParameterValues("hobbies");

    System.out.println("Name: " + name);
    System.out.println("Age: " + age);

    System.out.print("Hobbies: ");
    if (hobbies != null) {
        for (String hobby : hobbies) {
            System.out.print(hobby + " ");
        }
    }
    System.out.println();
}

 

Name: John
Age: 30
Hobbies: reading traveling