티스토리 뷰

WEB/DynamicWeb

[JSP] Action Tags

춘햄 2021. 4. 22. 16:57

1. 액션 태그?

 

 액션 태그는 JSP페이지에서 자바 코드 등의 스크립트 언어를 사용하지 않고도 다른 페이지의 서블릿이나 자바빈의 객체에 접근할 수 있도록 태그를 이용해 구현된 기능을 의미한다. 


2. 액션 태그가 제공하는 기능들


 - 페이지와 페이지 사이의 제어 이동이 가능
 - 다른 페이지의 실행결과를 현재 페이지에 포함 가능
 - 웹 브라우저에서 자바 애플릿을 실행하는 기능도 제공

 ( 자바 애플릿: 자바 내에서 미디어를 다루는 기본 라이브러리, 요즘은 사용하지 않는다.)
 - JSP 페이지에서 페이지 모듈화와 흐름 제어를 위해 <include>, <forward> 를 제공한다.

즉, 이전에 포스팅한 forward와 include는 JSP에서 기본으로 제공하는 액션 태그라고 할 수 있다.

 - 자바빈 사용을 위해 useBean, setProperty, getProperty 태그 제공

 - 플러그인 사용을 위해 plug-in 태그 제공


3. JSP에서 제공하는 액션 태그의 종류와 역할

 - 페이지 흐름 제어 액션(forward, include)
 - 자바빈 사용 액션(useBean)
 - 애플릿 사용 액션(plugin)


 

4. Action Tag: forward 사용 예제

 직전 포스팅에서 forward를 활횽한 예제를 하나 실습했으므로, 따로 자세한 설명은 생략하겠다. 그러나, Action Tag로 사용하는 forward는 그 사용 형태가 조금 다르다.

 

◎ forwardForm1.jsp

<%@ page language= "java" contentType="text/html;charset=UTF-8"%>
<html>
<body>
	<h1>Forward 사용법 예제</h1>
	<form method=post action="forwardFrom1.jsp">
		아이디 : <input type="text" name="id">
		<p>
		패스워드 : <input type="password" NAME="password">
		<p>
		<input type="submit" value="보내기">
	</form>
</body>
</html>

◎ forwardFrom1.jsp

<%@ page language= "java" contentType="text/html;charset=UTF-8"%>
<html>
	<body>
      <h2>포워딩하는 페이지: forwardFrom1.jsp</h2>
      
      <%
		request.setCharacterEncoding("UTF-8");
	  %>
      
      forwardFrom1.jsp의 내용 입니다.
      <br> 
      화면에 절대 표시 안됩니다.
      <%-- forward 때문에 --%>
      
      <jsp:forward page="forwardTo1.jsp" />
      
      <%--독립된 객체이기 때문에 script 안에 안쓴다. --%>
	</body>
</html>

◎ forwardTo1.jsp

<%@ page language= "java" contentType="text/html;charset=UTF-8"%>
<html>
  <body>
    <h2>포워딩되는 페이지: forwardTo1.jsp</h2>
    
     <%
		request.setCharacterEncoding("UTF-8");
	 %>
    
    <%
    String id = request.getParameter("id");
    // forward로 최종적으로 받는 파일에 request를 해도 된다.
    String password = request.getParameter("password");
    %>
    
    <b><%=id%></b>님의
    <p>
    패스워드는 <b><%=password%></b>입니다.
  </body>
</html>

위와 같이 코드를 작성해서 실행해보면,  forwardForm에서 post로 내보냈던 request가 from을 거쳐 forward되어 바로 to로 넘어가는 것을 확인할 수 있다.

forward로 넘어가는 페이지와 request를 공유하지만 아래와 같이 param을 사용하여 직접 넘겨줄 수도 있다.  

