[JSP] 7.2 리다이렉트와 자바 스크립트를 이용한 페이지 이동

2022. 4. 8. 15:37JAVA/Servlet&JSP

<jsp:forard> 액션 태그를 이용한 페이지 이동은 웹 컨테이너 내부에서 이루어지는 페이지의 이동이였습니다. 이는 웹 브라우저의 URL이 변경되지 않는 것을 확인하여 알 수 있습니다.

 

하지만 때로는 웹 브라우저 차원에서 페이지가 이동하길 원합니다. 예를 들어 게시판의 게시글을 작성한 다음 게시글 목록으로 이동하는 것이 그 예입니다. 이러한 경우 리다이렉트 방식이나 자바 스크립트 방식을 사용하여 페이지를 이동시킬 수 있습니다.

 

리다이렉트 또는 자바스크립트를 이용한 페이지 이동 방식

리다이렉트 이동 방식

<%
	String paramString = "code=A000&type=C";
    response.sendRedirect("/to/move.jsp?"+paramString);
%>

 

11_write.jsp

<%@ 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>
<script language="JavaScript">
	location.href = "<%= request.getContextPath()%>/Chapter07/11_2_list.jsp";
</script>
</body>
</html>

11_2_list.jsp

<%@ 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>
글 목록이 출력된다.
</body>
</html>

 

11_write.jsp 실행결과 

http://localhost:8080/jsp2/Chapter07/11_write.jsp

 

  • 실행결과 <jsp:forward>와는 달리 URL이 변경되어 페이지가 이동된 것을 확인할 수 있습니다.

 

1. 이동할 페이지에 정보 전달하기: 파라미터 사용 방법

리다이렉트 또는 자바스크립트 언어를 통한 페이지 이동 방식은 GET 방식으로 파라미터를 전달해야 합니다.

 

12_sendParam1.jsp (리다이렉트 방식)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="java.net.URLEncoder"%>
<%@ page import ="java.util.Random"%>
<%
	Random random = new Random();
	int number = random.nextInt();
	String numberString = Integer.toString(number);
	
	response.sendRedirect(request.getContextPath()+"/Chapter07/12_2_receiveParam.jsp?num="+
							URLEncoder.encode(numberString));
%>

 13_sendParam2.jsp (자바스크립트 방식)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="java.net.URLEncoder"%>
<%@ page import ="java.util.Random"%>
<%
	Random random = new Random();
	int number = random.nextInt();
	String numberString = Integer.toString(number);
%>
	
<script>
location.href = "<%= request.getContextPath()%>/Chapter07/12_2_receiveParam.jsp"+
				"?num=<%= URLEncoder.encode(numberString)%>";
</script>

 

12_2_receiveParam.jsp

<%@ 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>
전달받은 임의의 정수 : <%= request.getParameter("num") %>
</body>
</html>

 

실행결과

References

source code : https://github.com/yonghwankim-dev/JSP2.0/tree/master/jsp2/src/main/webapp/Chapter07
JSP 2.0 프로그래밍 기초부터 중급까지