[JSP] 액션태그
안녕하세요. 이번 글은 JSP의 액션태그에 대한 설명입니다.
- 액션태그 (Action Tag)
- 페이지와 페이지 사이를 제어 및 특정 페이지 포함시키는 역할 담당
액션태그 | 설명 |
<jsp:include> | 다른 페이지를 현재 페이지에 포함시킬 때 사용 |
<jsp:forward> | 페이지 사이의 이동 제어 |
<jsp:plug-in> | 브라우저에서 Java Applet를 실행할 때 사용 |
<jsp:useBean> | Java의 Beans를 JSP에서 사용 |
<jsp:setProperty> | 프로퍼티의 값을 설정할 때 사용 |
<jsp:getProperty> | 프로퍼티의 값을 얻어낼 때 사용 |
- <jsp:UseBean>
- 별도의 객체 선언 및 생성없이 자바 클래스 파일을 사용할 수 있는 액션태그
package Testing;
public class TestBeans {
private String id;
private String name;
public TestBeans() {
super();
// TODO Auto-generated constructor stub
}
public TestBeans(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<jsp:useBean id="obj" class="Testing.TestBeans"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
obj.setName("Untited_Blue");
%>
<h2><%=obj.getName() %></h2>
</body>
</html>
상단의 두 개의 코드가 있는데 첫 번째는 Beans라는 자바 클래스 파일이며 두 번째는 UseBean라는 액션태그를 활용한 JSP 파일이다. 다음과 같이 별도로 TestBeans obj = new TestBeans();와 import Testing.TestBeans; 라는 코드를 입력하지 않아도 <jsp:UseBeans id="obj" class="Testing.TestBeans"/> 라는 액션태그만으로도 클래스 파일에 있는 필드와 메서드를 활용할 수 있다는 점을 확인할 수 있다.
- <jsp: forward>
- JSP 페이지에서 다른 페이지로 넘길 때의 권한을 다루는 액션태그
- ForwardTest001.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="ForwardTest002.jsp" method="post">
ID : <input type="text" name="id">
NAME : <input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
- ForwardTest002.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:forward page="ForwardTest003.jsp">
<jsp:param value="Mens" name="gender"/>
</jsp:forward>
</body>
</html>
- ForwardTest003.jsp
<%@ 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>
<h2>Result</h2>
ID : <%=request.getParameter("id") %> <br>
NAME : <%=request.getParameter("name") %> <br>
GENDER : <%=request.getParameter("gender") %>
</body>
</html>
상단의 코드가 작동되는 순서부터 설명하면 먼저 ForwardTest001.jsp에서 폼 태그를 통해 양식에 대한 정보를 입력한 후 제출 버튼을 눌러서 action 속성에 지정해둔 경로로 정보를 전송한다. 이후 ForwardTest002.jsp를 거친 후 해당 파일에 있는 forward 액션태그를 기반으로 ForwardTest003.jsp로 입력한 양식에 대한 결과값을 확인할 수 있다.
다음과 같이 forward 액션태그를 통해서 jsp 파일들의 이동 로직을 제어할 수 있음을 확인할 수 있다. 추가로 param 액션태그가 있는 것을 확인할 수 있는데 이는 단독으로 사용할 수 없으며 페이지로 이동하면서 추가적인 정보를 함께 전송시킬 목적으로 사용한다. 또한 request.setCharacterEncoding("UTF-8")은 문자 코드를 설정하는 역할을 담당하고 있다.
- <jsp:include>
- 하나의 JSP페이지에 또 다른 JSP페이지를 함께 표시 내지 포함하기 위한 액션태그
- includeTest001.jsp
<%@ 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>
<h2>누구의 블로그일까??</h2>
<jsp:include page="includeTest002.jsp">
<jsp:param value="Untitled_Blue" name="name"/>
</jsp:include>
</body>
</html>
- includeTest002.jsp
<%@ 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>
<h2 style="color: hotpink"><%=request.getParameter("name") %></h2>
</body>
</html>
상단의 2개의 코드를 통해서 하나의 페이지 안에 또 다른 페이지를 표시하고 연결하는 방식으로 상호작용하는 것이 가능하다는 점을 확인할 수 있다.
- <jsp:setProperty>, <jsp:getProperty>
- JAVA 파일 내 DTO 또는 VO에 대한 객체 선언 및 생성을 대체하는 액션태그
- PropertyTest001.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="PropertyTest002.jsp" method="post">
ID : <input type="text" name="id">
NAME : <input type="text" name="name">
<input type="submit">
</form>
</body>
</html>
- PropertyTest002.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<jsp:useBean id="obj" class="Testing.TestBeans"></jsp:useBean>
<jsp:setProperty property="*" name="obj"/>
<title>Insert title here</title>
</head>
<body>
<h2>Result</h2>
ID : <jsp:getProperty property="id" name="obj"/> <br>
NAME : <jsp:getProperty property="name" name="obj"/><br>
</body>
</html>
먼저 코드는 상단의 forward 액션태그 파일에서 거의 그대로 가져왔다. 하지만 제출한 결과값을 확인한다는 점에서 같은 결과 다른 방법인 점을 확인할 수 있다. 기존에는 <%=obj.getName()%>을 사용했으나 <jsp:Usebean> 액션태그를 사용하는 것을 바탕으로 <jsp:setProperty>, <jsp:getProperty>를 값을 설정 및 가져오는 작업을 하는 동시에 설정값에 대한 결과값을 조회할 수 있다는 점을 확인할 수 있다.
다음 글은 자바빈에 대한 설명입니다. 감사합니다.