http 요청과 응답

정호윤·2023년 6월 23일

스프링

목록 보기
3/15

브라우저에서 톰캣으로 요청을 할 시 url에 담긴 모든 정보가 HttpServletRequest request 객체에 담겨서 컨트롤러에게 넘어온다.정확히는 맵핑된 메서드에 넘겨준다.
HttpServletRequest 메서드들을 사용해서 url 값들에 접근할수 있다.
어떤 메서드들이 있는이 알아보자
Http://52.85.58.555:8080/ch2/requestInfo?year=2021&month=10&day=1
request.getScheme() = http /어떤 프로토콜을 사용했는지 알려준다.
request.getServerName() = 52.85.58.555 / ip 주소를 알려준다.
request.getServerPort() = 8080 / 어떤 port 번호로 접근했는지 알려준다.
request.getContextPath() = ch2 / 프로젝트 이름을 알려준다.
request.getSercletPath() = requestInfo / 컨트롤에서 mapping한 url을 알려준다.
request.getRequestURL() = Http://52.85.58.555:8080/ch2/requestInfo / QueryString을 제외한 전체 url을 알려준다.
request.getQueryString() = year=2021&month=10&day=1 / url 뒤 추가로 주어진 Query 값들을 알려준다.
이외에도 쿠키,요청 타입 등등을 알수있다.정말 수많은 메서드들이 있다.


getAuthType(): 사용자 인증 방식을 가져옵니다.
getCookies(): 요청에 포함된 쿠키 객체를 반환합니다.
getDateHeader(String name): 날짜 형태의 헤더 값을 반환합니다.
getHeader(String name): 주어진 이름의 요청 헤더 값을 반환합니다.
getHeaders(String name): 주어진 이름의 모든 요청 헤더 값을 반환합니다.
getHeaderNames(): 모든 헤더 이름을 반환합니다.
getIntHeader(String name): 정수 형태의 헤더 값을 반환합니다.
getMethod(): HTTP 요청 방식 (GET, POST 등)을 반환합니다.
getPathInfo(): 요청 URL의 경로 정보를 반환합니다.
getPathTranslated(): 실제 파일 시스템 경로로 변환된 요청 URL 경로를 반환합니다.
getContextPath(): 요청 URL의 컨텍스트 경로를 반환합니다.
getQueryString(): 요청 URL의 쿼리 스트링을 반환합니다.
getRemoteUser(): 인증된 사용자 이름을 반환합니다.
isUserInRole(String role): 현재 사용자가 주어진 역할에 속하는지 여부를 반환합니다.
getUserPrincipal(): 현재 사용자를 나타내는 Principal 객체를 반환합니다.
getRequestedSessionId(): 클라이언트가 요청한 세션 ID를 반환합니다.
getRequestURI(): 요청 URL의 URI 부분을 반환합니다.
getRequestURL(): 요청 URL 전체를 반환합니다.
getServletPath(): 요청 URL의 서블릿 경로를 반환합니다.
getSession(boolean create): 현재 HttpSession을 반환하거나 필요하다면 새로 생성합니다.
getSession(): 현재 HttpSession을 반환합니다.
changeSessionId(): 현재 HTTP 세션의 세션 ID를 변경하고, 새 세션 ID를 반환합니다.
isRequestedSessionIdValid(): 클라이언트가 요청한 세션 ID가 유효한지 여부를 반환합니다.
isRequestedSessionIdFromCookie(): 클라이언트가 요청한 세션 ID가 쿠키로 전송되었는지 여부를 반환합니다.
isRequestedSessionIdFromURL(): 클라이언트가 요청한 세션 ID가 URL에 포함되었는지 여부를 반환합니다.
isRequestedSessionIdFromUrl(): isRequestedSessionIdFromURL()과 같습니다.
authenticate(HttpServletResponse response): 컨테이너의 인증 메커니즘을 사용하여 사용자를 인증합니다.
login(String username, String password): 지정된 사용자 이름과 비밀번호로 로그인합니다.
logout(): 현재 로그인된 사용자를 로그아웃합니다.
getPart(String name): 지정된 이름의 요청 부분을 반환합니다.
getParts(): 요청의 모든 부분을 반환합니다.
upgrade(Class httpUpgradeHandlerClass): 이 요청을 사용하여 HTTP 업그레이드를 수행하고, 지정된 클래스의 새 인스턴스를 반환합니다.

이 외에도 ServletRequest 인터페이스에서 상속받은 메소드들이 있습니다. 예를 들면, getParameter, getParameterValues, getParameterMap, getAttribute, setAttribute 등이 있습니다.

queryString 부분만 떼어서 보자.
?year=2021&month=10&day=1
year = name, value = 2021 구분자는 &
쿼리스트링은 name,value,& 형태로 되어있다.
String year = request.getParameter("year");
이런식으로 name을 매개변수로 줄시 value를 가져올수 있다.

HttpServletResponst response에서는 반대로 컨트롤러에서 브라우저로의 출력 스트림을 얻을수 있다.출력시에는 반드시 contenttype과 인코딩값을 지정해줘야 한다.

profile
개발자로 취직을 희망합니다.

0개의 댓글