본문 바로가기
인천일보아카데미/- 학습일지

[학습일지]JAVA교육일지 65일차 (SERVER)⭐

by w1z 2022. 7. 7.

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 사용했습니다.

# 그날 배운 것은 한번이라도 그날 꼭 복습하도록 합시다.