클라이언트가 요청할 때 마다 새로운 request 객체가 생성되고, 같은 요청을 처리하는데 사용되는 모든 JSP페이지가 공유함
포워드된 페이지까지 공유가능함.
단 페이지 이동 시에는 소멸돼서 사용 불가능 -> page 영역보다 좀 더 넓음
-> 하나의 요청에 대한 응답이 완료될 때 소멸
예제)
RequestMain.jsp 생성
<%@page import="common.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("requestString", "request 영역의 문자열");
request.setAttribute("requestPerson", new Person("안중근", 31));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2> request 영역의 속성값 삭제하기</h2>
<%
request.removeAttribute("requestString");
//존재하지 않는 속성값 제거하려고 해도 오류 안남
request.removeAttribute("requestInteger");
%>
<h2>request 영역의 속성값 읽기</h2>
<%
Person person = (Person)(request.getAttribute("requestPerson"));
%>
<ul>
<li>String 객체 : <%= request.getAttribute("requestString")%></li>
<li>Person 객체 : <%= person.getName()%><%=person.getAge() %></li>
</ul>
<h2>포워드된 페이지에서 request 영역 속성값 읽기</h2>
<%
request.getRequestDispatcher("RequestForward.jsp?paramHan=한글¶mEng=English").forward(request, response);
%>
</body>
</html>
포워드 하기 전 출력 화면
1. request 영역에서 String 객체와 Person 객체 저장함
2. request.remove로 속성값 삭제함 ( requestString) 이름이 없는 속성값 삭제하고자 해도 오류 안남
3. 속성값 읽어오기
4. RequestForward.jsp로 포워딩 함
수행하는 코드 : request.getRequestDispatcer("포워드할 파일 경로").forward(request,response)
RequestForward.jsp 파일 생성
<%@page import="common.Person"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request 영역 </title>
</head>
<body>
<h2>포워드로 전달된 페이지</h2>
<h4>requestMain 파일의 리퀘스트 영역 속성 읽기</h4>
<%
Person person = (Person)(request.getAttribute("requestPerson"));
%>
<ul>
<li>String 객체 : <%= request.getAttribute("requestString")%></li>
<li>Person 객체 : <%= person.getName()%><%=person.getAge() %></li>
</ul>
<h4>매개변수로 전달된 값 출력하기</h4>
<%
request.setCharacterEncoding("UTF-8");
out.println(request.getParameter("paramHan"));
out.println(request.getParameter("paramEng"));
%>
</body>
</html>
requestMain에서 포워드 할 때 ?paramHan=한글¶mEng=English 이라는 매개변수를 넣었다.
그래서 해당 내용도 출력가능하다
'BACKEND > Java' 카테고리의 다른 글
쿠키(Cookie) 란? (0) | 2023.09.28 |
---|---|
Scope ) session 영역 (0) | 2023.09.26 |
Scope ) Page 영역 (0) | 2023.09.26 |
데이터 전송 객체(DTO) 준비, 자바빈즈 (0) | 2023.09.26 |
[프로그래머스] 피자 나눠 먹기 (1) (0) | 2023.09.21 |