본문 바로가기
WORKS/Java + JSP + Spring

[JSP] JSP 액션태그 : useBean, setProperty, getPropety / JavaBeans 값 저장 및 추출 / jsp action tag

by Jelly 젤리 2022. 2. 18.

이번에는 JSP 액션태그 useBean, setProperty, getProperty를 활용하여 데이터를 저장하고 추출해오는 과정을 알아보자.


우선 Beans라는걸 알아보자.

  • Java Beans (IDE에서 대부분 사용, 컴포넌트 형태로 제작된 자바 모듈)
  • JSP Beans (JSP와의 연동을 위해 만들어짐, Bean 액션을 통해 JSP에서 손쉽게 연동, DB 연동 및 뷰 데이터 교환에 사용)
  • Enterprise Java Beans (Java2 Enterprise Edition에서의 컴포넌트, 분산환경 고려, 기업형 앱 개발에서 비즈니스 로직 및 데이터 처리를 담당)

이 중 오늘 가장 밀접한 것은 JSP Beans.

웹서버에서 DB와 연동하는 방식에서 beans가 이용되는데 아래 두 모델이 있다.

모델1에서는 DB와 Beans가 직접적으로 접근이 됨

모델2에서는 DB와 Beans 사이에 DAO라는 것을 통해 접근함


Beans (자바의 클래스이다!)

- 구성: 멤버변수, getter&setters 메서드

특정 기능을 수행하는 별도의 메소드를 가질 수 있다. (모델 1에서는 자주쓸 수 있긴 하나 모델2는 잘 안씀)

JSP 모델 2에서는 뷰 컴포넌트로만 활용이 권장된다. (비즈니스 로직으로는 X)

 

- Beans의 멤버변수와 DB테이블의 컬럼 이름이 매칭된다.

(Beans 액션태그에서는 한 줄만 써주면 수개의 데이터들을 한번에 자동 매칭 시켜주는 기능이 있는데,

이 때 멤버변수와 DB테이블의 컬럼 이름이 매칭되지 않을 경우 자동매칭이 되지 않는다. 꼭 매칭시켜주자!)

 

- 멤버변수의 경우 클래스 외부에서의 접근을 막기 위해 private으로 선언해준다.

 

- 멤버변수 이름, HTML form의 name값, DB테이블의 컬럼명을 일치시켜준다


 

<액션태그 예시>

jsp:useBean

id: 빈즈 클래스 인스턴스명으로 사용할 멤버변수 (MyBean myBean = new MyBean(); 에서 myBean. 즉 내가 부르고 싶은 이름)

scope: 빈즈 클래스 범위 (page, request, session, application 등이 온다.)

class: 빈즈 클래스 클래스명(패키지가 있다면 경로를 같이 써준다)

 

+참고

Scope의 범위

page: 현재 JSP 페이지 내

request: request가 최종 포워딩되는 페이지까지

session: 세션을 유지할 때까지

application: 웹 어플리케이션이 종료될 때까지

<jsp:useBean id="myBean" scope="request" class="MyBean"/>

자바 코드로 쓴다면 이렇게 된다.

MyBean mybean = (MyBean)request.getAttribute("mybean");
if(mybean == null){
	mybean = new MyBean();
    request.setAttribute("mybean", mybean);
}

jsp:setProperty

name: id와 동일. 매개변수

property: 필드이름(예를들어 내가 HTML form태그에 쓴 name값과 동일하게.)

필드 이름을 하나씩 써서 원하는 값들만 하나하나 불러올 수도 있고

아까 위에서 말한 전체 자동매칭이 필요하다면 필드 이름 대신 *('모든 것'을 의미)를 써주어 전부 저장할 수 있다.

<jsp:setProperty name="mybean" property="userid"/>
<jsp:setProperty name="mybean" property="*"/>

자바 스크립트릿으로 쓴다면 다음과 같다.

<% mybean.setUserid(request.getParameter("username"));
   mybean.setPasswd(request.getParameter("userpasswd"); %>

jsp:getProperty

setProperty와 동일한 방식으로 써서 값을 가져온다.

그러나 다른 점은 getProperty의 경우 전체매칭이 되지 않으므로 하나씩 불러와서 사용해야 한다.

<jsp:getProperty name="mybean" property"username"/>

<예제 코드>

 

BeanTest.java 클래스

BeanTest.jsp 

위 예제에서는 (주석처리된)스크립트릿으로 했던 동작들을 그대로 jsp 액션태그로 해도 동일한 결과가 나온다.

이 예제에서는 java 클래스에서 name 을 Jelly로 설정해 준 것을 Belly로 바꾸는 동작과

그 바꾼 값을 가져오는 동작을 해보았다.

 

먼저 java 클래스를 만들고 jsp에서 주석처리된 부분을 해 본 뒤

그 부분을 주석처리해주고 jsp액션태그를 활용해서 연습해보자.

 


방문해주셔서 감사합니다.

728x90

댓글