Back_end/JSP

JSP - 내장 객체

hyeon1016 2024. 10. 28. 04:24

내장 객체

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사용");
%>
<%="표현문 사용"%>