내장 객체
- JSP페이지에서 사용할 수 있도록 미리 정의된 객체다
- import문 없이 자유롭게 사용 가능하다
- 객체를 생성하지 않고 직접 호출하여 사용가능!
- static화 되어있는 객체라고 이해하면 안되고 필요할 때 마다 인스턴스화 된다고 이해하자
request 내장 객체
- 웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장한다
- 일종의 저장소 역할을 하는 것이다!!
- HttpServlet을 상속 후 doGet과 doPost를 오버라이딩 하면 자동으로 request객체가 불러와진다
요청 파라미터 관련 메서드
- a태그나 form태그에서 설정한 파라미터를 가져오는 역할을 한다
- form 태그에서 input의 type이 text일 때 값이 없으면 빈 문자열이 파라미터로 전달된다
관련 메서드의 종류
메서드 | 반환 유형 | 설명 |
getParameter(String name) | String | 요청 파라미터 이름이 name인 값을 전달 받는다. |
getParameterValues(String name) | String[] | 모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달 받음 |
getParameterNames() | java.util.Enumeration | 모든 파라미터의 이름과 값을 Enumeration 객체 타입으로 전달받는다 |
getParameterMap() | java.util.Map |
String name = request.getParameter("name");
String[] values = request.getParameterValues("values");
Enumeration<String> parameterNames = request.getParameterNames();
Map<String, String[]> parameterMap = request.getParameterMap();
요청 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() | javax.servlet.http.Cookie | 모든 쿠키 값을 가져온다 |
// 특정 헤더 값 가져오기
String userAgent = request.getHeader("User-Agent");
// 모든 헤더 이름 가져오기
Enumeration<String> headerNames = request.getHeaderNames();
// 쿠키 가져오기
Cookie[] cookies = request.getCookies();
// 로그 출력
System.out.println("User-Agent: " + userAgent);
while (headerNames.hasMoreElements())
{
String headerName = headerNames.nextElement();
System.out.println(headerName + ": " + request.getHeader(headerName));
}
if (cookies != null)
{
for (Cookie cookie : cookies)
{
System.out.println("Cookie: " + cookie.getName() + " = " + cookie.getValue());
}
}
웹브라우저/서버관련 메서드
- 웹브라우저의 요청 및 서버 관련 정보를 얻을 수 있는 메서드
- 웹브라우저의 문자 인코딩 정보, 컨텐츠 유형, 서버 이름 등의 정보를 포함한다
관련 메서드의 종류
메서드 | 반환유형 | 설명 |
getRemoteAddr() | String | 웹 브라우저의 IP주소를 가져옴 |
getContentLength() | long | 웹 브라우저의 요청 파라미터 길이를 가져온다 |
getCharacterEncoding() | String | 웹 브라우저의 문자 인코딩을 가져온다 |
getContentType() | String | 웹브라우저의 컨텐츠 유형을 가져온다 |
getProtocol() | String | 웹브라우저의 요청 프로토콜을 가져온다 |
getMethod() | String | 웹브라우저의 HTTP 요청 메서드(get, post)를 가져온다 |
getRequeestURI() | String | 웹브라우저의 요청한 URI 경로를 가져온다 |
getContextPath() | String | 현재 JSP 페이지의 웹애플리케이션 컨텍스트 경로를 가져온다 |
getServerName() | String | 서버 이름을 가져온다 |
getServerPort() | int | 실행 중인 서버 포트 번호를 가져온다 |
getQueryString() | String | 전체 요청 파라미털 문자열[? 다음 url에 할당된 문자열]을 가져온다 |
// 웹 브라우저의 IP 주소 가져오기
String ipAddress = request.getRemoteAddr();
// 요청 메서드 가져오기
String method = request.getMethod();
// 요청 URI 가져오기
String requestURI = request.getRequestURI();
// 서버 이름 가져오기
String serverName = request.getServerName();
// 요청 파라미터 문자열 가져오기
String queryString = request.getQueryString();
// 로그 출력
System.out.println("IP 주소: " + ipAddress);
System.out.println("요청 메서드: " + method);
System.out.println("요청 URI: " + requestURI);
System.out.println("서버 이름: " + serverName);
System.out.println("쿼리 문자열: " + queryString);
response 내장 객체
- 서버에서 웹브라우저로 전달하는 정보를 저장한다
- request는 웹브라우저에서 서버로 response는 서버에서 웹브라우저로 가는 데이터를 담는다
sendRedirect(String url)
- 서버를 통해 페이지를 이동하는 방법으로는 forward와 redirect 방식이 있다
- forward 같은 경우 서버 내에서 요청을 다른 리소스로 전달하는 것
- redirect는 클라이언트를 다른 URL로 이동시키는 것
- 차이점이라면 forward는 url 1에서 다른 페이지로 forward하면 url 1이 유지되지만
- redirect는 url 1에서 다른 페이지로 redirect하면 url이 그 페이지의 url로 변한다
- 쉽게말해 요청이 유지되냐 되지 않냐의 문제다. (redirect는 요청을 다시 시키기 때문에 url 이 변하는 것)
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("books로 리다이렉션 합니다.");
resp.sendRedirect("books");
}
응답 HTTP 헤더 관련 메서드
관련 메서드의 종류
메서드 | 반환 유형 | 설명 |
addCookie(Cookie cookie) | void | 쿠키 추가 |
addDateHeader(String 설정할 헤더이름, long date) | void | 날짜/시간 추가 |
addHeader(String 설정할 헤더이름 , String value) | void | value 추가 |
addIntHeader(String 설정할 헤더이름 , int value) | void | 정수 값 value 추가 |
setDateHeader(String 설정할 헤더이름 , long date) | void | 날짜/시간 설정 |
setHeader (String 설정할 헤더이름 , String value) | void | 문자열 값 value 설정 |
setIntHeader (String 설정할 헤더이름 , int value) | void | 정수 값 value 설정 |
containHeader(String 설정할 헤더이름 ) | boolean | 헤더 이름이 HTTP 헤더에 포함되는지 여부를 확인 |
getHeader (String 설정할 헤더이름 ) | void | name 값 가져오기 |
<p> 이 페이지는 5초마다 새로고침 합니다.
<% response.setIntHeader("Refresh", 5); %>
<p> <%= new java.util.Date() %>
응답 컨텐츠 관련 메서드
관련 메서드의 종류
메서드 | 반환 유형 | 설명 |
setContentType(String type) | void | 웹브라우저에 응답할 MIME 유형을 설정 |
getContentType() | String | 웹브라우저에 응답할 MIME 유형을 가져옴 |
setCharacterEncoding(String charset) | void | 웹브라우저에 응답할 문자 인코딩 설정 |
getCharacterEncdoing() | String | 웹브라우저에 응답할 문자 인코딩 가져옴 |
sendError(int status_code, String message) | void | 웹브라우저에 응답할 오류(코드 및 오류 메시지) 설정 |
setStatus(int statuscode) | void | 웹브라우저에 응답할 HTTP 코드 설정 |
<% response.sendError(404, "요청 페이지를 찾을 수 없습니다"); %>
out 내장 객체
- 브라우저에 데이터를 전송하는 객체
- 표현문 태그 <%= %>와 같은 결과를 얻을 수 있음
관련 메서드의 종류
메서드 | 반환 유형 | 설명 |
println(String str) | void | 웹 브라우저에 출력하기 |
newLine() | void | 줄바꿈 출력하기 |
getBufferSize() | int | 출력 버퍼 크기 가져오기 |
getRemaining() | int | 남아 있는 출력 버퍼의 크기 가져오기 |
clear() | void | 출력 버퍼에 전송하지 않고 비우기 (이미 flush 됐으면 Exception 발생x) |
clearBuffer() | void | |
flush() | void | 출력 버퍼에 저장된 내용을 브라우저에 전송하고 비우기 |
isAutoFlush() | boolean | 출력 버퍼가 찼을 때 자동으로 flush 하면 true 안하면 false 반환 |
<%
out.println("오늘의 날짜 및 시각" + "<br>");
out.print(java.util.Calendar.getInstance().getTime());
%>
'웹프로그래밍 > JSP' 카테고리의 다른 글
JSP - 액션 태그 (0) | 2024.10.11 |
---|---|
JSP - 디렉티브 태그 (0) | 2024.10.10 |
JSP - 스크립트 태그 (0) | 2024.10.08 |
JSP - 기초 (0) | 2024.10.07 |