<%@ page language= "java" contentType="text/html;charset=UTF-8"%>
<html>
	<body>
      <h2>포워딩하는 페이지: forwardFrom1.jsp</h2>
      
      <%
		request.setCharacterEncoding("UTF-8");
        String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
	  %>
      
      forwardFrom1.jsp의 내용 입니다.
      <br> 
      화면에 절대 표시 안됩니다.
      <%-- forward 때문에 --%>
      
      <jsp:forward page="forwardTo1.jsp">
      	<jsp:param value=<%=id%> name = "id"/>
        <jsp:param value=<%=pwd%> name = "pwd"/>
      </jsp:forward>
      
      <%--독립된 객체이기 때문에 script 안에 안쓴다. --%>
	</body>
</html>

그러나, 위와 같이 사용하게 되면 받는 쪽에서는 request를 post로 받게 되니, 따로 인코딩을 진행해주어야 한다.


5. Action Tag: include 사용 예제

 마찬가지로 Include 역시 한번 실습을 진행했으므로, 자세한 설명은 생략하겠다. 

include를 사용할 때, 가장 중요한 것은 include되는 jsp파일은 또 다른 jsp파일 내부에 들어가는 파일이기 때문에, <html>, <head>, <body>와 같은 태그의 중복 사용으로 오류가 발생할 수 있다.

이 부분을 잘 생각하며, 간단한 예제를 하나 보자.

 

◎ includeForm.jsp

 <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>include 액션태그 사용법 예제</h1>
	<form method=post action="includeMain.jsp">
		이름 : <input type="text" name="name">
		<p>
		<input type="submit" value="보내기">
	</form>
</body>
</html>

◎ includeMain.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>포함하는 페이지 includeMain.jsp 입니다.</h1>
	<%
	request.setCharacterEncoding("UTF-8");
	%>
	<hr>
	<jsp:include page="includeSub.jsp" flush="false" />
	<!-- 처리된 결과 내용을 출력 -->
	includeMain.jsp의 나머지 내용입니다.
</body>
</html>

◎ includeSub.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	String name = request.getParameter("name");
%>
	포함되는 페이지 includeSub.jsp 입니다.
<p>
<b><%=name%> 님 어서 오세요 !!</b>
<hr>

알아둬야 할 점은, include되는 Sub에서도 Main으로 들어온 Request를 사용할 수 있다는 것이다. 

해당 페이지의 부분으로 들어가니, 사실 당연하다.


5 - 2 . Action Tag: include 사용 예제2

마찬가지로 include또한 param을 써서 직접 값을 전달해줄 수 있다. 이번엔 조금 다른 예제로 확인해보자.

 

 

◎ includeForm2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>include 액션 태그에서 포함되는 페이지에 값 전달하기</h2>
	<form method=post action="includeMain2.jsp">
		사이트 명 : <input type="url" name="siteName1"> 
		<!--  url은 http://을 포함하고 있어야 값을 입력 가능 -->
	<p>
	<input type="submit" value="보내기">
</form>
</body>
</html>

◎ includeMain2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>includeMain2.jsp 페이지 입니다</h2>
	<%
	request.setCharacterEncoding("UTF-8");
	String siteName1 = request.getParameter("siteName1");
	%>
	<hr>
	<jsp:include page="includeSub2.jsp">
		<jsp:param name="siteName" value="<%=siteName1%>" />
	</jsp:include>
	includeMain2.jsp 페이지의 나머지 내용입니다.
	<p>
</body>
</html>

◎ includeSub2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
	String siteName = request.getParameter("siteName");
%>
	includeSub2.jsp 페이지 입니다.
<p>
	<b><%=siteName%></b>
<hr>

액션 태그의 전반적인 기능과 forward, include의 활용 예제를 실습해봤는데, 어떻게 보면 이 액션 태그의 핵심이라고도 할 수 있는 beans는 추후에 다른 예제와 함께 포스팅할 예정이다.

 

 

 

끝!

반응형

'WEB > DynamicWeb' 카테고리의 다른 글

[JSP] 세션 활용 예제 <로그인>  (0) 2021.04.23
[JSP] 쿠키와 세션  (0) 2021.04.23
[JSP] JSP -> JSP 로 데이터를 전달하는 다양한 방법  (0) 2021.04.21
[JSP] Application의 상세 정보  (0) 2021.04.21
[JSP] forward 활용  (0) 2021.04.21
Comments