<액션(Action) 태그>
:커스텀(custom) 태그의 일종으로, XML에 기반한 구문 형식을 가진다.
*커스텀 태그: 유저가 생성해 쓰는 태그(html의 형태지만 jsp의 기능)
-> JSTL의 형태로 나타난다.(jsp standard tag library)
-사용 이유
: jsp의 tag화
-> 문서의 가독성을 높이기 위해
-종류
include
forward
plug-in
useBean
setProperty
getProperty
<Include>
<jsp:include page = "경로 파일명"/>
접두어 태그명 속성
(prefix)
1)문서를 병합한다.
: include 지시자(directive)와 다른 점은, 액션 태그는 포함시킬 페이지의 '처리 결과'를 포함한다는 점
2)각각을 컴파일해서 결과를 합친다.
3)request 영역을 공유한다.
: 모든 페이지에서 request.getParameter 받는 것 가능
4)컴파일을 각각 하기 때문에 동일한 이름의 변수들도 충돌이 발생하지 않는다.
5)기본적으로 데이터를 공유하지 않기 때문에 서로 다른 파일 간에는 데이터를 전송해 사용한다.
<예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Include Tag Example1</h1>
이름: <input name = "name"><p/>
<input type = "submit" value = "보내기">
</form>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
Html 폼 작성
: includeTag1 파일로 데이터를 전송한다.
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"%>
<%
request.setCharacterEncoding("euc-kr");
String name = "Korea Football";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Include Tag Example1</h1>
include ActionTag의 body입니다.
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
병합시킬 페이지 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<%@ 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");
%>
include ActionTag의 Top입니다.<p/>
<b><%= name %> Fighting!</b>
<hr/>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
병합될 페이지 생성
: html폼에서 병합할 페이지로 전송한 데이터를 병합될 페이지에서 받는다.
-> 두 페이지는 request 영역을 공유한다.
-실행
<예제2>
jsp:param태그를 사용해 jsp 페이지 내부의 데이터를 넘기기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Include Tag Example2</h1>
SITENAME: <input name=siteName><p/>
<input type="submit" value="보내기">
</form>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
html 폼 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String siteName = request.getParameter("siteName");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Include Tag Example2</h1>
</jsp:include>
include ActionTag의 Body입니다.<p/>
<b><%= siteName %></b>
<hr/>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
병합 jsp파일 생성(데이터를 넘겨줄 파일)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<%@ 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 siteName = request.getParameter("siteName");
%>
include ActionTag의 Top입니다.<p/>
<%= siteName %>
<hr/>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
병합될 파일 생성(데이터를 받을 파일)
: 여기서 받은 siteName은 폼의 값이 아닌 병합 페이지의 매개변수 siteName(JSPStudy.co.kr)
-실행
<Forward★>
: 다른 페이지로 이동할 때 사용한다. 예를 들어, A.jsp 페이지를 B.jsp 페이지로 forward한 경우, 주소는 A를 가리키더라도 응답은 B가 하게 된다. 즉, 웹 브라우저에는 B의 내용이 출력되며, A 페이지의 forward 명령 이전의 내용은 버려진다.
사용자가 이력한 값의 조건에 의해 여러 페이지로 이동해야 할 경우 등에서 사용된다.
*A의 내용을 B에서 같이 쓰려면?
: A가 데이터를 request영역에 저장, B가 꺼내 쓴다.
-> forward로 이동한 페이지 사이에서도 request는 공유된다.
<예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Forward Tag Example1</h1>
아이디: <input name = "id">
비밀번호: <input type="password" name = "pwd"><p/>
<input type="submit" value="보내기">
</form>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
html 폼 생성
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"%>
<%
request.setCharacterEncoding("UTF-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Forward Tag Example1</h1>
forward Tag의 포워딩 되기 전의 페이지
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
forward 페이지
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<%@ 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 id = request.getParameter("id");
String pwd = request.getParameter("pwd");
%>
<h1>Forward Tag Example1</h1>
당신의 아이디는 <b><%= id %></b>이고, <p/>
비밀번호는 <b><%= pwd %></b>입니다.
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
forward된 페이지
-실행
<praram 예제>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
혈액형별로 성격 테스트<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>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
html 폼 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<%@ 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 = "JSPStudy";
String bloodType = request.getParameter("bloodtype");
%>
<h1>forward Tag Example2</h1>
<jsp:forward page = '<%= bloodType + ".jsp" %>'>
<jsp:param name="name" value = "<%= name %>"/>
</jsp:forward>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
forward 페이지
: 이동할 페이지를 동적으로 설정했다. 조건에 따라 어느 페이지로 이동할 지 달라진다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<%@ 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 bloodType = request.getParameter("bloodtype");
%>
<h1>Forward Tag Example2</h1>
<%= name %>님의 혈액형은
<b><%= bloodType %></b>형이고<p/>
Such a lovely soul.
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
받는 페이지(A, B, O, AB 네 개의 페이지를 각각 만들었다.)
-실행
<스크립트 요소를 대체하는 액션 태그>
: jsp 코딩영역을 태그화시킨 기능이나, 액션 태그는 기존의 스크립트 요소와 JSP 지시자와 비교해서 편리하거나 큰 장점이 없어 많이 사용하지는 않는다.
-실행
'20.03 ~ 20.08 국비교육 > JSP' 카테고리의 다른 글
내부객체1. request, response, out (0) | 2020.04.23 |
---|---|
내부 객체(Implicit Object) (0) | 2020.04.23 |
지시자(Directive) (0) | 2020.04.22 |
폼 전송 (0) | 2020.04.22 |
JSP의 기초 문법 (0) | 2020.04.21 |