Recent Posts
Recent Comments
Link
11-17 00:00
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

표준 액션 태그 jsp java beans 본문

DEV&OPS/Java

표준 액션 태그 jsp java beans

ALEPH.GEM 2022. 6. 22. 14:27

jsp에서 커스텀 태그를 사용할 수도 있지만 표준 액션 태그는 jsp 컨테이너에서 기본적으로 제공하는 태그입니다.

 

<jsp:forward>

서블릿의 RequestDispatcher 객체의 forward() 기능을 수행하는 태그입니다.

<%@ 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>
<h3>example14.jsp</h3>
<!-- ?p=example2.jsp 으로 테스트 -->
<%
	String p = request.getParameter("p");
%>
<jsp:forward page="<%=p %>" />
</body>
</html>

request parameter인 ?p=example2.jsp 을 받아 example14.jps에서 example2.jsp으로 forward 합니다.

?p=test.jsp 으로 실행하면 test.jsp로 forward 하게 됩니다.

 

<jsp:include>

서블릿에서 RequestDispatcher 객체의 include() 메소드 기능을 실행합니다.

<%@ include file=" " %> 지시자 태그와 다른점은 지시자 태그는 컴파일 시 같이 포함되어 컴파일 되는 반면에 표준 액션태그인 <jsp:include>는 실행시 포함되므로 동적으로 include 시킬 수 있습니다.

사용법은 아래와 같습니다.

<%@ 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>
<h3> include 전</h3>
<jsp:include page="test.jsp" />
<h3> include 후</h3>
</body>
</html>

 

JSP JAVA BEANS

자바 빈즈는 JSP표준 액션태그로 접근할 수 있는 자바 클래스 입니다.

이 자바 클래스에는 멤버 변수에 대한 getter와 setter 메소드가 정의되어 있어야 표준 액션태그로 접근할 수 있습니다.

<jsp:useBean> <jsp:setProperty> <jsp:getProperty> 태그를 사용하기 때문입니다.

그런데 아무 클래스나 다 빈즈가 되는 것이 아니라 지켜야할 규약이 있습니다.

  1. 패키지화: 기본 패키지(WEB-INF/classes)에 있는 클래스는 인식이 안되고 새로 생성된 패키지에 있어야 합니다.
  2. 기본 생성자: 기본 생성자가 반드시 있어야 <jsp:useBean> 을 사용할 수 있습니다. 
  3. private: 멤버 변수는 private로 선언해서 외부에서 접근 하지 못하게 합니다.
  4. getter/setter: 각 멤버 변수에 대해서 getter/setter 메소드가 필요하며 이 getter와 setter는 public으로 선언해야 합니다.
  5. Serializable(필수 아님): java.io.Serializable 클래스를 상속해서 직렬화가 가능하게 합니다.

예제를 위해 jsp/src 경로에 net.aacii.beans 패키지를 생성합니다.

HelloBean.java

package net.aacii.beans;

public class HelloBean {
	//멤버 변수는 private
	private String name;
	private String number;
	
	//기본 생성자
	public HelloBean() {
		this.name="이름이 없습니다.";
		this.number="번호가 없습니다.";
	}

	//getter()/setter()
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}
	
	
}

 

<jsp:useBean class="HelloBean" id="hello"> 태그는 HelloBean hello = new HelloBean(); 과 같은 뜻입니다.

<jsp:getProperty property="name" name="hello"> 태그는 hello.getName(); 과 같은 뜻입니다.

<jsp:setProperty property="name" name="hello" value="korea"> 태그는 hello.setName("korea"); 과 같은 뜻입니다.

 

example17.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JAVA BEANS</title>
</head>
<body>
	<!-- 빈 객체의 인스턴스를 hello 라는 이름으로 사용 -->
	<jsp:useBean class="net.aacii.beans.HelloBean" id="hello" />
	
	<jsp:getProperty property="name" name="hello" /> <br>
	<jsp:getProperty property="number" name="hello" /> <br>
	
	<jsp:setProperty property="name" name="hello" value="korea" />
	<jsp:setProperty property="number" name="hello" value="1234" />
	
	<hr>
	<jsp:getProperty property="name" name="hello" /> <br>
	<jsp:getProperty property="number" name="hello" /> <br>
	
</body>
</html>

example17-1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JAVA BEANS</title>
</head>
<body>
	<!-- 빈 객체의 인스턴스를 hello 라는 이름으로 사용 -->
	<jsp:useBean class="net.aacii.beans.HelloBean" id="hello" />
	
	<jsp:getProperty property="name" name="hello" /> <br>
	<jsp:getProperty property="number" name="hello" /> <br>
	
	<jsp:setProperty property="name" name="hello" param="a" />
	<jsp:setProperty property="number" name="hello" param="b" />
		
	<hr>
	<jsp:getProperty property="name" name="hello" /> <br>
	<jsp:getProperty property="number" name="hello" /> <br>
	
</body>
</html>

 

 

example17-2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JAVA BEANS</title>
</head>
<body>
	<!-- 빈 객체의 인스턴스를 hello 라는 이름으로 사용 -->
	<jsp:useBean class="net.aacii.beans.HelloBean" id="hello" />
	
	<jsp:getProperty property="name" name="hello" /> <br>
	<jsp:getProperty property="number" name="hello" /> <br>
	
	<jsp:setProperty property="*" name="hello" />
		
	<hr>
	<jsp:getProperty property="name" name="hello" /> <br>
	<jsp:getProperty property="number" name="hello" /> <br>
	
</body>
</html>

 

 

 

 

 

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

EL (Expression Language)  (0) 2022.07.01
JDBC 프로그래밍  (0) 2022.06.30
JSP 내장 객체  (0) 2022.06.21
JSP  (0) 2022.06.20
web.xml 서블릿 오류 처리  (0) 2022.06.20