1. 액션 태그란?
JSP 코드를 HTML 태그와 같은 형태로 간단히 사용할 수 있는 태그.
액션 태그는 일반 JSP 코드 보다 HTML에 더 조화롭게 스며들고 간결함.
액션 태그의 특징
- XML 문법을 따름
- 반드시 종료 태그를 사용해야 함
- 액션 태그 사이에 주석을 사용하면 에러가 발생함
- 액션 태그에 속성 값을 부여할 때는 표현식 <%= %>을 사용할 수 있음
액션 태그는 용도에 따르게 4가지로 나눔
- <jsp:include> : 외부 파일을 현재 파일에 포함 시킨다.
- <jsp:forward> : 다른 페이지로 요청을 넘긴다.
- <jsp:useBean>,<jsp:setProperty>,<jsp:getProperty> : 자바 빈즈를 생성, 값을 설정/추출한다.
- <jsp:param> : 인클루드나 포워드시 매개변수를 전달한다.
2. <jsp:include> : 외부 JSP 파일을 현재 JSP 파일로 포함시키는 기능
---include 지시어와 <jsp:include> 액션 태그 비교---
include 지시어
형식 : <%@include file="포함할 파일의 경로"%>
표현식 : 표현식 사용 불가
포함 방식 : 페이지 자체를 현재 페이지로 포함시킨 후 컴파일 진행
변수 : 포함시킨 파일에서 생성한 변수 사용 진행
page 영역 : 공유됨
request 영역 : 공유됨
<jsp:include> 액션 태그
형식 : <jsp:include page="포함할 파일의 경로" />
표현식 : 표현식 사용 가능
포함 방식 : 실행의 흐름을 포함시킬 페이지로 이동 후 실행한 결과를 현재 페이지에 포함
변수 : 포함시킨 파일에서 생성한 변수 사용 불가
page 영역 : 공유되지 않음
request 영역 : 공유됨
--예제 코드--
<html>
<head><title>지시어와 액션 태그 동작 방식 비교</title></head>
<body>
<h2>지시어와 액션 태그 동작 방식 비교</h2>
<!-- 지시어 방식 -->
<h3>지시어로 페이지 포함하기</h3>
<%@ include file="./inc/OuterPage1.jsp"%>
<%--@ include file="<%=outerPath1OuterPage1%>" --%>
<p>외부 파일에 선언한 변수 : <%=newVar1%></p>
<!-- 액션 태그 방식 -->
<h3>액션 태그로 페이지 포함하기</h3>
<jsp:include page="./inc/OuterPage2.jsp" />
<jsp:include page="<%=outerPath2%>" />
<p>외부 파일에 선언한 변수 : <%--=newVar2 --%></p>
</body>
</html>
3. <jsp:forward> : 현재 페이지에 들어온 요청을 다음 페이지로 보내는 기능
<jsp:forward> 액션 태그를 만나기까지의 모든 출력을 제거하고 포워드할 페이지로 요청을 전달한다.
포워드는 버퍼와 밀접하며, 버퍼를 사용하지 않으면 포워드는 사용할 수 없다.
포워드는 요청 전달이 목적이므로 이동 된 페이지와 request 영역을 공유 한다.
그리고 URL이 변경되지 않는다.
--예제 코드( 포워드 하는 페이지) --
<%
pageContext.setAttribute("pAttr", "김유신");
request.setAttribute("rAttr", "계백");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - forward</title>
</head>
<body>
<h2>액션 태그를 이용한 포워딩</h2>
<jsp:forward page="/07ActionTag/ForwardSub.jsp" />
</body>
</html>
--예제 코드( 포워드 되는 페이지 ForwardSub.jsp) --
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - forward</title>
</head>
<body>
<h2>포워드 결과</h2>
<ul>
<li>
page 영역 : <%= pageContext.getAttribute("pAttr") %>
</li>
<li>
request 영역 : <%= request.getAttribute("rAttr") %>
</li>
</ul>
</body>
</html>
4. <jsp:useBean>,<jsp:setProperty>,<jsp:getProperty>: 자바빈즈는 데이터를 저장하기 위한 멤버 변수(속성)과 세터/게터 메스드로만 이루어진 클래스
---자바빈즈의 개발 규약---
- 자바빈즈는 기본 패키지 이외의 패키지에 속해 있어야 한다.
- 멤버 변수(속성, 프로퍼티)의 접근 지정자는 private 으로 선언한다.
- 기본 생성자가 있어야 한다.
- 멤버 변수에 접근할 수 있는 게터/세터 메서드가 있어야 한다.
- 게터/세터 메서드의 접근 지정자는 public 으로 선언한다.
1) 자바빈즈 생성
<jsp:useBean id="자바빈즈 이름" class="사용할 패키지와 클래스명" scope="저장될 영역" />
- id: 자바빈지 객체의 이름을 지정한다. 같은 id로 이미 생성된 객체가 있다면 해당 객체를 사용하고, 아직 없다면 새로 생성한다.
- class: 사용하려는 자바빈즈 객체의 실제 패키지명과 클래스명을 지정한다.
- scope: 자바빈즈가 저장될 내장 객체 영역을 지정한다. 생략하면 기본값인 page 영역이 지정된다.
2) 멤버 변수 값 설정
<jsp:setProperty name="자바빈즈 이름" property="속성명(멤버 변수) value="설정할 값"/>
- name: <jsp:uesBean>의 id 속성에 지정한 자바빈즈의 이름을 지정한다.
- property: 자바빈즈의 멤버 변수명을 지정한다. 이름을 명시하는 대신 property="*" 라고 쓰면 form의 하위 요소와 일치하는 자바빈즈의 모든 속성에 전송한 값이 설정된다.
- value: 멤버 변수에 설정할 값을 지정한다.
3) 멤버 변수 값 추출
<jsp:getProperty name="자바빈즈 이름" property="속성명(멤버 변수) />
각 속성의 의미는 위와 같다.
--예제코드--
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - UseBean</title>
</head>
<body>
<h2>useBean 액션 태그</h2>
<h3>자바빈즈 생성하기</h3>
<jsp:useBean id="person" class="common.Person" scope="request" />
<h3>setProperty 액션 태그로 자바빈즈 속성 지정하기</h3>
<jsp:setProperty name="person" property="name" value="임꺽정" />
<jsp:setProperty name="person" property="age" value="41" />
<h3>getProperty 액션 태그로 자바빈즈 속성 읽기</h3>
<ul>
<li>이름 : <jsp:getProperty name="person" property="name" /></li>
<li>나이 : <jsp:getProperty name="person" property="age" /></li>
</ul>
</body>
</html>
5. <jsp:param> : 다른 페이지에 값을 전달해주는 액션 태그. 전달할 수 있는 값은 String 뿐. 다른 타입의 객체를 전달 할 때는 내장 객체의 영역을 이용해야 한다.
1) 포워드 되는 페이지로 매개변수 전달하기
<%
request.setCharacterEncoding("UTF-8"); //한글 전달을 위해 UTF-8로 설정
String pValue = "방랑시인";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - param</title>
</head>
<body>
//request 영역에 저장할 자바빈즈 생성
<jsp:useBean id="person" class="common.Person" scope="request" />
//멤버 변수 name, age 값의 설정
<jsp:setProperty name="person" property="name" value="김삿갓" />
<jsp:setProperty name="person" property="age" value="56" />
//ParamForward.jsp 으로 포워딩 하면서 쿼리 스트링으로 param1 매개변수 함께 전달
<jsp:forward page="ParamForward.jsp?param1=김병연">
//jsp:param 속성으로 param2와 param2 매개변수 전달
<jsp:param name="param2" value="경기도 양주" />
<jsp:param name="param3" value="<%=pValue%>" />
</jsp:forward>
</body>
</html>
2) 포워드 되는 페이지
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>액션 태그 - param</title>
</head>
<body>
//이전 페이지에서 request 영역에 저장한 자바빈즈를 가져온다.
<jsp:useBean id="person" class="common.Person" scope="request" />
<h2>포워드된 페이지에서 매개변수 확인</h2>
<ul>
//멤버 변수 값을 가져와 출력한다.
<li><jsp:getProperty name="person" property="name" /></li>
<li>나이 : <jsp:getProperty name="person" property="age" /></li>
// 쿼리 스트링으로 전달된 매개 변수 출력
<li>본명 : <%= request.getParameter("param1") %></li>
//<jsp:param> 액션 태그로 전달된 매개 변수 출력
<li>출생 : <%= request.getParameter("param2") %></li>
<li>특징 : <%= request.getParameter("param3") %></li>
</ul>
</body>
</html>
댓글 없음:
댓글 쓰기