자바빈즈는 jsp에서 사용하며 특정한 작업인 비즈니스 로직을 독립적으로 수행하는 하나의 프로그램 단위입니다.
내부에 setter()와 getter()를 포함하고 있으며, 데이터를 저장하고 읽어오는 기능을 수행하기 위해 사용됩니다.
자바빈 파일은 setter()와 getter()를 포함한 다음과 같은 모습을 가지고 있습니다.
package jspbook.ch02;
public class CalcBean {
private int num1 = 0, num2 = 0;
private String operator="";
private int result;
public void calculate() {
if(operator.equals("+")) {
result = num1 + num2;
}else if (operator.equals("-")) {
result = num1 - num2;
}else if (operator.equals("*")) {
result = num1 * num2;
}else if(operator.equals("/")) {
result = num1 / num2;
}
}
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getNum2() {
return num2;
}
public void setNum2(int num2) {
this.num2 = num2;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
}
자바빈은 클래스 파일이기 때문에 Java resources의 src폴더에 집어넣어야 합니다.
자바빈과 관련된 액션태그는 3가지가 있습니다.
1. useBean
Bean클래스를 찾거나 인스턴스화 하는데 사용합니다.
기본적인 형식은 다음과 같습니다.
<jsp:useBean id="빈 이름" class="자바빈 파일의 패키지.클래스명" scope="유효범위"/>
useBean액션태그는 다음의 코드와 같은 의미를 가집니다.
클래스 빈 이름 = new 클래스();
즉, 객체를 생성하는것과 같은 기능을 한다고 생각할 수 있습니다.
id : JSP 페이지에서 자바 빈 객체에 접근할 때 사용하는 이름이며, 자바 객체명과 같은 역할을 합니다.
class : 자바빈 파일의 패키지와 클래스명까지 포함합니다.
scope : useBean을 이용해서 만든 자바 빈 객체의 범위를 지정해줍니다.
(page는 생성된 페이지 내부, request는 요청된 페이지 내부, session은 웹 브라우저의 생명주기, application은 어플리케이션의 생명주기이며 기본값은 page입니다.)
2. setProperty
setProperty 액션태그는 자바빈 파일의 setter메서드를 사용하기 위해 사용됩니다. 즉, 데이터의 값을 저장할때 이용됩니다.
기본적인 형식은 다음과 같습니다.
<jsp:setProperty name="빈 이름" property="필드명" value="값" />
<jsp:setProperty name="빈 이름" property="*" value="값" />
다음의 코드와 같은 의미를 가집니다.
<% 빈 이름.set필드명(request.getParameter("값")); %>
name : 프로퍼티 값을 변경할 자바 빈 객체의 이름입니다. jsp:useBean 액션태그에서 만들었던 id 속성의 값과 같아야 합니다.
property : 값을 지정할 프로퍼티의 이름을 지정합니다.
value : property에 지정할 값을 입력합니다.
setProperty액션태그는 setter메서드의 역할을 하기 때문에 useBean 액션태그로 생성한 자바 빈 객체의 프로퍼티(필드)에 값을 지정해 주는 역할을 합니다.
property속성에 *을 넣으면 모든 요청 파라미터가 자바 빈즈 프로퍼티의 setter()메소드에 전달됩니다.
3. getProperty
자바 빈 객체에서 지정된 프로퍼티 값을 읽어오기 위해 사용합니다.
기본적인 형식은 다음과 같습니다.
<jsp:getProperty name="빈이름" property="필드명" />
위의 코드는 다음의 코드와 같은 의미를 가집니다.
<% 자바 빈.get필드명(); %>
name : 프로퍼티 값을 변경할 자바 빈 객체의 이름입니다. jsp:useBean 액션태그에서 만들었던 id 속성의 값과 같아야 합니다.
property : 값을 불러올 프로퍼티를 지정합니다.
<%@ 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:useBean id="calc" class="jspbook.ch02.CalcBean" />
<jsp:setProperty name="calc" property="num1" value="10" />
<jsp:setProperty name="calc" property="num2" value="5" />
<jsp:setProperty name="calc" property="operator" value="*" />
<%calc.calculate();%>
<p>계산 결과 : <%out.println(calc.getResult());%></p>
<p>계산 결과 : <jsp:getProperty property="result" name="calc"/> </p>
</body>
</html>
useBean 액션태그를 이용하여 calc라는 객체를 CalcBean클래스를 이용해 생성하였습니다.
setProperty 액션태그를 이용하여 calc 객체의 setNum1() 메소드를 이용해서 value 10을 삽입하였습니다.
setProperty 액션태그를 이용하여 calc 객체의 setNum2() 메소드를 이용해서 value 5를 삽입하였습니다.
setProperty 액션태그를 이용하여 calc 객체의 setOperator() 메소드를 이용해서 value에 "*"를 삽입하였습니다.
스크립트릿에서 calc객체를 이용해 calculate() 메소드를 실행해줍니다.
마지막으로 out내장객체의 print메소드와 getProperty 액션태그를 이용하여 calc객체의 result멤버 변수를 출력합니다.

'[WEB]' 카테고리의 다른 글
[JSP] request 내장 객체 (0) | 2023.02.11 |
---|---|
[HTML & CSS] viewport (0) | 2022.10.11 |
[Java] 자바 참조변수 (0) | 2022.10.06 |
[Java] 자바 Optional (0) | 2022.10.01 |
[Java] 자바 static의 의미와 사용방법 (0) | 2022.09.29 |