서블릿이란?
서블릿이란 쉽게 말해서 클라이언트와 서버가 통신할 때 서버쪽에서 클라이언트의 요청(request)을 받고 응답(response)을 줘야할 때 클라이언트의 요청대로 응답을 만들어주는 프로그래밍 기술이다.
우선 스프링에서 서블릿을 사용하려면 @WebServlet 애너테이션을 사용해야 한다.
@WebServlet 애너테이션이란
name, urlPatterns로 구성되어 있으며 name은 서블릿의 이름, urlPatterns는 URL 매핑 기능을 한다. (@GetMapping과 유사하다.)
@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("단일 파라미터 조회");
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println("username = " + name);
System.out.println("age = " + age);
System.out.println();
위의 코드에 대해서 설명을 해보자면
1. @WebServlet
이 서블렛의 이름은 requestParamServlet이고 url은 /request-param을 매핑한다.
2. 전체 파라미터 조회
request.getParameterNames().asIterator()
.forEachRemaining(paramName -> System.out.println(paramName + "=" + request.getParameter(paramName)));
우선 이 코드를 설명하자면 request의 파라미터 이름들을 가져온다는 뜻으로
URL에는 http://localhost:8080/request-param?name=park&age=29라고 했으니 여기서는 park과 age를 가져온다.
request.getParameter(paramName)은 우리가 가져온 파라미터 이름들 (name, age)의 value를 찾는 코드로 park과 29를 가져오게 된다.
key = value 형식으로 name = park, age = 29가 되는 것이다.
** parameter는 변수를 뜻한다. **
3. 단일 파라미터 조회 (getParameter)
System.out.println("단일 파라미터 조회");
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println("username = " + name);
System.out.println("age = " + age);
System.out.println();
단일 파라미터 조회는 간단하다.
위의 코드에서 request.getParameter()에서 이 괄호 사이에는 우리가 URL에 검색한 파라미터를 넣어줘야 한다.
예를 들면 http://localhost:8080/request-param?name=park&age=29 이렇게 보냈는데
request.getParameter("username")이라고 해버리면 HTTP 요청 메시지에는 name = park이라고 되어있는데 username을 찾으려 하니 null이 출력된다. 여기서 파라미터라고 하는 것은 park, 29가 되는 것이고 getParameter는 name의 파라미터, age의 파라미터를 찾는 것이다.
4. 복수 파라미터 조회 (getParameterValues)
System.out.println("이름이 같은 복수 파라미터 조회");
String[] usernames = request.getParameterValues("name");
for (String name2 : usernames) {
System.out.println("username = " + name2);
}
getParameterValues를 이용하면 여러 개의 파라미터를 조회할 수 있다.
http://localhost:8080/request-param?name=park&name=kim&age=29
URL을 위와 같이 이름을 2개로 바꾼다면 아래와 같은 실행 결과가 나오게 된다.
'Spring > Spring' 카테고리의 다른 글
[Spring] HTTP 요청 파라미터 - 쿼리 파라미터 (1) | 2024.10.03 |
---|---|
[Spring] 로깅 알아보기 (1) | 2024.10.01 |
[Spring] 웹 서버, 웹 애플리케이션 서버 (0) | 2024.09.15 |
[Spring] 빈 스코프 (0) | 2024.09.08 |
[Spring] @PostConstruct, @PreDestroy (1) | 2024.09.07 |