액션 태그
어떤 동작 또는 액션이 일어나는 시점에 페이지와 페이지 사이에 제어를 이동시킬 수도 있고 또 브라우저에서 자바 애플릿을 실행시킬 수 있는 태그이다. 또한 자바 빈즈의 기능을 사용할 수 있도록 한다. 액션 태그는 다음과 같이 6가지 종류가 있다.
- include
- forward
- plug-in
- useBean
- setProperty
- getProperty
include 액션 태그
include 지시자와 함께 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능을 가지고 있다. 그러나 지시자는 단순하게 소스의 내용이 텍스트로 표함이 되지만 액션 태그는 포함시킬 페이지의 처리 결과를 포함시킨다는 점이 다르다. 포함되는 페이지는 HTML, JSP, Servlet 모두 가능하다.
<jsp:include page="로컬URL" flush="true"/>
include 액션 태그의 flush 속성은 포함될 페이지로 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장한 결과를 어떻게 처리할 것인가를 결정한다. 속성값을 true로 지정하면 포함할 페이지의 내용을 삽입하기 이전에 현재 페이지가 지금까지 버퍼에 저장한 내용을 출력하게 되는 것이다.
includeTag1.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Include Tag Example</h1>
<form method="post" action="includeTag1.jsp">
이름 : <input name="name"><p/>
<input type="submit" value="보내기">
</form>
</body>
</html>
includeTag1.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String name = "Korea Football";
%>
<html>
<body>
<h1>Include Tag Example</h1>
<jsp:include page="includeTagTop1.jsp"/>
include ActionTag의 Body입니다.
</body>
</html>
includeTagTop1.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%
String name = request.getParameter("name");
%>
include ActionTag의 Top입니다.<p/>
<b><%=name %> Fighting!!!</b>
<hr/>
출력 결과


액션 태그는 포함될 JSP 페이지에 새로운 요청 파라미터를 추가적으로 지정할 수가 있다. 몸체 안에 <jsp:param> 태그를 사용하여 다음과 같은 형태로 사용이 된다.
<jsp:include page="로컬URL" flush="true">
<jsp:param name="name1" value="value1"/>
<jsp:param name="name2" value="value2"/>
</jsp:include>
<jsp:param> 태그의 name은 포함될 JSP 페이지 안에 사용될 파라미터의 이름을 나타내며, value 속성은 파라미터의 값을 나타낸다.
includeTag2.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Include Tag Example</h1>
<form method="post" action="includeTag2.jsp">
SITENAME : <input name="siteName"><p/>
<input type="submit" value="보내기">
</form>
</body>
</html>
includeTag2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String siteName = request.getParameter("siteName");
%>
<html>
<body>
<h1>Include Tag Example</h1>
<jsp:include page="includeTagTop2.jsp">
<jsp:param name="siteName" value="JSPStudy.co.kr"/>
</jsp:include>
include ActionTag의 Body입니다.<p/>
<b><%=siteName %></b>
<hr/>
</body>
</html>
includeTagTop2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String siteName = request.getParameter("siteName");
%>
include ActionTag의 Top입니다.<p/>
<%=siteName%>
<hr/>
출력 결과


forward 액션 태그
다른 페이지로 이동할 때 사용되는 태그이다. JSP 페이지 내에 forward 액션 태그를 만나게 되면 forward 태그가 있던 JSP 페이지의 모든 내용을 버리고서 forward 태그가 지정하는 다른 페이지로 이동하게 된다. 따라서 사용자가 입력한 값의 조건에 의해 여러 페이지로 이동해야 할 경우 등에 사용할 수 있는 태그이다.
로컬 URL로 지정된 값은 상대경로나 절대경로를 지정할 수 있고, 또 직접 입력하지 않고 동적으로도 부여할 수 있다.
<jsp:forward page="로컬URL"/>
<jsp:forward page="로컬URL"></jsp:forward>
<jsp:forward page='<%=expression%>'/>
forwardTag1.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>forward Tag Example</h1>
<form method="post" action="forwardTag1_1.jsp">
아이디 : <input name="id"><p/>
패스워드 : <input type="passward" name="pwd"><p/>
<input type="submit" value="보내기">
</form>
</body>
</html>
forwardTag1_1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<html>
<body>
<h1>Forward Tag Example</h1>
forward Tag의 포워딩 되기 전의 페이지입니다.
<!-- 이전의 내용이 무시되기 때문에 상단 내용은 출력되지 않습니다. -->
<jsp:forward page="forwardTag1_2.jsp"/>
</body>
</html>
forward1_2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
%>
<h1>Forward Tag Example</h1>
당신의 아이디는 <b><%=id %></b>이고<p/>
패스워드는 <b><%=pwd %></b>입니다.
출력 결과


