1. out
2. session
3. application
4. JSP 내장 객체의 생명 주기
1. out
[ 정의 ]
- 응답 페이지 전송을 위한 출력 스트링 객체
- 서블릿의 PrintWriter와 유사한 역할
- HTML 소스에 값을 출력하는 역할
- JSP에서 <%= %>을 사용하면 불가항력으로 스파게티 코드가 자주 발생한다.
> 가독성 저하....
> 차라리 예전 Servlet 방식으로 하자..
> 가독성 향상 (방법에 따라 틀리며, 개인 취향 차이이다.)
[ out 예시 ]
- 구구단 만들기
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
int dan = 5;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>구구단</h1>
<h3>기본 방식</h3>
<% for(int i=1; i<=9; i++) { %>
<div><%= dan %> x <%= i %> = <%= dan * i %></div>
<% } %>
<h3>out 방식</h3>
<%
for ( int i=1; i<=9; i++ ) {
out.println(String.format("<div>%d x %d = %d</div>", dan, i, dan*i));
}
%>
</body>
</html>
- 결과

2. session, application
[ 정의 ]
- JSP 내장 객체 저장소 중에 가장 중요하게 봐야 하는 저장소 이다.
- 데이터 저장
- 인증 상태를 저장하는 용도로 사용된다.
- 페이지 이동 시 전달 과정없이 데이터를 전달 할 수 있다.
- 데이터 전달용으로 많이 사용된다.
[ session, application 예시 ]
- 첫번째 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>첫번째 페이지</h1>
<%
// 한장의 JSP 페이지내에서만 사용한다면 아래의 4개의 변수는 차이가 없다.
pageContext.setAttribute("num1", 10);
request.setAttribute("num2", 20);
session.setAttribute("num3", 30);
application.setAttribute("num4", 40);
%>
<div>pageContext: <%= pageContext.getAttribute("num1") %></div>
<div>request: <%= request.getAttribute("num2") %></div>
<div>session: <%= session.getAttribute("num3") %></div>
<div>application: <%= application.getAttribute("num4") %></div>
<hr />
<a href="session_two.jsp">다른 페이지로 이동하기</a>
</body>
</html>
- 두번째 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>두번째 페이지</h1>
<div>pageContext: <%= pageContext.getAttribute("num1") %></div>
<div>request: <%= request.getAttribute("num2") %></div>
<div>session: <%= session.getAttribute("num3") %></div>
<div>application: <%= application.getAttribute("num4") %></div>
</body>
</html>
- 결과

pageContext, request는 데이터 전송이 안됬지만, session, application은 데이터 전송이 된 결과이다.
3. JSP 내장 객체의 생명 주기
- pageContext, request(response), session, application
- 사용자 데이터를 저장하는 동일한 기능을 가지지만, 생명 주기가 다르기 때문에 저장할 데이터의 쓰임새에 따라서 내장 객체를 선택해서 사용 ( request(response), session 이 두가지가 가장 많이 쓰인다. )
| pageContext | 한페이지 요청 -> 응답할때 까지 |
| request(response) | 한페이지 요청 > 응답할때까지. 단, forward 이동할 때는 응답전까지 계속 살아 있음. |
| session | 유저 접속 -> 해제 할때까지 |
| applcaiton | 첫 유저 접속 -> 마지막 유저 해제 할때까지 |
MEMO>
# 스파게티 코드란? 서로 다룬 구문(언어)이 뒤섞여 있는 상태 이며, JSP에서 흔하게 볼 수 있는 상태이다.
( Servlet + JSP -> 스파게티 코드 최소화!! , 구구단 예시 참조 )
# JSP를 쓴다는 것은? HTML에서 Java를 쓰겠다는것
# 면접 기술 질문시
1. JSP 컨테이너 어떤거 쓰셨어요? -> Tomcat 사용했습니다.
2. 프로젝트할 때 WAS는 어떤거 쓰셨어요? -> Tomcat 사용했습니다.
# 그날 배운 것은 한번이라도 그날 꼭 복습하도록 합시다.
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
| [학습일지]JAVA교육일지 68일차 (SERVER)⭐ (0) | 2022.07.08 |
|---|---|
| [학습일지]JAVA교육일지 66일차 (SERVER)⭐ (0) | 2022.07.07 |
| [학습일지]JAVA교육일지 64일차 (SERVER)⭐ (0) | 2022.07.05 |
| [학습일지]JAVA교육일지 63일차 (SERVER)⭐ (0) | 2022.07.05 |
| [학습일지]JAVA교육일지 62일차 (SERVER)⭐ (0) | 2022.07.02 |