반응형

getParameter() 그리고 getReader() 사용

HttpServletRequest 객체의 getParameter()를 통해 요청으로부터 파라미터 값을 가져와 작업을 하는 경우 주의가 필요하다.

만약 getParameter()를 통해 요청 파라미터 값을 받게 되는 경우 후속 작업에서 getReader를 통해 요청 값을 처리하는 경우가 생길 때 문제가 될 수 있다.

그 이유는 Servlet Spec에 있는데, Servlet Spec에 명시된 get Parameter에 대한 설명은 다음과 같다.

 

Parameter를 이용할 수 있는 상황에 대해 정의한 부분이다.

  1. 요청이 HTTP, HTTPS 인 경우
  2. HTTP POST 메소드 인 경우
  3. Content-Type 이 application/x-www-form-urlencoded 인 경우
  4. Servlet이 getPrarmeter 유형의 메소드를 최초 호출한 경우

위 조건이 만족하지 않아 사용할 수 없는 경우에는 요청 객체의 input stream을 통해 post data를 이용할 수 있다.

 

다만, 위 조건이 충족한 경우에는 요청 객체에 대한 input stream을 직접 이용할 수 없다.

 

getParameter함수와 getReader 함수를 같이 써야하는 경우 주의가 필요하다.

일반적으로 함수를 사용하거나 할 때 해당 함수의 스펙이나 자세한 문서를 찾아보지 않고 그냥 쓰는 경우가 많은데 그럴 경우 문제가 될 수 있다.

이러한 문제를 극복하기 위해 Wapper 클래스를 상속하여 Reusable하게 만든 HttpServletRequest 클래스를 사용하고 있다.

하지만 was 마다 해당 부분에 대한 처리가 다를 수 있기 때문에 관련 부분을 확인해본 후 사용할 필요가 있다.

 

JEUS의 겨우 : jeus.servlet.engine.WebtoBServletRequest

Tomcat의 경우 : org.apache.catalina.connector.RequestFacade

반응형

'공부 > Java' 카테고리의 다른 글

Java SSL 인증서 검증 흐름 및 확인  (0) 2025.06.17
Out Of Memory 문제 분석  (0) 2025.05.31
[Java] HashMap get 메서드에 관하여  (0) 2021.09.13
JavaAgnet  (0) 2021.05.09
Java Virtual Machine(JVM)  (0) 2021.05.08

+ Recent posts