JSP&Servlet

[JSP] 액션태그

Untitled_Blue 2023. 10. 8. 17:19
반응형

안녕하세요. 이번 글은 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>를 값을 설정 및 가져오는 작업을 하는 동시에 설정값에 대한 결과값을 조회할 수 있다는 점을 확인할 수 있다.

 

다음 글은 자바빈에 대한 설명입니다. 감사합니다.

반응형