String svrHost = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();
print) svrHost :: http://localhost:8080
if (svrHost.matches("(?i).*127.0.0.1:8080.*")){ // (?i).*내용.* ==> 대소문자 구분없이
// local logic
} else if (svrHost.matches("(?i).*10.185.130.23:6010.*")) {
// dev logic
} else if (svrHost.matches("(?i).*http://www.domain.co.kr.*") || svrHost.matches("(?i).*http://domain.co.kr.*")) {
// http prd logic
} else if (svrHost.matches("(?i).*https://www.domain.co.kr.*") || svrHost.matches("(?i).*https://domain.co.kr.*")) {
// https prd logic
} else { }
ServletRequest와 HttpServletRequest의 구분
ServletRequest는 기본적인 클라이언트 요청에 관한 모든 정보를 가지고 있습니다. 그리고 이 인터페이스는 다시 HttpServletRequest로 확장하여 HTTP프로토콜상에서 할 수 있는 일들이 포함되어져 있습니다. 이 HttpServletRequest는 서블릿의 service의 매개변수의 하나로 서블릿 프로그래머가 클라이언트의 요청에 관한 작업들을 핸들할 수 있도록 하는 중요한 역할을 담당하고 있습니다. ServletRequest인터페이스의 구조를 살펴보면 다음과 같은 부분으로 나눌 수 있습니다.
ServletRequest의 구조
n 클라이언트 자체에 대한 정보추출
n 클라이언트가 전송한 정보 추출
이러한 구조에 따라서 ServletRequest의 메서드를 분류해 보면 다음과 같습니다.
ServletRequest의 멤버메서드 | 클라이언트 자체에 대한 정보추출 |
Object getAttribute(String name): 주어진 이름을 갖는 속성값을 얻습니다. Enumeration getAttributeNames(): 이 요청이 갖는 속성들의 이름에 대한 Enumeration 객체를 얻습니다. void setAttribute(String key, Object o): 주어진 이름의 속성을 설정합니다. void remvoeAttribute(String key): 주어진 이름의 속성을 제거합니다. String getProtocol(): "HTTP/1.1" 과 같은 형식으로 프로토콜 및 major/minor 버전을 얻습니다. String getRemoteAddr(): 요청한 클라이언트의 IP(Internet Protocol) 주소를 얻습니다. String getRemoteHost(): 요청한 클라이언트의 호스트 이름을 얻습니다. String getScheme(): http, https, 또는 ftp 등과 같은 요청을 위해 사용된 방법의 이름을 얻습니다. String getServerName(): 요청을 받은 서버의 이름을 얻습니다. int getServerPort(): 요청을 받은 포트 번호를 얻습니다. |
ServletRequest의 멤버메서드 | 클라이언트가 전송한 정보추출 |
String getCharacterEncoding(): 이 요청에 사용된 문자 인코딩을 얻습니다. int getContentLength(): 이 요청에 포함되어 있는 데이터의 길이를 구하며, 만약 길이를 알 수 없는 경우에는 ?1이 리턴됩니다. String getContentType(): 요청에 포함되어 있는 내용에 대한 MIME 타입 또는 모를 경우에는 null을 얻습니다. Enumeration getParameterNames(): 매개변수들의 이름에 대한 Enumeration 객체를 얻습니다. String getParameter(String name): 주어진 이름의 매개변수가 갖는 값을 얻습니다. String[] getParameterValues(String name): 주어진 이름으로 전달된 매개변수가 갖는 모든 값을 문자열 배열로 얻습니다. 매개변수가 다중 선택이 가능한 리스트(list) 또는 선택박스(choicebox)의 값이라면, 여러 개의 값이 하나의 이름으로 전달될 수 있습니다. BufferedReader getReader(): 요청 바디로부터 문자 인코딩에 따라 텍스트를 읽어들이기 위한 BufferedReader 객체를 얻습니다. ServletInputStream getInputStream(): 이 요청의 바디로부터 바이너리 데이터를 읽어들이기 위해, 한 번에 한 라인씩 읽을 수 있는 ServletInputStream 객체를 얻습니다. |
이와 같은 메서드들은 HTTP 프로토콜에 맞추어져 있는 것이 아니라 일반적인 네트웍 통신기반에 의해서 사용되는 메서드입니다. 그래서 HTTP프로토콜에 존재하는 Session과 Cookie같은 정보를 추출하는 작업은 할 수 없습니다. 그렇기 때문에 HTTP프로토콜을 지원하는 HttpServletRequest에서는 당연히 HTTP프로토콜에 사용되는 대부분의 기능을 포함하고 있습니다. HTTP프로토콜상에서 사용되는 기능별로 분류해 보면 다음과 같습니다.
HttpServletRequest의 기능별 분류
n request객체의 요청 파라미터
n request객체의 HTTP 헤더
n request객체의 세션 데이터
n request객체의 쿠키
n request객체의 요청에 사용된 URL/URI
이러한 분류에 따라 메서드를 나누어 보면 다음과 같습니다.
request객체의 요청 파라미터 |
public String getParameter(String name) : 주어진 이름의 매개변수가 갖는 값을 얻습니다. 지정된 이름의 파라미터가 존재하지 않을 경우 null을 반환합니다. public Enumeration getParameterNames(): 매개변수들의 이름에 대한 Enumeration으로 반환합니다. public String[] getParameterValues(String name) : 주어진 이름으로 전달된 매개변수가 갖는 모든 값을 문자열 배열로 얻습니다. 매개변수가 다중 선택이 가능한 리스트(list) 또는 선택박스(choicebox)의 값이라면, 여러 개의 값이 하나의 이름으로 전달될 수 있지만 매개변수가 하나의 값을 갖는 경우라면 getParameter(String name)를 사용하는 것이 낫습니다.
|
request객체의 HTTP 헤더 |
public String getHeader(String headerName) : HTTP 요청헤더에 지정된 headerName의 값을 문자열로 반환합니다. 만약 HTTP 요청헤더에 headerName의 값이 존재하지 않는다면 null을 반환합니다. public Enumeration getHeaderNames() : HTTP 요청헤더에 포함된 모든 헤더의 이름을 Enumeration으로 반환합니다. public Enumeration getHeaders (String headerName) : HTTP 요청헤더에 포함된 headerName의 모든 값을 Enumeration으로 반환합니다. public int getIntHeader (String headerName) : HTTP 요청헤더에 포함된 headerName의 값을 int로 반환합니다. 지정된 headerName의 값을 int로 변환 할 수 없는 경우 NumberFormatException이 발생하고 headerName 헤더가 HTTP 요청헤더에 존재하지 않을 경우에는 –1을 반환합니다. public long getIDateHeader (String headerName) : HTTP 요청헤더에 포함된 headerName의 값을 millisecond 변환하여 long으로 반환합니다. 지정된 headerName의 값을 int로 변환 할 수 없는 경우 IllegalArgumentException이 발생하고 headerName 헤더가 HTTP 요청헤더에 존재하지 않을 경우에는 –1을 반환합니다. |
request객체의 세션 데이터 |
public HttpSession getSession() : 요청을 시도한 클라이언트에 지정된 HttpSession 객체를 얻습니다. 이전에 생성된 HttpSession 객체가 없었다면 새로운 세션 객체를 생성합니다. public HttpSession getSession(boolean create) : 요청을 시도한 클라이언트에 지정된 HttpSession 객체를 얻습니다. create가 false로 지정된 경우 해당 클라이언트에 대해 생성된 HttpSession 객체가 없는 경우 null을 반환합니다. create가 treu로 지정된 경우 이미 생성된 HttpSession 객체를 반환하고 만약 해당 클라이언트에 생성된 HttpSession 객체가 없는 경우 새로운 세션 객체를 생성하여 리턴합니다. public String getRequestedSessionId(): 요청을 시도한 클라이언트의 세션 id를 문자열로 반환합니다. public String isRequestedSessionId() : 요청을 시도한 클라이언트의 세션 id가 유효하면 true 아니면 false를 리턴합니다. isRequestedSessionIdFromCookie() : 요청을 시도한 클라이언트의 세션 id가 쿠키로 전달된 경우 true 아니면 false를 리턴합니다. isRequestedSessionIdFromURL() : 요청을 시도한 클라이언트의 세션 id가 URL에 포함된 경우 true 아니면 false를 리턴합니다. |
request객체의 쿠키 |
public Cookie[] getCookies() : 클라이언트의 요청에 포함된 쿠키를 Cookie배열로 리턴합니다. |
request객체의 요청에 사용된 URL/URI |
public String getRequestURI() : 요청에 사용된 URL로부터 URI부분을 문자열로 리턴합니다. public String getQueryString():요청에 사용된 쿼리 문자열을 문자열로 리턴합니다.. public String getMethod() : 요청에 사용된 요청방식을 문자열로 리턴합니다. |
'Server Enterprise > Java' 카테고리의 다른 글
[Java] 문자열 포함여부 확인 - contains, indexOf, matches (0) | 2016.01.12 |
---|---|
[random] java.security.SecureRandom (0) | 2016.01.12 |
URL Encoding 특수문자 코드 (0) | 2015.07.22 |
[Encode] java replaceall 특수문자 (0) | 2015.07.22 |
[Date] 날짜 객체 현재 날짜 비교 / DateFormat (0) | 2015.07.08 |