티스토리 뷰

내장객체
내장객체는 JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체입니다. 여기서 해당 페이지가 서블릿 프로그램으로 변역이 될 때 컨테이너에서 자동으로 내장 객체를 변수,메서드 매개변수 등의 각종 참조 변수(객체)로 포함합니다. 따라서 별도의 import문없이도 사용을 할 수가 있습니다. 또한, 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체 생성을 하지 않고도 직접 호출이 가능합니다.
내장객체의 종류
내장 객체 | 반환 유형 | 설명 |
request | javax.servlet.HttpServletRequest | 웹 브라우저의 GTTP 요청 정보를 저장합니다 |
response | javax.servlet.HttpServletRespons | 웹 브라우저의 HTTP 요청에 대한 응답 정보를 저장합니다. |
out | javax.servlet.jsp.jsp.jspWriter | JSP 페이지에 출력할 내용을 담고 있는 출력 스트림입니다. |
sesstion | javax.servlet.HttpSesstion | 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장합니다. |
application | javax.servlet.ServletContext | 웹 애플리케이션의 콘텍스트 정보를 저장합니다. |
pageContext | javax.servlet.jsp.PageContext | JSP 페이지의 정보를 저장합니다. |
page | javax.lang.Object | JSP 페이지를 구현한 자바 클래스로 JSP 페이지 자체를 나타냅니다. |
config | javax.servlet.ServletConfig | JSP 페이지의 설정 정보를 저장합니다 |
exception | javax.lang.Throwable | JSP 페이지의 예외 발생을 처리합니다. |
해당 내장 객체들은 서블릿 프로그램에서 모두 _jspService() 메서드 내부에 존재합니다.
여기에서 request, sesstion, application, pageContext는 속성을 관리할 수 있는 내장 객체입니다. 여기서 속성은 내장 객체가 존재하는 동안 JSP페이지 사이에서 정보를 주고받거나 공유를 하는데 사용이 됩니다.
속성처리 메서드의 종류
메서드 | 반환 유형 | 설명 |
setAttribute(String name, Object value) | void | 해당 내장 객체의 속성 이름이 name인 속성 값을 value로 |
getAttribute(String name) | Object | 해당 객체의 속성 이름이 name인 속성 값을 가져 옵니다. |
removeAttiribute(String name) | void | 해당 내장 객체의 속성 이름이 name인 속성을 삭제합니다. |
getAttributeNames() | java.util.Enumeration | 해당 내장 객체의 모든 속성 이름을 가져옵니다.(단, pageContext 내장객체는 이 메서드를 제공하지 않습니다.) |
request 내장객체
requst 내장 객체는 많이 사용되는 기본 객체로써 브라우저에서 jsp페이지로 전달하는 정보를 저장하는 역할을 가집니다.
요청파라미터는 해당 웹 브라우저에서 서버로의 페이지로 전송이 될 때, 가져가는 값을 말합니다. 이때 사용되는 메서드는 getParameter(), getParameterValues(), getParameterNames(), getParameterMap()
가 있습니다. 해당 요청 파라미터의 값은 입력 양식이 텍스트 유형인 경우 값을 입력하지 않는다면 서버로 빈 문자열로 전송이 됩니다. 하지만 라디오나 체크박스형태의 데이터에서 선택을 하지 않고 전송을 한다면 전달자체가 되지 않습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action ="request01_process.jsp" method="post">
<p> 아 이 디 : <input type="text" name="id">
<p> 비밀번호 :<input type="text" name="passwd">
<p><input type="submit" value="전송"/>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("id");
String password = request.getParameter("passwd");
%>
<p> 아이디 : <%=userid%>
<p> 비밀번호 : <%=password%>
</body>
</html>


해당 텍스트의 입력 값 데이터를 request에 넣은 뒤 getParameter로 해당 값을 가져옵니다. 여기서 무엇을 가져올 것인지는 name속성의 값을 입력하여 해당 key값을 가져옵니다. |
요청 HTTP헤더 관련 메서드
웹브라우저는 HTTP 헤더에 부가적인 정보를 담아 서버로 보내는데, 이떄 request 내장 객체는 헤더 정보나 쿠키 관련 정보를 얻을 수 있는 메서드를 제공합니다. 해당 관련 메서드 종류로는
getHeader(String name), getHeaders(String name), getHeaderNames(), getInHeader(String name), getDateHeader(String name), getCookies()
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import ="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//모든 헤더의 이름을 가져오면서 en 참조변수에 담는다.
Enumeration en = request.getHeaderNames();
//en객체 주소안에 hasMoreElement()메서드가 있을 때까지 반복
while (en.hasMoreElements())
{
//현재의 헤더 이름을 가져오기 위해 en.nextElement()메서드를 작성
//request에서 반환이 되기 때문에 캐스팅을 해준다.
String headerName = (String) en.nextElement();
//설정된 헤더 이름의 값을 가져오도록 request 내장객체 getHeader()메서드를 작성한다.
String headerValue = request.getHeader(headerName);
%>
<%=headerName %> : <%=headerValue %> <br>
<%
}
%>
</html>
