20.03 ~ 20.08 국비교육/JSP

액션(Action)

찹키리 2020. 4. 23. 10:31

<액션(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>
    <form method = "post" action = "includeTag1.jsp">
    이름: <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>
<jsp:include page = "includeTagTop1.jsp"/>
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>
    <form method="post" action="includeTag2.jsp">
    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 page="includeTagTop2.jsp">
    <jsp:param name="siteName" value="JSPStudy.co.kr"/>
    </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>
    <form method = post action = "forwardTag1_1.jsp">
    아이디: <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의 포워딩 되기 전의 페이지
    
    <jsp:forward page = "forwardTag1_2.jsp"/>
</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>
    <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>
 
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