JSP - 내장 객체
내장 객체
JSP 컨테이너에서 미리 정의된 객체로 자동으로 객체가 생성되기 때문에 import문, useBean태그를 사용하지 않아도 자유롭게 사용할 수 있다.
내장 객체 종류
내장 객체 | 반환 타입 | 설명 |
request | HttpServletRequest | 웹 브라우저의 HTTP 요청 정보를 저장한다. |
response | HttpServletResponse | 웹 브라우저의 HTTP 요청에 대한 응답 정보(HTML)를 저장한다. |
out | jspWrite | JSP에 출력(HTML)할 내용을 담고 있는 출력 스트림 |
session | HttpSession | 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장한다. |
application | ServletContext | 웹 에플리케이션의 콘텍스트 정보를 저장 |
pageContext | PageContext | JSP 페이지의 정보를 저장 |
page | Object | JSP 페이지에 구현한 자바 클래스로 JSP 페이지 자체를 나타냄 |
config | ServletConfig | JSP 페이지의 설정 정보를 저장함 |
exception | Throwable | JSP 페이지의 예외 발생 처리 |
내장 객체의 속성 처리 메서드
속성을 관리하는 데 사용되는 메서드로 주로 request, session, application, 또는 pageContext 객체에서 사용된다.
*JAVA의 Map과 유사하게 name을 키로, value를 값으로 저장하는 방식이다.
메서드 | 반환 타입 | 설명 |
setAttribute(String name, Object value) | void | 특정 name(키)에 대해 value(값)를 저장한다. |
getAttribute(String name) | Object | 저장된 name(키)에 해당하는 값을 반환, 형변환 해줘야함 |
removeAttribute(String name) | void | 저장된 name(키)에 해당하는 값을 제거 |
getAttributenames() | java.util.Enumeration | 저장된 모든 name(키)의 이름을 반환 |
request 내장 객체
웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장 및 관리하는 객체(1회용)
사용 방식
1. WEB ㅡ> JSP(JAVA)
/a?id=abc ㅡ> request.getParameter("id"); ==> abc
2. JAVA ㅡ> JSP
<JAVA>
String aa="a1";
req.setAttribute("a",aa);
ㅣ
\/
<JSP>
request.getAttribute("a");
요청 파라미터 관련 메서드
요청 파라미터란?
폼(input)에 데이터를 입력한 후 전송했을 때 URL의 ?뒤에 붙어 전달되는 키-값 쌍이 요청 파라미터다. 둘 이상의 파라미터를 전송하면 (&)를 사용해 요청 파라미터를 연결한다.
?id=Apple&name=Orange
메서드
메서드 | 반환 타입 | 설명 |
getParameter(String name) | String | 전달된 단일 파라미터 값을 문자열로 반환 |
getParameterValues(String name) | String[] | 같은 이름의 파라미터가 여러 개일 때 배열로 반환 |
getParameterNames() | java.util.Enumeration | 전달된 모든 파라미더의 이름을 Enumeration으로 반환 |
getParameterMap() | java.util.Map | 모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 반환, Map<String, String[]>의 형태 |
사용 예시
------FORM------
<form action="process.jps" method="get">
<input type="text" name="id">
<input type="text" name="pwd">
<input type="submit" value="전송">
</form>
-----process-----
<%
Enumeration en = request.getParameterNames();
while(en.hasMoreElements()){
String name = en.nextElement();
String value = request.getParameter(name);
%>
<%=name> <%=value>
<%
}
%>
1. form 태그로 process.jsp에 GET방식으로 id와 pwd의 값을 전송한다.
2. request.getParameterNames()로 모든 파라미터의 name을 Enumeration타입의 en에 저장한다.
3. while문으로 en내에 요소가 있을 때까지 반복한다.
4. nextElement()를 사용해 각 파라미터의 이름을 가져온다.
5. 가져온 이름을 사용해 파라미터의 value값도 가져온다.
6. name과 value를 출력 후 반복한다.
요청 HTTP 헤더 관련 메서드
웹 브라우저는 HTTP 헤더에 부가적인 정보를 담아 서버에 전송한다. 아래 메서드를 사용하면 HTTP의 헤더정보나 쿠키 관련 정보를 얻을 수 있다.
메서드
메서드 | 반환 타입 | 설명 |
getHeader(String name) | String | 헤더의 name값을 가져온다. |
getHeaders(String name) | Enumeration | 헤더의 name 목록 값을 가져온다. |
getHeaderNames() | Enumeration | 모든 헤더 이름을 가져온다. |
getIntHeader(String name) | int | 헤더의 name 값을 정수로 가져온다. |
getDateHeader(String name) | long | 헤더의 name 값을 시간 값으로 가져온다. |
getCookies() | java.servlet.http.Cookie | 모든 쿠키 값을 가져온다. |
웹 브라우저/ 서버 관련 메서드
웹 브라우저와 서버의 정보를 가져오는 메서드
메서드 | 반환 타입 | 설명 |
getRemoteAddr() | String | 웹 브라우저의 IP 주소를 가져온다. |
getContentLength() | long | 웹 브라우저의 요청 파라미터 길이를 가져온다. |
getCharacterEncoding() | String | 웹 브라우저의 문자 인코딩을 가져온다. |
getContentType() | String | 웹 브라우저의 콘텐츠 유형을 가져온다. |
getProtocol() | String | 웹 브라우저의 요청 프로토콜을 가져온다. |
getMethod() | String | 웹 브라우저의 HTTP 요청 메서드(GET, POST)를 가져온다. |
getRequestURI() | String | 웹 브라우저가 요청한 URI 경로를 가져온다. |
getContextPath() | String | 현재 JSP 페이지의 웹 애플리케이션 컨텍스트 경로를 가져온다. |
getServerName() | String | 서버의 이름을 가져온다. |
getServerPort() | int | 실제 요청 서버 포트 번호를 가져온다. |
getQueryString() | String | 웹 브라우저의 전체 요청 파라미터 문자열을 가져온다.(GET방식에 주로 사용) |
response 내장 객체
JSP 컨테이너(톰캣)는 서버(아파치)에서 응답하는 정보를 처리하기 위해 response 내장 객체를 사용한다.
클라이언트의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보는 응답 헤더(택배 송장)와 처리 결과 데이터(text/html)를 포함한다.
페이지 이동 관련 메서드
페이지를 이동하는 방법은 2가지 있다.
forward방식(내부 이동)
<jsp:forward page="경로"/>
controller ㅡ> jsp
URL로 요청 정보가 그대로 전달된다.
리다이렉트 방식(외부 이동)
response.sendRedirect("경로");
controller ㅡ> client ㅡ> controller
클라이언트가 새로 요청한 것과 같은 방식으로 페이지가 이동된다.
request객체를 사용하지 못하며(1회용) 이전 요청 정보는 사라진다.
응답 HTTP 헤더 관련 메서드
응답 정보에 헤더를 추가하는 메서드
*응답 헤더는 택배의 송장이라고 생각하면 쉽다.
메서드 | 반환 타입 | 설명 |
addCookie(Cookie cookie) | void | 쿠키를 추가한다 |
addDateHeader(String name, long date) | void | 설정한 헤더 이름 name에 날짜/시간을 추가한다 |
addHeader(String name, String value) | void | 설정한 헤더 이름 name에 value를 추가한다 |
addIntHeader(String name, int value) | void | 설정한 헤더 이름 name에 정수값 value를 추가한다 |
setDateHeader(String name, long date) | void | 설정한 헤더 이름 name에 날짜/시간을 설정한다 |
setHeader(String name, String value) | void | 설정한 헤더 이름 name에 value를 설정한다 |
setIntHeader(String name, int value) | void | 설정한 헤더 이름 name에 정수값 value를 설정한다 |
containsHeader(String name) | boolean | 설정한 헤더 이름 name이 HTTP 헤더에 포함되어 있는지 확인한다 포함되는 경우 true, 그렇지 않은 경우 false를 반환한다 |
getHeader(String name) | String | 설정한 헤더 이름 name의 값을 가져온다 |
out 내장 객체
웹 브라우저에 데이터를 출력하기 위해 사용하는 내장 객체로 표현문 태그, HTML, text 등을 out 내장 객체를 통해 웹 브라우저에 전달한다.
메서드
메서드 | 반환 타입 | 설명 |
print(String str) | void | 문자열을 웹 브라우저에 출력한다 |
println(String str) | void | 문자열을 출력하지만, 브라우저에서 줄 바꿈이 적용되지 않아 print()와 동일하게 보인다 |
newLine() | void | 줄 바꿈(\r\n 또는 \n)을 출력한다 |
getBufferSize() | int | 출력 버퍼의 크기를 반환한다 |
getRemaining() | int | 출력 버퍼에 남아 있는 공간의 크기를 반환한다 |
clear() | void | 현재 버퍼에 저장되어 있는 출력 버퍼의 내용을 제거한다 |
clearBuffer() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시되었다면 IOException이 발생할 수 있다 |
flush() | void | 현재 버퍼에 저장된 모든 내용을 웹 브라우저에 전송한다 |
isAutoFlush() | boolean | 출력 버퍼가 채워졌을 때 자동으로 플러시하는지 여부를 결정한다 설정값은 클래스에 따라 다르며, true를 반환하면 자동 플러시가 동작하고, 그렇지 않으면 false를 반환한다 |
사용 예시
<%
out.print("print사용");
out.println("println사용");
%>
<%="표현문 사용"%>