액션태그가 필요한 이유는 jsp 페이지에서 동일한 내용이라도 자바 코드를 기술하기 보다는 태그를 기술하는 것이 지저분하지 않고 깔끔하게 코딩할 수 있어 가독성 높은 소스코드를 작성할 수 있다. 또한 코드 양을 대폭 줄일 수 있다.

 

※ JSP 액션 태그

태그의 종류 설명
<jsp:forward> 다른 사이트로 이동할 때 사용. 페이지의 흐름을 제어할 때 사용
<jsp:include> 정적 혹은 동적인 자원을 현재 페이지의 내용에 포함시킨다. 페이지를 모듈화할 때 사용
<jsp:param> <jsp:forward>, <jsp:include>, <jsp:plugin>과 같이 사용되어 파라미터를 추가할 때 사용
<jsp:useBean> 빈(Bean)을 생성하고 사용하기 위한 환경을 정의하는 액션 태그
<jsp:setProperty> 액션은 빈에서 속성 값을 할당
<jsp:getProperty> 액션은 빈에서 속성 값을 얻어올 때 사용

 

액션 태그는 XML 문법을 따른다. 즉 시작 태그와 함께 반드시 종료 태그를 포함해야 한다.

 

• 액션 태그의 기본 형식

<jsp: . . . 속성="값"> 내용 </jsp: . . .>

JSP 액션 태그는 XML 형식을 따르기 때문에 시작 태그가 있으면 반드시 끝나는 태그가 있어야 하며 접두어를 붙여서 시작해야 한다.

 

만약 액션 태그에 속성값만 지정하고 내용이 없을 경우에는 마지막 부분을 "/>"로 마무리한다.

 

• 내용이 없는 액션 태그의 형식

<jsp: . . . 속성="값" />

 


※ <jsp:forward> 액션 태그

 

현재 JSP 페이지에서 URL로 지정한 특정 페이지로 넘어갈 때 사용하는 태그

 

• <jsp:forward> 액션 태그의 형식

<jsp:forward page="Main.jsp" />

 

<jsp:forward> 액션 태그는 포워드 방식으로 페이지를 이동하는 것으로 기존의 request 연결을 유지하면서 서버상의 url로 request 정보를 전달한다.

 

 

• <jsp:forward>예제 : 브라우저로 로드할 파일. 배경색을 빨간색으로 지정(08_red.jsp)

<%@ 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 bgcolor="red">
	이 파일은 red.jsp입니다. <br>
	브라우저에 배경색이 빨간색으로 나타날까요?<br>
	노란색으로 나타날까요?<hr>
	forward 액션 태그가 실행되면 이 페이지의 내용은 출력되지 않습니다. <br>

	<jsp:forward page="08_yellow.jsp" />
</body>
</html>

 

• <jsp:forward>예제 : red.jsp에 의해 요청되는 페이지이다. 배경색을 노란색으로 지정(08_yellow.jsp)

<%@ 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 bgcolor="yellow">
	<h3> [forward 액션 태그에 대한 예제]</h3>
	<hr>
	이 파일은 yellow.jsp입니다.
	<br>
	<hr>
	브라우저에 나타나는 URL과 전혀 상관없는 파일입니다.
</body>
</html>

08_red.jsp 페이지를 요청했는데 <jsp:forward> 태그가 08_yellow.jsp 파일로 제어의 흐름을 이동시킨다. 이는 <jsp:forward> 태그로 포워딩 했기 때문이다.

 


※ <jsp:param> 액션 태그

 

요청한 페이지로 정보를 전달할 때 사용하는 태그, 현재 페이지에서 요청한 페이지로 파라미터와 파라미터 값 형태로 정보를 넘겨준다.

<jsp:param> 태그는 단독으로는 사용 못하고 <jsp:include>나 <jsp:forward> 태그의 내부에 기술하여 사용한다.

 

• <jsp:param> 액션 태그의 형식

<jsp:param name="파라미터" value="파라미터값" />

 

• <jsp:param>예제 : 라디오 버튼으로 조건을 나누어 선택하는 폼 페이지(09_actionTagForm.jsp)

