JSP setProperty 액션이란?
JSP에서 setProperty 액션은 자바빈(JavaBean)의 속성값을 설정하는 역할을 합니다. 단, 이 액션을 사용하기 전에 해당 빈(Bean)이 반드시 먼저 정의되어 있어야 합니다. setProperty 액션에는 크게 두 가지 사용 방식이 있습니다.
방법 1: jsp:useBean 태그 외부에 배치
jsp:setProperty를 jsp:useBean 요소 뒤에 위치시키되, 그 외부에 두는 방식입니다.
<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
이 경우에는 새로운 빈이 생성되었는지, 아니면 기존 빈이 재사용되었는지와 관계없이 jsp:setProperty가 항상 실행됩니다.
방법 2: jsp:useBean 태그 본문 내부에 배치
두 번째 방식은 jsp:useBean 요소의 본문(body) 안에 jsp:setProperty를 포함시키는 것입니다.
<jsp:useBean id = "myName" ... >
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>
반면 이 경우에는 새로운 객체가 실제로 인스턴스화되었을 때만 실행되고, 기존 객체를 찾아 재사용한 경우에는 실행되지 않습니다.
setProperty 액션의 주요 속성
다음 표는 setProperty 액션과 함께 사용되는 속성들을 정리한 것입니다.
| 번호 | 속성 및 설명 |
|---|---|
| 1 | name 속성을 설정할 대상 빈을 지정합니다. 해당 빈은 반드시 사전에 정의되어 있어야 합니다. |
| 2 | property 설정하고자 하는 속성을 나타냅니다. 값으로 "*"를 지정하면, 빈의 속성 이름과 일치하는 모든 요청 파라미터가 자동으로 해당 setter 메서드에 전달됩니다. |
| 3 | value 지정된 속성에 할당할 값입니다. 만약 파라미터 값이 null이거나 파라미터 자체가 존재하지 않으면, setProperty 액션은 무시됩니다. |
| 4 | param 속성이 값을 받아올 요청 파라미터의 이름을 지정합니다. value와 param은 동시에 사용할 수 없지만, 둘 다 생략하는 것은 가능합니다. |
실습 예제
먼저 예제에서 사용할 테스트 빈(TestBean)을 정의해 보겠습니다.
/* 파일명: TestBean.java */
package action;
public class TestBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
위 코드를 컴파일하여 생성된 TestBean.class 파일을 C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action 폴더에 복사하고, CLASSPATH 환경 변수도 이 폴더 경로로 설정해 주세요.
이제 main.jsp 파일에 아래 코드를 작성합니다. 이 JSP 페이지는 빈을 로드한 후 간단한 문자열 파라미터를 설정(set)하고 가져오기(get)합니다.
<html>
<head>
<title>Using JavaBeans in JSP</title>
</head>
<body>
<center>
<h2>Using JavaBeans in JSP</h2>
<jsp:useBean id = "test" class = "action.TestBean" />
<jsp:setProperty name = "test" property = "message" value = "Hello JSP..." />
<p>Got message....</p>
<jsp:getProperty name = "test" property = "message" />
</center>
</body>
</html>
main.jsp에 접속하면 다음과 같은 결과가 화면에 출력됩니다.
Using JavaBeans in JSP
Got message....
Hello JSP...