Purple Bobblehead Bunny

Backend/JSP SERVLET

[JSP] 내장 객체(implicit object)

준영어린이 2022. 6. 28. 16:08

 

 

내장 객체(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>

 

out02.jsp
out02_process.jsp

'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