웹프로그래밍/JSP

JSP - 내장 객체

Uisin 2024. 10. 14. 17:52

내장 객체

- 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