본문 바로가기
Spring

[Spring; 스프링] HttpServletRequest

by daddydontsleep 2023. 11. 8.
728x90
728x90

Spring Logo

JSP 기본 내장 객체 중 request 객체는 JSP에서 가장 많이 사용되는 객체입니다.

클라이언트(Chrome, Edge 등)로 부터 서버로 요청이 들어오면

서버에서는 HttpServletRequest를 생성하며, 요청정보에 있는 패스로 매핑된 서블릿에게 전달합니다.

이렇게 전달받은 내용들을 파라미터로 GET과 POST 형식으로 클라이언트에게 전달합니다.

 


HttpServletRequest

HttpServletRequest를 사용하면 값을 받아올 수 있습니다.

정보를 Controller에 보내면 HttpServletRequest 객체 안에 모든 데이터들이 들어갑니다.

데이터를 꺼낼때는 HttpServletRequest 객체 안의 getParameter()를 사용합니다.

 

`getParameter` 메서드는 Servlet API의 일부로, 웹 애플리케이션의 맥락에서 요청 매개변수를 검색하는 데 사용되며 다음과 같은 방식으로 작동합니다:

 

java.lang.String getParameter(java.lang.String name)

 

설명:
`getParameter` 메서드는 요청 매개변수의 값을 문자열로 반환하는 데 사용됩니다. 요청 매개변수는 HTTP 요청과 함께 보내지는 데이터 조각들입니다. 이 메서드는 매개변수 이름을 인수로 사용하고 해당 값을 반환합니다. 매개변수가 존재하지 않는 경우 null을 반환합니다.

사용:
이 메서드는 해당 매개변수가 하나의 값만 가지고 있는 것을 확신할 때 사용해야 합니다. 매개변수에 여러 값을 가질 수 있는 경우 getParameterValues 메서드를 사용해야 하며, 이 메서드는 값을 배열로 반환합니다.

다중 값 매개변수와의 동작:
getParameter를 다중 값을 가진 매개변수와 함께 사용하는 경우, getParameterValues에 의해 반환된 값 배열에서 첫 번째 값을 반환합니다. 이러한 경우 다른 값과 관련된 정보를 잃을 수 있습니다.

요청 매개변수:
GET 요청의 경우 URL의 쿼리 문자열 또는 POST 요청의 경우 양식 데이터에 요청 매개변수가 있습니다. 이 메서드는 이러한 매개변수를 읽고 그 값을 반환합니다.

요청 본문 읽기에 대한 참고:
매개변수 데이터가 HTTP POST 요청과 같이 요청 본문에 보내진 경우, getInputStream() 또는 getReader()를 사용하여 요청 본문을 직접 읽는 것은 getParameter의 실행에 방해가 될 수 있습니다. getParameter를 사용할 계획이라면 먼저 이러한 다른 메서드를 사용하여 요청 본문을 읽지 않도록 주의해야 합니다.

매개변수:

name: 검색하려는 매개변수의 이름을 지정하는 문자열입니다.
반환:
지정된 이름과 관련된 매개변수의 단일 값을 나타내는 문자열입니다. 매개변수가 존재하지 않는 경우 null을 반환합니다.

참고:
다중 값 매개변수를 처리해야 하는 경우 getParameterValues 메서드를 참조할 수 있습니다.

웹 애플리케이션에서는 이 메서드를 일반적으로 HTML 양식을 통해 사용자가 제출한 데이터를 처리하거나 URL의 쿼리 매개변수로 포함된 데이터를 접근하기 위해 사용합니다. 이것은 서블릿에서 사용자 입력을 처리하는 데 필수적인 메서드입니다.

 

예제:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class ParameterExample extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Set the content type of the response
        response.setContentType("text/html");

        // Get a parameter named "name" from the request
        String name = request.getParameter("name");

        // Check if the parameter exists
        if (name != null && !name.isEmpty()) {
            // If "name" parameter exists, display a greeting
            response.getWriter().println("Hello, " + name + "!");
        } else {
            // If "name" parameter doesn't exist, show a default message
            response.getWriter().println("Please provide a name as a parameter.");
        }
    }
}

 

이 예제 코드는 요청 매개변수 중 "name"을 검색하고 해당 값을 가져옵니다. 그런 다음, "name" 매개변수가 존재하면 사용자에게 환영 메시지를 표시하고, "name" 매개변수가 없는 경우 기본 메시지를 표시합니다.

웹 애플리케이션 서버에 배포한 후, 브라우저에서 http://yourserver/yourwebapp/parameterexample?name=John와 같은 URL을 요청하면 "Hello, John!"과 같은 응답이 표시됩니다. 요청 URL의 "name" 매개변수를 변경하면 다른 사용자 이름을 사용하여 환영 메시지를 받을 수 있습니다.

이 코드는 간단한 예제일 뿐이며, 실제 프로젝트에서는 더 복잡한 로직과 오류 처리가 필요할 수 있습니다.

 

[reference]

https://chobopark.tistory.com/43

 

HttpServletRequest 개념 및 사용법

안녕하세요. 오늘은 HttpServletRequest 에 대해 이야기해보겠습니다. JSP 기본 내장 객체 중 request 객체는 JSP에서 가장 많이 사용되는 객체입니다. 웹브라우저 사용자인 클라이언트로부터 서버로 요

chobopark.tistory.com

https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html

 

ServletRequest (Java EE 6 )

Stores an attribute in this request. Attributes are reset between requests. This method is most often used in conjunction with RequestDispatcher. Attribute names should follow the same conventions as package names. Names beginning with java.*, javax.*, and

docs.oracle.com

https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

 

ServletRequest (Java EE 6 )

Stores an attribute in this request. Attributes are reset between requests. This method is most often used in conjunction with RequestDispatcher. Attribute names should follow the same conventions as package names. Names beginning with java.*, javax.*, and

docs.oracle.com

ChatGPT (openai.com)

 

ChatGPT

Get instant answers, find creative inspiration, learn something new.

openai.com

 

728x90
300x250