티스토리 뷰
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 |
- AsyncStorage
- react-native
- 맛집
- 인천 구월동 맛집
- 인천 구월동 이탈리안 맛집
- react
- redux
- Promise
- 정보보안기사 #실기 #정리
- javascript
- 파니노구스토
- Async
- await
- 이탈리안 레스토랑
- redux-thunk
- Total
- Today
- Yesterday