본문 바로가기
Back_end/JSP

JSP - 액션 태그

by hyeon1016 2024. 10. 28.

액션 태그

어떤 행동을 하도록 명령하는 태그로 <jsp: .../>의 형식으로 작성된다.

 

액션 태그는 페이지간 전환, 페이지를 삽입, 자바빈즈(객체 생성)등 다양한 기능을 지원한다.

 

 

forward 액션 태그

<jsp:forward page = "상대경로/절대경로" />
<jsp:forward page = "상대경로/절대경로"></jsp:forward> ====> 권장

 

페이지간 이동하는 데 사용되는 태그

 

WHY?

- 클라이언트의 요청을 서버측으로 전달하기 위해 사용한다.

 

사용 예시

더보기
더보기

요청

<a href="4_1">요청</a>

 

/4_1로 요청

 

컨트롤러

package chapter04;

import java.io.IOException;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet("/4_1")
public class exam04_1 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		RequestDispatcher ds = req.getRequestDispatcher("chapter4/exam4_1_first.jsp");
		ds.forward(req, resp);
	}
}

 

 

/4_1 경로로 들어오는 GET 요청 처리, exam4_1_first.jsp로 이동 

 

 

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>
	<h2>forward의 액션태그</h2>
	<jsp:forward page = "exam4_1_second.jsp"></jsp:forward>
</body>
</html>

 

<jsp:forward>태그를 사용해 exam4_1_second.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>
	<p>오늘의 날짜 및 시간</p>
	<%=new java.util.Date() %>
</body>
</html>

 

현재 날짜와 시간 출력

 

 

include 액션 태그

<jsp:include page="상대경로/절대경로" />
<jsp:include page="상대경로/절대경로"></jsp:include>

 

include 디렉티브 태그처럼 JSP 페이지에 외부 파일을 삽입하는 태그다.

request객체param 액션 태그파라미터를 전달할 수 있다.

*실행 결과값을 가져온다.

 

WHY?

- 파라미터 전달

- 실행결과를 가져와서 페이지를 동적으로 사용하기 위함

 

 

사용 예시

---main.jsp---
<jsp:include page="content.jsp">
  <jsp:param name="username" value="Alice" />
</jsp:include>

---content.jsp---
<p> 반가워 <%= request.getParameter("username")%>

---main.jsp---
출력 : 반가워 Alice

 

1. content.jsp를 main.jsp에 포함시킨다.

2. content.jsp에 파라미터로 username을 보낸다.

3. content.jsp에서 username을 받아 출력한다.

4. 결과적으로 "반가워 Alice"가 출력된다.

 

 

include 액션 태그와 include 디렉티브 태그의 차이점

include 디렉티브 태그
정적 파일에 포함된다.
- 내용을 변경하면 서버를 다시 시작해야 반영된다.

include 액션 태그
동적 파일에 포함된다.
- 포함된 파일이 변경되면 즉시 반영된다.
- 요청할 때 마다 최신 내용을 반영한다.(동적 처리)

 

 

param 액션 태그

<jsp:forward page ="파일경로">
    <jsp:param name ="매개변수명" value="값" />
</jsp:forward>

 

현재 JSP 페이지에서 다른 페이지에 정보를 전달하는 태그로 단독 사용이 불가능하다.

<jsp:forward> 태그나 <jsp:include> 태그의 내부에서 사용한다.

 

사용 예시

---main.jsp---
<jsp:forward page="first.jsp">
	<jsp:param name="id" value="pizza">
</jsp:forward>

---first.jsp---
<p> 아이디 : <%=request.getParameter("id")%>

 

1. first.jsp로 이동하면서 파라미터로 id를 보낸다.

2. first.jsp에서 id를 받아 출력한다.

3. "아이디 : pizza"가 출력된다.

 

 

자바빈즈 액션 태그

JSP에서 객체를 생성하고 사용할 수 있게 해주는 태그

 

useBean

JSP 페이지에서 객체를 생성하는 태그

<jsp:useBean id ="참조변수명" class="사용할 클래스 패키지 포함" scope="범위" />

 

속성

id : JAVA의 참조변수처럼 사용된다.

class : 생성할 객체의 클래스 경로를 지정한다.

scope : 자바 빈즈가 저장되는 영역을 설정하는 속성이다.

- page : 현재 페이지
- request : 1회 이동
- session : 만드는 시점부터 소멸하기 까지 
- application : 서버 소멸시점 까지

 

 

SetProperty

JSP 페이지에서 useBean으로 생성된 객체의 변수를 설정하는 태그

<jsp:setProperty name="참조변수명" property="변수명" value="값" />

 

속성

name : useBean로 생성된 객체의 참조변수명(useBean의 id속성)

property : 클래스 안에 있는 변수명, ( * )을 사용하면 클래스의 모든 변수를 설정할 수 있음
value : 해당 변수에 설정할 값(항상 동일한 값 설정 / 정적)
param : 해당 변수에 설정할 값으로 파라미터를 전달한다.(다른 값을 전달함 / 동적)

 

* value와 param 속성은 같이 사용할 수 없다.

 

 

getProperty

JSP 페이지에서 useBean으로 생성된 객체의 변수 값을 가져와 출력하는 태그

<jsp:getProperty name="참조변수명" property="변수명" />

 

속성

name : useBean로 생성된 객체의 참조변수명(useBean의 id속성)

property : 클래스에서 가져올 변수명

 

 

사용 예시

---------JAVA----------
public class useBean_test {
	public int a;
	public int b;
}

----------JSP-----------
<jsp:useBean id="test" class="useBean_test" />
<jsp:setProperty name="test" property="a" value="100" />
<jsp:setProperty name="test" property="b" value="200" />

<p>a의 값 = <jsp:getProperty name="test" property="a" />
<p>b의 값 = <%=test.b%>

 

1. useBean_test 클래스에 int타입 a, b변수를 선언한다.

2. JSP 페이지에서 useBean 태그를 사용해 useBean_test 클래스를 객체 생성한다.

3. setProperty 태그를 사용해 a, b 변수의 값을 설정한다.

4. getProperty 태그를 사용해 a 변수의 값을 출력하고, 표현문을 사용해 b의 값도 출력한다.

'Back_end > JSP' 카테고리의 다른 글

JSP - 폼(FORM)  (1) 2024.10.28
JSP - 내장 객체  (1) 2024.10.28
JSP - 디렉티브 태그  (1) 2024.10.10
JSP - 스크립트 태그  (0) 2024.10.10
JSP - 개발 환경 구축  (0) 2024.10.08