HttpServletRequest란?
Java 웹 애플리케이션을 개발할 때, HTTP 요청을 처리해야 하는 경우가 많다.
HttpServletRequest 인터페이스는 이러한 HTTP 요청을 처리하기 위한 핵심 클래스 중 하나다.
사실 자주 사용하는 함수는 일부인 것 같고 나머지는 생소한 함수들도 있길래 정리한다.
request.getMethod()
getMethod는 HTTP 요청 메소드를 반환한다. 주로 GET, POST, PUT, DELETE 등의 값 반환.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String method = request.getMethod();
System.out.println("HTTP 요청 메소드: " + method);
/*
예상출력값
HTTP 요청 메서드: GET
*/
request.getParameter(String name)
이 메서드는 HTTP 요청에서 지정된 이름의 매개변수 값을 반환한다.
주로 HTML 폼으로부터 전송된 데이터를 읽을 때 사용.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String username = request.getParameter("username");
String password = request.getParameter("password");
/*
예상 출력값 (예시로 넘겨졌다고 치고)
username = "john"
password = "password123"
*/
request.getRequestURI()
이 메서드는 요청된 URI를 반환한다. URI는 클라이언트가 요청한 자원의 경로를 나타낸다. (프로젝트 + 파일경로 반환)
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String uri = request.getRequestURI();
System.out.println("요청된 URI: " + uri);
/*
예상 출력값
요청된 URI: /example/path
*/
request.getSession(boolean create)
이 메서드는 현재 세션을 반환하거나, 새로운 세션을 생성한다.
세션은 클라이언트와 서버 간의 상태 유지를 가능하게한다.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
HttpSession session = request.getSession(true); // 세션 가져오거나 생성
session.setAttribute("username", "exampleUser");
request.getHeader(String name)
이 메서드는 지정된 이름의 HTTP 헤더 값을 반환한다.
헤더는 클라이언트와 서버 간의 추가 정보를 전달하는 데 사용된다.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String userAgent = request.getHeader("User-Agent");
System.out.println("사용자 에이전트: " + userAgent);
/*
예상출력값
사용자 에이전트: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36
*/
request.getScheme()
사용된 프로토콜(http, https 등)을 반환한다.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String scheme = request.getScheme();
System.out.println("프로토콜: " + scheme);
/*
예상출력값
프로토콜: http
*/
request.getServerName()
서버 도메인 이름 반환한다.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String serverName = request.getServerName();
System.out.println("서버 이름: " + serverName);
/*
예상 출력값
서버 이름: google.com
*/
request.getServerPort()
서버 포트 번호 반환한다.
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
int serverPort = request.getServerPort();
System.out.println("서버 포트: " + serverPort);
/*
예상 출력값
서버 포트: 8080
*/
request.getContextPath()
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String contextPath = request.getContextPath();
System.out.println("컨텍스트 경로: " + contextPath);
/*
예상 출력값
컨텍스트 경로: /mywebapp
*/
request.getServletPath()
서블릿의 경로를 반환 (요청에 사용된 URL에서 파일명만 반환)
HttpServletRequest request = ...; // HttpServletRequest 객체 생성
String servletPath = request.getServletPath();
System.out.println("서블릿 경로: " + servletPath);
/*
예상 출력값
서블릿 경로: /myservlet
*/
예시
https://test.com:8080/main/index.jsp → 이런 주소가 있다고 생각하자.
서버단에서 주소 정보를 추출하자면 아래와 같이 응용할 수 있다.
String url = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + request.getContextPath() + request.ServletPath();
/*
결과값
https://test.com:8080/main/index.jsp
*/
반응형
'Dev > Spring&Java' 카테고리의 다른 글
The selected JRE does not support the current compiler compliance level of 1.8 (0) | 2024.04.09 |
---|---|
[Java] 이클립스 JDK 버전 설정/변경하기 (0) | 2024.04.09 |
Java.lang.OutOfMemoryError: Java heap space (0) | 2023.11.16 |
[Java] 자바에서 JSON 배열 사용하기 (org.json.JSONArray) (0) | 2023.11.08 |
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding)이란 (0) | 2023.09.17 |