[jsp] 액션태그 <jsp:forward/>

seulki·2022년 10월 12일
0

jsp

목록 보기
20/51
post-custom-banner

🎈 액션태그

  • 행위에 대한 태그
  • jsp 페이지에서 동일한 내용이라도 자바 코드를 기술하기 보다는
    태그를 기술하는 것이 지저분하지 않고 깔끔하게 코딩할 수 있어
    가독성 높은 소스코드를 작성할 수 있다.
  • 코드양을 대폭 줄일 수 있다.

🎈 액션태그의 종류

  • forward : 다른 페이지로 이동
                   <jsp:forward/>

  • include : 외부 페이지의 내용을 포함하거나 페이지 모듈화
                    <jsp:include/>

  • param : 현재 페이지에서 다른 페이지에 정보를 전달할 때 사용
                    <jsp:param/>

  • useBean : 빈(Bean, 객체)을 생성하고 사용하기 위한 환경을 정의
                    <jsp:useBean/>

  • setProperty : 빈에서 속성 값을 할당
                    <jsp:setProperty/>

  • getProperty : 빈에서 속성 값을 얻어올 때 사용
                    <jsp:getProperty/>



🎈 forward_test.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>
	<form action="controller.jsp">
		<select name="site">
			<option value="naver">네이버</option>
			<option value="google">구글</option>
			<option value="daum">다음</option>
		</select>
		<input type="submit">
	</form>
</body>
</html>



🎈 controller.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%
	String site = request.getParameter("site");

	String requestURL = "";
	
	if(site.equals("naver")){
		requestURL = "forward_naver.jsp";
	}else if(site.equals("google")){
		requestURL = "forward_google.jsp";
	}else if(site.equals("daum")){
		requestURL = "forward_daum.jsp";
	}
%>

<jsp:forward page = "<%=requestURL%>"/>

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

</body>
</html>
  • select 박스의 name인 "site"를 파라미터로 가져온다.
  • select 박스는 선택한 value 값으로 파라미터가 넘어온다.
  • 넘어온 값을 담은 String 변수 site와 문자열을 비교하여 if문 작성
  • <jsp:forward page = "<%=requestURL%>"/> 여기로 사이트 이동


🎈 forward_naver.jsp / forward_google.jsp" / forward_daum.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 type="text/javascript">
	window.open("https://www.naver.com");
</script>
</body>
</html>

<%@ 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 type="text/javascript">
		window.open("https://www.google.com");
	</script>
</body>
</html>

<%@ 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 type="text/javascript">
	window.open("https://www.daum.net");
</script>
</body>
</html>

🗝️ 정리

    1. forward_test.jsp에서 form 태그로 controller.jsp에게
      name값이 site인 파라미터를 넘긴다.
    1. controller.jsp에서 파라미터 값을 받아서, 변수에 저장한 후,
      forward 액션태그를 통해 requestURL에 담긴 jsp 파일로 이동한다.
    1. 각각 파라미터에 맞는 jsp 파일로 이동한 후, window.open() 으로 사이트를 연다.

-> 페이지를 많이 나누는 이유는 모듈화(세분화시켜서 설계)를 하여 유지보수를 원활하게 하기 위해서이다. 수정이 필요한 부분만 건들일 수 있어서 다른 파일에 문제가 생기지 않는다.

profile
웹 개발자 공부 중
post-custom-banner

0개의 댓글