본문 바로가기
JSP

221201 JSP Forward

액션태그는 안보고(액션태그는 나중에 안 씀)
forward와 Redirect를 볼 것

forward 현재의 페이지에서 다른 페이지로 넘어갈 때 사용.
redirect와 비슷해 보이지만 다름! 

1.forward : 받은 값을 전달한다.
2.sendRedirect : 전달하는게 아니라 새로운 객체를 생성한다

폼태그-2페이지-3페이지
forward를사용하면 폼태그 데이터를 3페이지에서 사용이 가능
폼태그에서 받은 값(Request값)을 2페이지에서 사용. 2페이지는 처리할 페이지. 
redirect하면 3페이지에 갈 때 데이터가 다 날라감.

forward를 쓰면 2페이지에서 데이터를 들고 나가 3페이지에서 사용 가능

 

forward 사용하지 않고 보내기

send_ex01

<%@ 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>
	<form action="send_ex02.jsp" method="post">
		
		아이디:<input type="text" name="id"><br>
		비밀번호:<input type="password"" name="pw"><br>
		<input type="submit" value="로그인">
	</form>

</body>
</html>

send_ex02

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	response.setCharacterEncoding("utf-8");
	response.sendRedirect("send_ex03.jsp");
	
%>

send_ex03

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//request객체의 생명주기는->다음페이지까지만
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	ID:<%=id %><br>
	PW:<%=pw %><br>
</body>
</html>

forward를 사용하지 않으면 데이터가 ex3까지 넘어가지 않는다. request객체의 사용주기는 다음페이지까지만이기 때문

===========================================================================================

forward 사용

 

forward_ex01

<%@ 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>
	<form action="forward_ex02.jsp" method="post">
		아이디:<input type="text" name="id"><br>
		비밀번호:<input type="password"" name="pw"><br>
		<input type="submit" value="로그인">
	</form>
</body>
</html>

 

forward_ex02

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	response.setCharacterEncoding("utf-8");
	//포워드 이동
	//RequestDispatcher dp = request.getRequestDispatcher("forward_ex03.jsp");
	//dp.forward(request, response);
	
	//3번 페이지에서 사용할 필요한 데이터를 담는 방법 request에 값 저장
	request.setAttribute("data", "홍길동");
	
	request.getRequestDispatcher("forward_ex03.jsp").forward(request, response);
	
%>

사용한 메서드는 request.getRequestDispatcher("forward_ex03.jsp").forward(request,response);

response.sendRedirect 대신 request.getRequestDispatcher로 이동,

.forward(request, response)로 값 보내기

request.setAttribute(" ", );는 한번만 사용 가능. ex3페이지에서만  사용할 목적.

 

forward_ex03

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");	
	
	//
	String data = (String)request.getAttribute("data");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	ID:<%=id %><br>
	PW:<%=pw %><br>
	2번에서 담긴값:<%=data %>
</body>
</html>

id와 pw는 forward로 보냈기에 getParameter로 받을 수 있다.

data는 setAttribute로 생성했으므로 getAttribute로 받을 수 있다.

url을 보면 

3페이지 url이 ex02로 되어 있다.
2번페이지를 실행시켜서 데이터를 그대로 가져오는 것. 새로고침을 해도 2번페이지에서 데이터를 가져온다.

'JSP' 카테고리의 다른 글

221201 session실습 redirection에 메시지 추가  (0) 2022.12.01
221201 forward 실습  (0) 2022.12.01
221201 jsp error 예외 페이지  (0) 2022.12.01
221201 jsp 경로  (1) 2022.12.01
221201 application  (1) 2022.12.01