13. 액션태그

2023. 3. 27. 17:51Lang/JSP

728x90
반응형
  • jsp 페이지에서 페이지의 모듈화와 흐름을 제어
    • include, forward 액션태그 제공
  • 자바빈 사용을 위해
    • useBean, setProperty, getProgerty 액션테그 제공
  • 사용법
    • <jsp:include page="포함될 페이지" flush="false">
    • 포함될 페이지 : 상대 경로나 절대경로 사용
    • page 속성 값은 표현식 사용 가능
    • flush
      • 포함될 페이지가 제어로 이동될 때 현재 포함하는 페이지가 지금까지 출력버퍼에 저장한 결과를 처리하는 방법
      • true
        • 지금까지 저장한 내용을 웹브라우저에 출력하고 버퍼를 비운다

1. include 액션태그

  • 처리과정
    • 웹브라우저가 a.jsp를 요청
    • 서버는 페이지 처리 중, a.jsp페이지 출력내용을 출력 버퍼에 저장
    • include 액션태그를 만나면 프로그램 제어를 b.jsp 페이지로 이동
    • b.jsp페이지는 페이지 내 출력 내용을 출력 버퍼에 저장하는 등의 작업 처리
    • b 처리가 끝나면 다시 a.jsp로 제어 이동
  • 같은 request 내부 객체를 공유한다

includeTest

<%@ 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>
<%
    String url = "date.jsp";
%>
    <h1>main 페이지</h1>
    <!-- include 액션태그를 이용 date.jsp 포함시키기 -->
    <jsp:include page = "date.jsp"></jsp:include>

    <h2>include 액션태그 - 표현식 이용</h2>
    <jsp:include page="<%=url %>"></jsp:include>

    <h2>include 액션태그 - param 이용</h2>
    <jsp:include page = "date.jsp">
        <jsp:param value ="5" name="no"/>
        <jsp:param value ="홍길동" name="name"/>    
    </jsp:include>

</body>
</html>

date.jsp

<%@page import="java.util.Date"%>
<%@ 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.setCharacterEncoding("utf-8");
    String no = request.getParameter("no");
    String name = request.getParameter("name");

    Date d = new Date();
    String str = d.toLocaleString();

%>
    <hr>
    <p> no : <%=no %></p>
    <p> name : <%=name %></p>
    <p> 현재 일자 : <%=str %></p>
</body>
</html>

2. forward 액션 태그

  • 페이지의 제어흐름을 현재 페이지에서 다른 페이지로 이동시킬 때 사용
  • 페이지 내 액션태그를 만나면 그 전까지 출력 버퍼에 저장되어 있던 내용을 제거
    • 액션태그가 지정하는 페이지로 이동
  • <jsp:forward page="이동할 페이지명"/>

forwardTest.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 name="frm1" method="post" action="forwardTest_ok.jsp">
        이름 : <input type="text" name="name"><br>
        주소 : <input type="text" name="address"><br><br>
        <input type="submit" value="전송">
    </form>

</body>
</html>

foreardTest_ok.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.setCharacterEncoding("utf-8");

    request.setAttribute("fruit","사과");

%>
    <h1>forwardTest_ok.jsp</h1>
    <jsp:forward page="b.jsp">
        <jsp:param value="축구" name="hobby"/>
    </jsp:forward>

</body>
</html>

b.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>
<%
    String name= request.getParameter("name");
    String addr= request.getParameter("address");
    String hobby= request.getParameter("hobby");

    String fruit = (String)request.getAttribute("fruit");

%>

    <h1>b.jsp 페이지</h1>
    <h2>요청 파라미터</h2>
    <p>name : <%=name %></p>
    <p>address : <%=addr %></p>
    <p>hobby : <%=hobby %></p>
    <p>fruit : <%=fruit %></p>

</body>
</html>
728x90
반응형

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

15. DBCP  (0) 2023.03.28
14. 자바빈  (0) 2023.03.27
12. 파일업로드  (0) 2023.03.27
11. jsp에서의 트랜잭션 처리  (0) 2023.03.27
9. 커넥션풀, 싱글톤패턴  (0) 2023.03.27