forward 액션 태그에도 <jsp:param> 태그를 사용해 매개변수와는 별도로 추가적인 값이 생겼을 때 사용할 수 있다.
forwardTag2.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>
<h1>Forward Tag Example</h1>
<form method="post" action="forwardTag2_1.jsp">
혈액형별로 성격 테스트<p/>
당신의 혈액형은?<p/>
<input type="radio" name="bloodType" value="A">A형<br/>
<input type="radio" name="bloodType" value="B">B형<br/>
<input type="radio" name="bloodType" value="O">O형<br/>
<input type="radio" name="bloodType" value="AB">AB형<br/>
<input type="submit" value="보내기">
</form>
</body>
</html>
forwardTag2_1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = "JSPStudy";
String bloodType = request.getParameter("bloodType");
%>
<h1>Forward Tag Example</h1>
<jsp:forward page='<%=bloodType + ".jsp" %>'>
<jsp:param name="name" value="<%=name %>"/>
</jsp:forward>
A, B, O, AB.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name = request.getParameter("name");
String bloodType = request.getParameter("bloodType");
%>
<h1>Forward Tag Example</h1>
<%=name%>님의 혈액형은
<b><%=bloodType%></b>형이고<p/>
정확한 판단력을 가진 합리주의자입니다.
출력 결과


스크립트 요소를 대체하는 액션 태그
스크립트 요소와 JSP 지시자를 아래와 같은 액션 태그로 사용할 수 있다. 그러나 현재까지는 기존의 스크립트 요소와 JSP 지시자와 비교해서 편리하거나 큰 장점이 없어 많이 사용하지는 않는다.
<jsp:declaration>코드</jsp:declaration>
<jsp:scriptlet>코드</jsp:scriptlet>
<jsp:expression>코드</jsp:expression>
<jsp:directive.page contetnType="text/html; charset=UTF-8"/>
<jsp:directive.include file="xxx.jsp"/>
scriptTag.html
<jsp:directive.page contentType="text/html; charset=UTF-8"/>
<html>
<body>
<h1>Script Tag Example</h1>
<jsp:declaration>
public int max(int i, int j) {
return (i>j)? i : j;
}
</jsp:declaration>
<jsp:scriptlet>
int i = 22;
int j = 23;
</jsp:scriptlet>
i = <jsp:expression>i</jsp:expression> 와
j = <jsp:expression>j</jsp:expression> 중에 더 큰 숫자는?
<b><jsp:expression>max(i, j)</jsp:expression></b>
</body>
</html>

기타 액션 태그
plug-in
<jsp:plugin> 액션은 자바 플러그인을 사용하여 자바 애플릿을 JSP 페이지에서 실행할 때 사용하는 액션 태그이다. JSP 컨테이너는 <jsp:plugin> 액션 태그를 브라우저에서 인식할 수 있는 태그로 전환하여 브라우저가 자바 플러그인을 사용해 자바 애플릿을 실행하도록 만들어준다.
useBean
자바빈즈와 통신을 위해서 구현한 액션태그이다.
<jsp:useBean id=".." class=".." scope=".."/>
<jsp:setProperty name=".." property=".." value=".."/>
<jsp:getProperty name=".." property=".."/>
'Web Programming > JSP' 카테고리의 다른 글
| [JSP] 입출력 관련 내부 객체 (1) | 2024.10.04 |
|---|---|
| [JSP] 내부 객체 (0) | 2024.10.04 |
| [JSP] 기본 제어문 (0) | 2024.10.02 |
| [JSP] taglib Directive (1) | 2024.09.30 |
| [JSP] include Directive (1) | 2024.09.30 |