19.04.28 액션 태그

Back-End/JSP 2019. 4. 28. 21:19
728x90
반응형

- 액션 태그 -

 

어떤 동작 또는 액션이 일어나는 시점에서 실행이 일어나는 JSP 태그입니다.

또한, 브라우저에서 자바 애플릿을 실행시킬수 있고, 자바 빈즈의 기능을 사용할 수 있도록 합니다.

 

자바 애플릿 : 자바 언어로 작성된 소프트웨어. 애플릿이라고도 한다.

자바 빈즈 : 자바빈즈(JavaBeans)는 자바로 작성된 소프트웨어 컴포넌트이다.

 

 

 

-액션 태그의 종류-

 

 

  1.include

 

  2.forward

 

  3.plug-in

 

  4.useBean

 

  5.setProperty

 

  6.getProperty

 

 

 

-include 액션 태그-

 

include 액션 태그는 include 지시자와 함께 다른 페이지를 현재 페이지에 포함시킬 수 있는 기능을 가지고 있습니다.

그러나 include 지시자는 단순하게 소스의 내용이 텍스트로 포함이 되지만 include 액션 태그는 포함시킬 페이지의 처리 결과를

포함시킨다는 점이 다릅니다.

 

 

  <jsp:include page="로컬URL" flush="true"/>

 

 

 

flush 속성은 포함될 페이지로 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장한 결과를 어떻게 처리할 것인가를 결정합니다.

flush 속성값을 true로 지정하면 포함할 페이지의 내용을 삽입하기 이전에 현재 페이지가 지금까지 버퍼에 저장한 내용을 출력하게 되는 것입니다.

 

 

 

 

  form 태그

 

  form 태그의 method 속성에는 get 방식과 post 방식 두 가지가 있습니다.

  get 방식은 전송할 데이터를 URL 뒤에 덧붙여서 보내어지고 용량에 제한이 있는 속성이지만, post 방식은 전송할

  데이터를 환경변수에 담아서 넘기고 용량에는 제한이 없는 속성입니다.

  참고로 get 방식이 먼저 나왔기 대문에 form 태그에 method의 기본값으로 설정이 되어 있고, post 방식이 나온 이유는 가면 갈수록 HTML에서

  전송하는 데이터 용량이 많아져서 get 방식으로는 처리가 불가능해졌기 때문입니다.

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
<h1>Include Tag Example1</h1>
<form method="post" action="includeTag1.jsp">
    <!-- includeTag1.jsp파일로 파라미터를 보내는 방식을 post방식으로 한다.-->
    이름 : <input name="name">
    <p />
    <input type="submit" value="보내기">
</form>
cs

 

1
2
3
4
5
6
7
8
9
10
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    String name = request.getParameter("name");
%>
include ActionTag의 Top입니다.
<p />
<b><%=name%>Fighting!!!</b>
<!-- <b>는 글씨의 굵기를 조절할수 있다. -->
<hr />
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    request.setCharacterEncoding("euc-kr"); //form으로 부터 전송된 문자의 문자셋을 설정 (한글 안깨지게함) 
    String name = "Korea Football"//includeTagTop1.jsp에서 name 값은 includeTag1.html에서 입력 받은 값으로 처리가 된 후이기 때문에
                                    //이 페이지의 name 값은 전혀 상관이 없는 값이 됩니다.
%>
<html>
<body>
    <h1>Include Tag Example</h1>
    <!-- include 액션 태그로  includeTagTop1.jsp를 포함시키고 있다.-->
    <jsp:include page="includeTagTop1.jsp" />
    <!-- 포함시킬 파일로 이동하여 처리 결과의 내용만을 가지고 다시 현재 페이지로 돌아온다.-->
    include ActionTag의 Body 입니다.
</body>
</html>
cs

 

 

include 액션 태그는 포함될 jsp 페이지에 새로운 요청 파라미터를 추가적으로 지정할 수가 있습니다.

 

include 액션 태그의 몸체 안에 <jsp:param> 태그를 사용하여 다음과 같은 형태로 사용이 됩니다.

 

 

  <jsp:include page = "로컬URL" flush="true">

     <jsp:param name = "name_1" value = "value_1"/>

     <jsp:param name = "name_2" value = "value_2"/>

  <jsp:include>

 

 

<jsp:param> 태그의 name은 포함될 jsp 페이지 안에 사용될 파라미터의 이름을 나타내며, value 속 속성은 파라미터의 값을 나타냅니다.

 

 

 

 

-정리-

 

<jsp:include>는 jsp내에 또다른 jsp파일을 실행하게함..

 

main.jsp를 실행하면 A가 출력된다음에

-> jsp:include액션태그를 타고 sub.jsp에 있는 B를 출력하고

->main.jsp로 다시 돌아와서 C를 출력한다..

 

 

 

 

 

어디서 주로 많이 쓰이냐면

이런 구성인 웹페이지를 만들때 main.jsp부분만 바꿀수 있게 하는 뭐 그런쪽에 많이 쓰인다고함

header, main, footer부분에 해당하는것은 중복되는 jsp이므로!

 

 

 

-예제 및 출력 결과-

 

1
2
3
4
5
6
7
<h1>Include Tag Example</h1>
<form method="post" action="includeTag2.jsp">
    SITENAME : <input name="siteName"> <!--입력받은 siteName를 includeTag2.jsp파일로 보낸다.-->
    <p />
    <!-- <p>는 글 단락 -->
    <input type="submit" value="보내기">
