삶 가운데 남긴 기록 AACII.TISTORY.COM
표준 액션 태그 jsp java beans 본문
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> 태그를 사용하기 때문입니다.
그런데 아무 클래스나 다 빈즈가 되는 것이 아니라 지켜야할 규약이 있습니다.
- 패키지화: 기본 패키지(WEB-INF/classes)에 있는 클래스는 인식이 안되고 새로 생성된 패키지에 있어야 합니다.
- 기본 생성자: 기본 생성자가 반드시 있어야 <jsp:useBean> 을 사용할 수 있습니다.
- private: 멤버 변수는 private로 선언해서 외부에서 접근 하지 못하게 합니다.
- getter/setter: 각 멤버 변수에 대해서 getter/setter 메소드가 필요하며 이 getter와 setter는 public으로 선언해야 합니다.
- 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>
'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 |