[JSP] out | pageContext 기본 객체

Jeini·2023년 4월 23일
0

🌐 JSP

목록 보기
10/24
post-thumbnail

💡 out 기본 객체


✔️ JSP 페이지가 생성하는 모든 내용은 out 기본 객체를 통해 전송됨

JSP 페이지 내에서 사용하는 비-스크립트 요소들(HTML, 코드와 text)은 out 기본 객체에 그대로 전달된다. 값을 출력하는 표현식의 결과값도 out 기본 객체에 전달된다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>useObject</title>
</head>
<body>
<%

	out.println("안녕하세요!");

%>
    <br>
    out 기본객체를 사용하여 
<%

	out.println("출력한 결과입니다.");

%>

</body>
</html>
안녕하세요!
out 기본객체를 사용하여 출력한 결과입니다.

❓ 그냥 써도 나오는데 out을 굳이 쓰는 이유는 뭘까?

사실상 out 기본 객체를 직접 사용해서 응답 결과를 생성하는 경우는 많지 않다.
그 이유는 스크립트릿 코드 블록을 계속 사용해야 하기 때문에 입력할 코드가 늘어나기 때문이다.

out 객체는 if - else 블록과 스크립트를 구분하기 위한 태그(<% 와 %>) 때문에 코드가 복잡하다. 그럴 때 out 기본 객체를 사용하면 복잡함을 제거할 수 있다.

즉, 열고닫고 안해도 되니까 그냥 out으로 처리하면 된다.

하지만 복잡한 조건 비교 때문에 출력 코드가 복잡해지는 경우가 아니면 out 기본 객체를 사용하지 않는 것이 좋다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<%	
	
	String id = request.getParameter("uid");
	String pw = request.getParameter("upw");
	
	if(id.equals("jipark09") && pw.equals("1234")) {
		response.sendRedirect("loginSuceese.jsp");
		
	} else if(id.equals("") || pw.equals("")) {
		out.println("공백입니다."); // out 객체를 사용하여 복잡함을 줄임
		
	} else {
		response.sendRedirect("loginFail.jsp");
	}


%>

</body>
</html>

📎 out 기본 객체의 출력 메서드

  • print(): 데이터를 출력한다.

  • println(): 데이터를 출력하고, 줄바꿈 문자를 출력한다.

  • newLine(): 줄바꿈 문자를 출력한다.

print()println() 을 사용하여 출력할 수 있는 값은 boolean, char, char[], double, float, int, long의 기본 데이터 타입과 String이다.

📎 out 기본 객체와 버퍼의 관계

✔️ out 기본 객체는 16kb 크기의 버퍼를 내부적으로 사용한다.
✔️ <%@ page buffer = "16kb" %>

page 디렉티브의 buffer 속성을 사용해서 JSP 페이지의 버퍼 크기를 조절할 수 있다고 배웠다. JSP 페이지가 사용하는 버퍼는 실제로 out 기본 객체가 내부적으로 사용하고 있는 버퍼이다.

📌 out 기본 객체의 버퍼 관련 메서드

  • getBufferSize()
    : int
    : 버퍼의 크기를 구한다.

  • getRemaining()
    : int
    : 현재 버퍼의 남은 크기를 구한다.

  • flush()
    : void
    : 버프의 내용을 클라이언트에게 전송한다.

  • isAutoFlush()
    : boolean
    : 버퍼가 다 찼을 때 자동으로 플러시 할 경우 true를 리턴한다.

  • clear()
    : void
    : 버퍼의 내용을 비운다. 만약 버퍼를 이미 flush() 했다면 IOException 을 발생시킨다.
    : 잘 안쓰임

  • clearBuffer()
    : void
    : 버퍼의 내용을 비운다. 버퍼를 flush() 한 경우에도 IOException 을 발생시키지 않는다.
    : 잘 안쓰임

💡 pageContext 기본 객체


✔️ JSP 페이지와 일대일로 연결된 객체

  • 기본 객체 구하기
  • 속성 처리하기
  • 페이지의 흐름 제어하기
  • 에러 데이터 구하기

📎 기본 객체 접근 메서드

getRequest() 는 반환타입이 ServeltRequest이다. HTTPServletRequest와 상속관계이다. (getResponse 도 마찬가지) 그래서 형변환이 가능하다.

HttpServletRequest httpRequest = (HttpServletRequest)pageContext.getRequest();

이미 다 기본객체로 나와있기 때문에 이 메서드들은 jsp에서는 필요없다.
서블릿에서 저 메서드들을 사용한다.

profile
Fill in my own colorful colors🎨

0개의 댓글