내장객체 이동성 메서드 종류 

response.sendRedirect()

pageContext.forward()

 

 

 

우선 java class를 선언하겠다.

package test;

public class TestClass {
	private String text;
	
	public TestClass() {}

	public TestClass(String text) {
		super();
		this.text = text;
	}
	public String getText() {
		return text;
	}
		this.text = text;
	}
}

위 class는 String text의 setter와 getter 그리고 파라미터로 text를 받는 생성자만 넣은 간단한 class이다.

 

위 코드의 생성자 파라미터를 받아 이동하여 페이지에 출력해주는 예제를 들어보겠다.

 

sendRedirect 예시

<%@page import="test.TestClass"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
TestClass cls = new TestClass("send");
session.setAttribute("test", cls);
// 위와 동일
// request.getSession().setAttribute("test", cls);

response.sendRedirect("send_ex2.jsp");
%>
</body>
</html>

 

send_ex2.jsp 예시

<%@ page import="test.TestClass" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
TestClass cls = (TestClass)session.getAttribute("test");
%>

<h3>TestClass 넘어온 Text : <%=cls.getText() %></h3>
</body>
</html>

설명

session.setAttribute에 값을 저장

response.sendRedirect로 이동한다.

 

sendRedirect는 request.setAttribute로 값을 저장하여 가지고 갈 수 없다.

session.setAttribute(String name, Object value) 

첫 번째 파라미터 찾을 이름, 두 번째 인수에 객체명을 지정한다.

session.getAttribute(String name)

파라미터에 setAttribute에 지정해놓은 찾을 이름을 지정한다.Object로 넘어오기 때문에 형변환은 필수이다.

 

 

 

실행화면

 


forward 예시

<%@page import="test.TestClass"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
TestClass cls = new TestClass("forward");
request.setAttribute("test", cls);

pageContext.forward("forward_ex2.jsp");
// 위와 동일
// request.getRequestDispatcher("forward_ex2.jsp").forward(request, response); 
%>
</body>
</html>

 

forward_ex2.jsp 예시

<%@page import="test.TestClass"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
TestClass cls = (TestClass)request.getAttribute("test");
%>

<h3>TestClass 넘어온 Text : <%=cls.getText() %></h3>
</body>
</html>

설명

request.setAttribute에 값을 저장 

pageContext.forward로 이동한다.

request.setAttribute(String name, Object value) 

첫 번째 파라미터 찾을이름, 두 번째 인수에 객체명을 지정한다.

request.getAttribute(String name)

파라미터에 setAttribute에 지정해놓은 찾을 이름을 지정한다.

Object로 넘어오기 때문에 형변환은 필수이다.

 

실행화면

 

session.setAttribute와 request.setAttribute의 차이점

session은 저장을 해서 가져가는 것이기 때문에 request에 비해 무겁다.

request는 단타성, 일회성이다.

 

+ Recent posts