ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP | forward 액션 태그
    JAVA/JSP 2020. 2. 19. 17:41

    forward 액션 태그

    JSP 페이지의 프로그램 제어를 이동할 때 사용

    • 페이지의 흐름을 제어함
    • JSP 페이지 내에서 foward 액션 태그를 만나면
      그전까지 출력 버퍼에 저장되어 있던 내용을 제거한 후 지정 페이지로 이동
    • 데이터를 공유하면서 페이지를 이동하기 때문에
      forward 액션 태그가 있는 페이지의 URL 주소에서 다른 페이지의 결과를 출력
    • 모델 2에서는 컨트롤러가 forward 액션 태그와 같은 역할을 함
    • 사용자가 입력한 값에 따라 접속하는 페이지가 다른 경우에 사용하면 좋음

    기본 형식

    <jsp:forward page="이동 페이지명"/>
    • page 속성의 값으로는 이동할 페이지 기술
    • 상대 경로, 절대 경로, 표현식으로 지정 가능

    ※ page 속성은 include 액션 태그와 동일함


    forward 액션 태그 처리 과정

    1. 웹 브라우저에서 웹 서버로 a.jsp 페이지 요청
    2. 요청된 a.jsp 페이지 수행
    3. <jsp:forward page="b.jsp"/>
      forward 액션 태그를 만나면 출력 버퍼의 내용을 제거하고
      프로그램 제어를 b.jsp로 이동(포워딩)시킴
    4. b.jsp 페이지 수행
    5. b.jsp 페이지를 수행한 결과를 웹 브라우저에 응답

    ※ include 액션 태그와 마찬가지로 forward 액션 태그에 의해
    연결된 페이지 간에는 동일한 request 객체를 공유함


    param 액션 태그

    forward 액션 태그의 바디에 사용하는 액션 태그
    프로그램 제어가 이동할 JSP 페이지에 값을 전달할 때 사용

    기본 형식

    1
    2
    3
    4
    <jsp:forward ~>
        <jsp:param name="파라미터 이름" value="파라미터 값"/>
        <jsp:param name="파라미터 이름" value="<%=val%>"/>
    </jsp:forward>http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
    • name 속성: 프로그램 제어가 이동할 JSP 페이지에 전달할 파라미터 이름 표시
    • value 속성: 전달할 파라미터 값 지정, value 값으로 표현식 사용 가능
    • 데이터를 전달 받는 페이지에서는 request.getParameter("PARAM_NAME")로 데이터 수신

    ※ include 액션 태그와 형식 및 사용법이 동일함


    예제

    ① forward.jsp 페이지에서 데이터를 입력받은 뒤
    move.jsp 페이지에서 forward 액션 태그로 프로그램 흐름 제어

    ② move.jsp 페이지에서 request 객체의 속성에 데이터를 저장해서
    a.jsp와 b.jsp에서 해당 데이터를 공유


    forward.jsp

    데이터를 입력 받는 페이지

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <%@ 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="move.jsp" method="post">
        이동할 페이지명: <input type="text" name="move" /> 
        <input type="submit" value="전송" />
    </form>
     
    </body>
    </html>
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    move.jsp

    forward 액션 태그를 사용해서 프로그램 제어를 포워딩하는 페이지

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.util.Date"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>move.jsp</title>
    </head>
    <body>
        <h2>요청을 판단해서 올바른 요청인 경우에 페이지를 이동시킴</h2>
        <%
            // a.jsp에 전달할 변수
            int su = 100;
        
            // request 객체의 "total" 속성에 su 값 저장
            request.setAttribute("total", su);
     
            // b.jsp에 전달할 변수
            Date d = new Date();
        
            // request 객체의 "cal" 속성에 d 값 저장
            request.setAttribute("cal", d);
     
            String move = request.getParameter("move");
            move += ".jsp";
            System.out.println(move);
     
            // 이동할 페이지가 있는 경우 페이지 이동
            if (move.equals("a.jsp")) {
        %>
        <!-- forward 액션 태그, 프로그램 제어를 a.jsp로 이동시킴 -->
        <jsp:forward page="a.jsp" />
        <%
            } else if (move.equals("b.jsp")) {
        %>
        <!-- forward 액션 태그, 프로그램 제어를 b.jsp로 이동시킴 -->
        <jsp:forward page="b.jsp" />
        <%
            } else {
        %>
        <!-- 잘못된 페이지 요청인 경우 알림을 띄우고 forward.jsp로 이동시킴 -->
        <script>
            alert("정상적인 페이지를 입력해주세요!!");
            location.href("forward.jsp");
        </script>
        <%
            }
        %>
    </body>
    </html>
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    a.jsp

    move.jsp에 의해 프로그램 제어가 이동될 페이지

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>a.jsp</title>
    </head>
    <body bgcolor="yellow">
    <%
        // request 객체의 total 속성 값을 가져오면서 int로 형 변환
        int su = (int)request.getAttribute("total");
    %>
        <h1>a.jsp 페이지입니다.</h1>
        
        <!-- su 값 출력 -->
        <h1>su값: <%=su %></h1>
    </body>
    </html>
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    b.jsp

    move.jsp에 의해 프로그램 제어가 이동될 페이지

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" import="java.util.Date"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>b.jsp</title>
    </head>
    <body bgcolor="red">
        <h1>b.jsp 페이지입니다.</h1>
     
        <!-- request 객체의 cal 속성 값을 바로 출력
        표현식으로 바로 출력하는 경우에는 형 변환할 필요 없음 -->
        <h2>d의 값: <%=request.getAttribute("cal")%></h2>
    </body>
    </html>
    http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

    결과

     

    ※ URL의 페이지 경로가 모두 forward.jsp로 표시됨


    JSP 페이지의 흐름을 제어하는 forward 액션 태그에 대해 살펴보았습니다.

    forward 액션 태그는 컨트롤러와 같은 역할을 하며 사용자가 입력한 값에 따라

    다른 페이지로 이동해야 하는 경우 유용하게 사용될 수 있다고 합니다.

    또한 예제에서 보았듯이 forward 액션 태그는 동일한 request 객체를 공유하기 때문에

    set/getAttribute() 메소드를 통해서 포워딩하는 페이지와 데이터를 주고 받을 수 있습니다.

    'JAVA > JSP' 카테고리의 다른 글

    JSP | JavaBean 자바빈  (0) 2020.02.20
    JSP | Template Page  (0) 2020.02.20
    JSP | include 액션 태그  (0) 2020.02.19
    JSP | Action Tag 액션 태그 개요  (0) 2020.02.19
    JSP | Out 내장 객체  (0) 2020.02.19

    댓글

Designed by Tistory.