</form>
cs

 

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=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    request.setCharacterEncoding("EUC-KR"); //form 으로부터 전송된 한글 문자가 깨어지지 않게 출력한 코드
    String siteName = request.getParameter("siteName"); //html에서 입력받은 값을 변수로 받아 14번째줄에서 출력중
%>
<html>
<body>
    <h1>Include Tag Example</h1>
    <!--include 액션태그에 매개변수 값을 넘겨주기 위해 jsp:param 태그를 사용-->
    <jsp:include page="includeTagTop2.jsp">
        <jsp:param name="siteName" value="JSPStudy.co.kr" /> //includeTagTop2.jsp파일로 siteName 변수의 값에 "JSPStudy.co.kr"을 넣고 보낸다.
    </jsp:include>
    include ActionTag 의 Body입니다.
    <p />
    <b><%=siteName%></b>
    <hr />
</body>
</html>
cs

 

1
2
3
4
5
6
7
8
9
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    String siteName = request.getParameter("siteName"); //includeTag2.jsp에서 보낸 siteName를 파라미터로 받는다.
%>
include ActionTag의 Top입니다
<p />
<%=siteName%> //includeTag2.jsp에서 보낸 siteName를 출력한다. <hr/>
cs

 

 

 

 

-forward 액션 태그-

 

다른 페이지로 이동할 때 사용되는 태그입니다.

jsp 페이지 내에 forward 액션 태그를 만나게 되면 forward 태그가 있던 jsp 페이지의 모든 내용을 버리고서 forward 태그가 지정하는 다른 페이지로

이동하게 됩니다.

따라서 사용자가 입력한 값의 조건에 의해 여러 페이지로 이동해야 할 경우 등에서 사용할 수 있는 태그입니다.

여기서 로컬 URL로 지정된 값은 상대경로나 절대경로를 지정할 수 있고 또 직접 입력하지 않고 동적으로도 부여할 수 있습니다.

 

 

  <jsp:forward page="로컬URL"/>

  <jsp:forward page="로컬URL"></jsp:forward>

  <jsp:forward page='<%=expression%>'/>

 

 



-예제 및 출력결과-


1
2
3
4
5
6
7
8
9
10
11
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<h1>Forward Tag Example</h1>
<form method=post action="forwardTag1_1.jsp">
    아이디 : <input name="id">
    <p />
    패스워드 : <input type="password" name="pwd">
    <p />
    <input type="submit" value="보내기">
</form>
cs


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    request.setCharacterEncoding("EUC-KR"); // 밑에서 다른 jsp파일로 포워딩 되고 있기 때문에 지워도 아무 영향이 없다.
%>
<html>
<body>
    <h1>Forward Tag Example1</h1>
    forward Tag의 포워딩 되기 전의 페이지 입니다.
    <jsp:forward page="forwardTag1_2.jsp" />
    <!-- forward 액션 태그를 통해서 forwardTag1_2.jsp로 넘어가는 부분입니다. 즉 앞의 내용은 다 버리고 이동하게 됩니다.-->
</body>
</html>
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    String id = request.getParameter("id");
    String pwd = request.getParameter("pwd");
%>
<h1>Forward Tag Example1</h1>
당신의 아이디는
<b><%=id%></b>
이고
</p>
패스워드는
<b><%=pwd%></b>
입니다.
 
cs






<jsp:param> 태그는 액션을 시도하려는 페이지에서 클라이언트 요청시에 포함된 매개변수와는 별도로 추가적인 값이 생길 때 

사용하는 태그 입니다.


 

<jsp:forward page="로컬URL">

<jsp:param name="name_1" value="value_1"/>

<jsp:param name="name_2" value="value_2"/>

</jsp:forward>




-예제 및 출력 결과-


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
</head>
<h1>Forward Tag Example2</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>
cs


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    String name = "JSPStudy";
    String bloodType = request.getParameter("bloodType");
    String value = request.getParameter("value");
%>
<h1>Forward Tag Example2</h1>
<!--액션태그로 넘어가는 페이지 이름을 html에서 입력받는 값으로 설정을 하였다. -->
<!--추가적인 매개변수의 값은 jsp:param액션태그를 사용하여 넘겨주고 있다. -->
<jsp:forward page='<%=bloodType + ".jsp"%>'>
    <jsp:param name="name" value="<%=name%>" />
</jsp:forward>
cs


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=EUC-KR"%>
<%
    String name = request.getParameter("name"); //<jsp:param> 액션태그에 추가적인 매개변수의 값을 받아서 출력함
    String bloodType = request.getParameter("bloodType"); //html에서 입력한 bloodType값을 받아서 출력함
%>
<h1>Forward Tag Example2</h1>
<%=name%>님의 혈액형은
<b><%=bloodType%></b>
형이고
<p />
정확한 판단을 가진 합리주의자 입니다.
 
cs





-스크립트 요소를 대체하는 액션 태그-


JSP 기초문법에서 설명을 드렸든 스크립트 요소와 JSP 지시자를 아래와 같은 액션 태그로 사용을 할 수가 있습니다.

편리하거나 큰 장점이 없어 많이 사용하지는 않습니다.


 

  <jsp:declaration> 코드 </jsp:declaration>

  <jsp:scriptlet> 코드 </jsp:scriptlet>

  <jsp:expression> 코드 </jsp:expression>

  <jsp:directive.page contentType="text/html; charset=EUC-KR" />

  <jsp:directive.include file="xxx.jsp"/>



728x90
반응형
: