오봉이와 함께하는 개발 블로그

JSP - 액션 태그(include, param&forward) 본문

BE/JSP

JSP - 액션 태그(include, param&forward)

오봉봉이 2021. 12. 30. 17:37
728x90

액션 태그

  • JSP 페이지 내에서 어떤 동작을 지시하는 태그
  • 기능
    • 어떤 동작 또는 액션이 일어나는 시점에 페이지와 페이지 사이에서의 제어 이동
    • 다른 페이지의 실행 결과를 현재 페이지에 포함
  • 종류
    • include
    • forward
    • useBean
    • setProperty
    • getProperty

include 액션태그 : <jsp:include>

  • 다른 페이지의 실행 결과를 현재 페이지에 포함시킬 때 사용
  • 페이지를 모듈화 할 때 사용
  • <jsp:include page="포함될 페이지" flush="ture" />
    • page 속성 : 결과가 포함될 페이지명
    • flust 속성 : 포함될 페이지로 이동될 때 현재 포함하는 페이지가 지금까지 출력 버퍼에 저장한 결과를 처리하는 방법을 결정
      • true : 현재 페이지가 지금까지 버퍼에 저장한 내용 웹 브라우저에 출력하고 버퍼를 비움
  • include 액션태그와 include 지시어의 차이
    • 형식
      • 액션태그 : <jsp:include page="포함될 페이지" />
      • 지시어 : <%@ include file="포함될 페이지" %>
    • 처리 시점
      • 액션태그 : 실행 시
      • 지시어 : 자바 소스로 변환 시
    • 기능
      • 액션태그 : 별도의 파일로 처리, 제어권이 이동했다가 다시 돌아옴
      • 지시어 : 현재 파일에 삽ㅇ비(합쳐서 하나의 java 파일 생성)
    • 데이터 구성
      • 액션태그 : 동적 데이터로 구성
      • 지시어 : 정적 데이터로 구성
    • 용도
      • 액션태그 : 화면 레이아웃 모듈화 할 때
      • 지시어 : 여러 페이지에서 사용하는 변수를 지정하고 include 시킴

include 액션 태그 예제 - includeAction1.jsp, includeAction2.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>includeAction1</title>
    </head>
    <body>
        <h3>includeAction1.jsp 입니다</h3>
        <hr>
        <jsp:include page="includeAction2.jsp" flush="true"/>
    </body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
      <title>includeAction2</title>
  </head>
  <body>
    <h3>includeAction2.jsp 입니다</h3>
  </body>
</html>

forward 액션 태그 : <jsp:forward>

  • 현재 페이지에서 다른 특정 페이지로 전환
  • 웹 페이지 간의 제어를 이동시킬 때 사용
  • <jsp:forward page=”포워딩할 JSP 페이지”>

forward 액션 태그 예제 - login.jsp, loginResult.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>login</title>
    </head>
    <body>
<%--        <%--%>
<%--            String user_id = request.getParameter("user_id");--%>
<%--            // 값이 null인경우 출력은 되지만 null로 무언가 하려고 하면 NullPointerException 출력--%>
<%--        %>--%>
<%--        <%= user_id %>--%>
        <%
            String user_id = request.getParameter("user_id");
            if(user_id == null) {
        %>
        <h2 name="h2login">로그인</h2>
        <%
            } else {
        %>
        <h2>아이디를 입력하지 않았습니다. 아이디를 입력해 주세요.</h2>
        <%
            }
        %>
        <form name="frmLogin" method="post" action="loginResult.jsp" >
        아이디  :<input type="text" name="user_id"><br>
        비밀번호:<input type="password" name="user_pw" ><br>
        <input type="submit" value="로그인">  <input type="reset" value="다시입력">
        </form>
    </body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <%
            request.setCharacterEncoding("utf-8");
            // 아이디를 입력하지 않았으면 login.jsp 페이지로 포워딩
            String user_id = request.getParameter("user_id");
            if(user_id.length() == 0) {
        %>
        <jsp:forward page="login.jsp"/>
        <%
            }
        %>
    <h2>환영합니다 <%= user_id%> 님!</h2>
    </body>
</html>

param 액션 태그 : <jsp:param>

  • 이동하는 페이지에 파라미터 값을 전달할 때 사용
  • forward 및 include 액션 태그에서 데이터를 전달하기 위해 사용
  • name과 value로 구성
    • <jsp:param name="id" value="abcd" />
    • 받을 때
      • request.getParameter("id");

forward 액션 태그 예제 - paramLogin.jsp, paramLoginResult.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>paramLogin</title>
    </head>
    <body>
        <%
            request.setCharacterEncoding("utf-8");
            String msg = request.getParameter("msg");
            if(msg == null) {
        %>
            <h3>로그인</h3>
        <%
            } else {
        %>
            <h3><%= msg %></h3>
        <%
            }
        %>
        <form name="frmLogin" method="post" action="paramLoginResult.jsp" >
            아이디  :<input type="text" name="user_id"><br>
            비밀번호:<input type="password" name="user_pw" ><br>
            <input type="submit" value="로그인">  <input type="reset" value="다시입력">
        </form>
    </body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
      <title>paramLoginResult</title>
  </head>
  <body>
    <%
        request.setCharacterEncoding("utf-8");
        String msg = "아이디를 입력하지 않았습니다. 아이디를 입력해 주세요.";
        String user_id = request.getParameter("user_id");
        //  user_id 값이 비었으면 paramLogin.jsp로 포워딩 (msg 전송)
        if(user_id.length() == 0) {
    %>
    <jsp:forward page="paramLogin.jsp">
        <jsp:param name="msg" value="<%= msg %>"/>
    </jsp:forward>
    <%
        }
    %>

    <h3>환영합니다. <%= user_id %> 님!</h3>
  </body>
</html>
728x90
Comments