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

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

by w1z 2022. 7. 5.

1. JSP 내장 객체

2. request

3. response

4. pageContext


1. JSP 내장 객체

[ 정의 ]

- JSP Implicit Object

- 개발자가 직접 생성하지 않아도, JSP가 미리 만들어서 제공하는 객체이다. (Tomcat이 만든다!!!)

- 예약어를 사용해서 얻어온다.

- JSP 내장 객체는 Servlet에도 동일하게 있다. 단, Servlet에서는 직접 만들어서 사용한다. (내장 객체라는 형식이 존재하지 않기 때문..)

- 종류: request, response, session, pageContext, out, application, config, page, exception 등..

- 사용빈도

   1순위) request, response, session, pageContext  (가장 많이 쓰임)

   2순위) out, application

   3순위) config, page, exception 등..

 

[ JSP 내장 객체의 저장소 ]

- 내부에 사용자 데이터를 저장할 수 있는 Map을 가지고 있다.

- 종류: request, session, pageContext, application

- setAttribute(key, value), getAttribute(key)

 

2. request 

[ 정의 ]

- 데이터 저장하는 기능

- 클라이언트(브라우저)가 서버에게 전송한 데이터를 받아오는 기능이다.

- 클라이언트(브라우저)가 서버에게 전송한 데이터의 인코딩 처리를 한다.

- 클라이언트(브라우저)가 서버에게 페이지 요청 시 관련된 정보 가져온다.

 

[ request 예시 ]

- 2개의 페이지에서 데이터 전송 -> 받아오기(출력)

- 전송 페이지

<%@ 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>request 전송 페이지</h1>
	
	<form method="GET" action="request_two.jsp">
		<div><input type="text" name="txt"/></div>
		<div><input type="password" name="pw"/></div>
		<div><input type="number" name="num"/></div>
		<div><input type="checkbox" name="cb1" value="red"/>red</div>
		<div><input type="checkbox" name="cb2" value="blue"/>blue</div>
	
		<div><input type="submit" value="보내기"/></div>
	</form>
</body>
</html>

   

- 결과 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<%
	// 넘어온 데이터 가져오기
	// - request 객체 담당
	// - request.getParameter("name") -> 1개의 컨트롤을 얻는다.
	// - 모든 데이터는 문자열로 전송 된다. (*******************) -> 자료형이 존재하지 않음
	
	String txt = request.getParameter("txt");
	String pw = request.getParameter("pw");
	String num = request.getParameter("num");
	String cb1 = request.getParameter("cb1");
	String cb2 = request.getParameter("cb2");
	
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>

</head>
<body>
	<h1>request 결과 페이지</h1>	
	
	<div>txt 결과: <%= txt %></div>
	<div>pw 결과: <%= pw %></div>
	<div>num 결과: <%= num %></div>
	<div>cb1 결과: <%= cb1 %></div>
	<div>cb2 결과: <%= cb2 %></div>
</body>
</html>

 

- 결과

데이터 입력 받은 후 결과 페이지에 전송 후 출력하는 페이지

 

3. response

[ 정의 ]

- 돌려줄 웹 페이지 제작 > response.getWriter() > PrintWriter

- 돌려줄 웹 페이지 인코딩 > response.setCharacterEncoding("UTF-8")

- 돌려줄 내용의 MIME 지정(text/html)

- 페이지 이동하기

 

[ response 예시 ]

- 첫번째 페이지에 접속하자마자 두번째 페이지로 이동하기

- 첫번째 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<%
	// 자동적으로 해당 페이지로 이동
	response.sendRedirect("response_two.jsp");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>

</head>
<body>
	<h1>response 첫번째 페이지</h1>
</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>response 두번째 페이지</h1>	
	
	<span>두번째 페이지입니다 하하하.</span>
</body>
</html>

 

- 결과

첫번재 페이지로 실행 후, 자동적으로 두번째 페이지로 이동됨

 

4. pageContext

[ 정의 ]

- 페이지 저장

- 페이지 실행에 필요한 컨텍스트 정보를 저장한 객체

- 페이지간의 데이터를 전달할 때 사용

 

[ pageContext 예시 ]

- 첫번째 페이지(.jsp)가 갖고있는 지역변수를 두번째 페이지에 전달하기 

- 첫번째 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<%
	
	// 지역 변수
	// - 현재 JSP 페이지에서만 사용 가능한 변수
	// - 이 변수를 two.jsp에게 전달하려면...??
	int num1 = 100; 
	int num2 = 200;	
	
	request.setAttribute("num1", num1);
	request.setAttribute("num2", num2);
	pageContext.forward("pagecontext_two.jsp");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>

</head>
<body>
	<h1>pagecontext 첫번째 페이지</h1>
</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>pagecontext 두번째 페이지</h1>	
	
	<div>num1: <%= request.getAttribute("num1") %></div>
	<div>num2: <%= request.getAttribute("num2") %></div>
</body>
</html>

 

-  결과

첫번째 페이지로 실행 시, 자동적으로 두번째 페이지로 이동하며, 변수num1, num2의 값을 가져왔다.