내장 객체(implicit object)
- JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체
- JSP 페이지가 서블릿 프로그램으로 번역될 떄 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메서드 매개변수 등의 각종 참조 변수(객체)로 포함
- JSP 페이지에 별도의 import 문 없이 자유롭게 사용 가능
- 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용 가능
request 내장 객체
- JSP 페이지에서 가장 많이 사용되는 기본 내장 객체
- 웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장
- 폼 페이지로부터 입력된 데이터를 전달하는 요청 파라미터 값을 JSP 페이지로 가져옴
- JSP 컨테이너는 웹 브라우저에서 서버로 전달되는 정보를 처리하기 위해 javax.servlet.http.HttpServletRequest 객체 타입의 response 내장 객체를 사용하여 사용자의 요구 사항을 얻어낸다.
웹 브라우저 / 서버 관련 메소드
웹 브라우저/ 서버 관련 메서드 | 반환 유형 | 설명 |
getRemoteAddr() | String | 웹 브라우저의 IP 주소를 가져온다 |
getContentLength() | long | 웹 브라우저의 요청 파라미터 길이를 가져온다. |
getCharacterEncoding() | String | 웹 브라우저의 문자 인코딩을 가져온다. |
getContentType() | String | 웹 브라우저의 콘텐츠 유형을 가져온다. |
getProtocol() | String | 웹 브라우저의 요청 프로토콜을 가져온다. |
getMethod() | String | 웹 브라우저의 HTTP 요청 메소드(GET,POST)를 가져온다. |
getRequestURI() | String | 웹 브라우저가 요청한 URI 경로를 가져온다. |
getContextPath() | String | 현재 JSP 페이지의 웹 application context 경로를 가져온다. |
getServerName(0 | String | 서버 이름을 가져온더. |
getServerPort() | int | 실행 중인 서버 포트 번호를 가져온다. |
getQueryString() | String | 웹 브라우저의 전체 요청 파라미터 문자열("?" 다음 URL에 할당된 문자열)을 가져온다. |
<%@ 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>
<%
String protocol = request.getProtocol();
String serverName = request.getServerName();
int serverPort = request.getServerPort();
String remoteAddr = request.getRemoteAddr();
String remoteHost = request.getRemoteHost();
String method = request.getMethod();
StringBuffer requestURL = request.getRequestURL();
String requestURI = request.getRequestURI();
String useBrowser = request.getHeader("User-Agent");
String fileType = request.getHeader("Accpet");
%>
<h1>Reuquest 내장객체 확인</h1>
프로토콜 : <%=protocol %><br>
서버 이름 : <%=serverName %><br>
서버 포트 : <%=serverPort %><br>
클라 주소 : <%=remoteAddr %><br>
클라 이름 : <%=remoteHost %><br>
사용 함수 : <%=method %><br>
요청 경로 : <%=requestURL %><br>
요청 경로 : <%=requestURI %><br>
브라우저 : <%=useBrowser %><br>
파일 타입 : <%= fileType %>
</body>
</html>
요청 파라미터
- 사용자가 폼 페이지에 데이터를 입력한 후 서버에 전송할 때 전달되는 폼 페이지의 입력된 정보 형태
- <name=value> 형식으로 웹 브라우저에서 서버의 JSP 페이지로 전송
요청 파라미터 관련 메서드 종류
요청 파라미터 관련 메서드 | 반환 유형 | 설명 |
getParameter(String name) | String | 요청 파라미터 이름이 name인 값을 전달 받는다. 요청 파라미터 값이 없으면 null 반환 |
getParameterValues(String name) | String[] | 모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달 받는다. 요청 파라미터 값이 없으면 null 반환 |
getParameterNames() | java.util.Enumeration | 모든 요청 파라미터의 이름과 값을 Enmeration 객체 타입으로 전달 받는다. |
getParameterMap() | java.util.Map | 모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 전달 받는다. [Map 객체 타입은 (요청 파라미터 이름, 값) 형식으로 구성된다] |
request 내장 객체 사용 예제
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<form action="request01_process.jsp" method="post">
<p>
ID : <input type="text" name="id">
<p>
PW : <input type="text" name="passwd">
<p>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userId = request.getParameter("id");
String password = request.getParameter("passwd");
%>
<p>
ID :
<%=userId%>
<p>
PW :
<%=password%>
</body>
</html>
request 내장 객체로 페이지 이동하기
// response01_process.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userId = request.getParameter("id");
String password = request.getParameter("passwd");
if(userId.equals("관리자") && password.eqauls("1234")) {
response.sendRedirect("response01_success.jsp");
}else{
response.sendRedirect("response01_failed.jsp");
}
</body>
</html>
// response01_success.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
login success
</body>
</html>
// response01)failed.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
login failed
<p> <a href="./response01.jsp">Login Go</a>
</body>
</html>
response 내장 객체
- 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장
- 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냄
- JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리 하기 위해 javax.servlet.http.HttpServletResponse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답
response 내장 객체 기능
- 페이지 이동 관련 메서드
- 페이지 이동 = 리다이렉션(redirection) : 사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동 한다.
- 서버는 웹 브라우저에 다른 페이지로 강제 이동하도록 response 내장 객체의 리다이렉션 메서드를 제공
- 페이지 이동 시에는 문자 인코딩을 알맞게 설정해야 함
페이지 이동 관련 메서드 종류
페이지 이동 관련 메서드 | 반환 유형 | 설명 |
sendRedirect(String url) | void | 설정한 URL 페이지로 강제 이동한다. |
out 내장 객체
- 웹 브라우저에 데이터를 전송하는 출력 스트림 객체
- JSP 컨테이너는 JSP 페이지에 사용되는 모든 표현 문자 태그와 HTML, 일반 텍스트 등을 out 내장 객체를 통해 웹 브라우저에 그대로 전달
- 스크립틀릿 태그에 사용하여 단순히 값을 출력하는 표현문 태그 (<%= ... %>) 와 같은 결과를 얻을 수 있음
out 내장 객체 메서드 종류
out 내장 객체 메서드 | 반환 유형 | 설명 |
print(String str) | void | 설정된 str 값을 웹 브라우저에 출력한다. |
println(String str) | void | 설정된 str 값을 웹 브라우저에 출력한다. 이 때 줄 바꿈(\r\n 또는 \n)이 적용되지 않는다. |
newLine() | void | 줄바꿈(\r\n 또는 \n)을 출력한다. |
getBufferSize() | int | 현재 출력 버퍼의 크기를 가져온다. |
getRemaining() | int | 현재 남아 있는 버퍼의 크기를 가져온다. |
clear() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시 되었다면 IOException이 발생 |
clearBuffer() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시 되었다면 IOException이 발생하지 않는다. |
flush() | void | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비운다. |
isAutoFlush() | boolean | 출력 버퍼가 채워졌을 때의 처리를 결정한다. 자동으로 플러시 하는 경우 true 반환, 그렇지 않은 경우 false 반환 |
out 내장 객체의 사용 예제
<%@page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
// out 내장 객체로 오늘 날짜 및 시각 출력
<%
out.println("오늘의 날짜 및 시각 " + "<br>");
out.println(java.util.Calendar.getInstance().getTime());
%>
</body>
</html>
예제2
: out 내장 객체로 폼 페이지에서 아이디와 비밀번호를 전송 받아 출력
// out02.jsp
<%@ page conTentType="text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<form action="out02_process.jsp" method="post">
<p>
ID : <input type="text" name="id">
<p>
PW : <input type="text" name="passwd">
<p>
<input type="submit" value="전송">
</form>
</body>
</html>
// out02_process.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userId = request.getParameter("id");
String password = request.getParameter("passwd");
%>
<p> ID : <% out.println(userId); %>
<p> PW : <% out.println(password); %>
</body>
</html>
'Backend > JSP SERVLET' 카테고리의 다른 글
[JSP] request.getParameter(), getAttribute() (0) | 2022.06.28 |
---|---|
[JSP] 세션(Session) (0) | 2022.06.28 |
[JSP] useBean, setProperty, getProperty (0) | 2022.06.27 |
[JSP] 포워딩, 리다이렉트 (0) | 2022.06.27 |
[JSP] form (0) | 2022.06.26 |