<%@ 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>
	<form action="09_actionTagTest.jsp">
		아이디 : <input type="text" name="userID"><br>
		암 &nbsp; 호 : <input type="password" name="userPwd"><br>
		
		<input type="radio" name="loginCheck" value="user" checked="checked"> 사용자
		<input type="radio" name="loginCheck" value="manager"> 관리자 <br>
		
		<input type="submit" value="로그인">
	</form>
</body>
</html>

 

• <jsp:param>예제 : 조건에 따라 이동할 페이지를 달리하는 페이지(09_actionTagTest.jsp)

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    
<%
	String userID=request.getParameter("userID");
	String userPwd=request.getParameter("userPwd");
	String loginCheck=request.getParameter("loginCheck");
	
	if(loginCheck.equals("user")){
%>
	<jsp:forward page="09_userMain.jsp">
		<jsp:param value='<%=URLEncoder.encode("사용자", "UTF-8")%>' name="userName"/>
	</jsp:forward>
<%
	}
	else
	{ 
%>
	<jsp:forward page="09_managerMain.jsp">
		<jsp:param value='<%=URLEncoder.encode("관리자", "UTF-8")%>' name="userName"/>
	</jsp:forward>
<%
	}
%>

 

• <jsp:param>예제 : 사용자 페이지(09_userMain.jsp)

<%@page import="java.net.URLDecoder"%>
<%@ 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 bgcolor="pink">
	<h3>사용자로 로그인 성공 </h3>
	<%=URLDecoder.decode(request.getParameter("userName"), "UTF-8")%>
	(<%=request.getParameter("userID")%>)님 환영합니다 .
</body>
</html>

 

• <jsp:param>예제 : 관리자 페이지(09_managerMain.jsp)

<%@page import="java.net.URLDecoder"%>
<%@ 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 bgcolor="yellow">
	<h3>관리자로 로그인 성공 </h3>
	<%=URLDecoder.decode(request.getParameter("userName"), "UTF-8")%>
	<%=request.getParameter("userID") %>님 환영합니다 .
</body>
</html>

 


※ <jsp:include> 액션 태그

 

현재 페이지에 다른 페이지의 내용을 동적으로 포함 시키고자 할 경우 사용하는 액션 태그

 

• <jsp:include> 액션 태그의 형식

<jsp:include page="urlSpec" flush="true or false" />

 

 

※ <jsp:include> 액션 태그와 <%@ include file='url'%> 동작원리의 차이점

 

• include 지시자 : 지정된 페이지가 현재 페이지에 포함되어서 하나로 합쳐진 상태에서 컴파일하여 실행되는 구조. 포함되는 페이지를 독립적인 형태가 아니고 페이지의 일부분으로 구성되므로 변수를 서로 공유해서 사용할 수 있다.

 

• <jsp:include> 액션 태그 : 컴파일할때 합쳐지지 않고 제어권이 지정한 페이지로 넘어갔다가 다시 되돌아온다. 서로 독립적으로 컴파일되고 실행할 때 독립적으로 실행되는 두 페이지가 서로 연락을 취하여 하나의 페이지인 것처럼 동작하기 때문에 변수를 서로 공유해서 사용할 수 없다. 그러므로 포함될 페이지가 독립적인 하나의 페이지여야 한다.

 

 

• <jsp:include>예제 : 화면 상단에 출력할 공통 페이지(10_header.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<hr>
<h4> 이부분은footer입니다.</h4>

 

• <jsp:include>예제 : 화면 하단에 출력할 공통 페이지(10_footer.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h3> 이부분은header입니다.</h3>
<hr>

 

• <jsp:include>예제 : 메인 페이지(10_main.jsp)

<%@ 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>
	<jsp:include page="10_header.jsp"/>
		메인 화면입니다. <br>
		<a href="10_sub.jsp">서브 페이지로 이동</a>
	<jsp:include page="10_footer.jsp"/>
</body>
</html>

 

• <jsp:include>예제 : 서브 페이지(10_sub.jsp)

<%@ 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>
	<jsp:include page="10_header.jsp"/>
		서브 화면입니다. <br>
		<a href="10_main.jsp">메인 페이지로 되돌아가기</a>
	<jsp:include page="10_footer.jsp"/>
</body>
</html>

+ Recent posts