☕ Java

JSP와 자바빈(JavaBean)

loose 2022. 2. 15. 10:43
반응형

자바빈

자바빈이란 DTO와 같은 자바 클래스를 이용해서 JSP 코드가 아닌 useBean을 사용하여 가져오는 기술을 말한다.


1. useBean의 예시

우측에 useBean을 사용하여 JSP로 데이터를 뿌려주고 있다.

2. useBean을 JSP 코드로 바꾸면?

<jsp:useBean id="member" class="test.MemberBean"/>
 
 
위의 액션태그를 코드로 바꾸면 아래와 같다.
 
 
MemberBean member = (MemberBean)request.getAttribute("member");
if(member == null){
    member = new MemberBean();
    request.setAttribute("member", member)
}

3. JSP가 아닌 방법으로 꺼내 쓰는 방법

<jsp:useBean id="인스턴스명" class="클래스이름" scope="범위"/>
<jsp:setProperty name="자바빈" property="프로퍼티이름" value="값" />
<jsp:getProperty name="자바빈" property="프로퍼티이름" />

 

사용하는 이유와 장점

 

html 코드는 여러 개발자들이 본다.

request.getParameter로 값을 들고오는 경우 자바 개발자가 아니면 해당 명령어를 모른다는 단점이 있다.

<jsp:useBean>은 태그 형식인 html 문법과 비슷해서 프론트 개발자 입장에선 이해하기 쉽다.

즉, 프론트와 백의 관심사를 분리시킬 수 있다는 장점이 있다.

또 <jsp:useBean>은 application, session, request, page 보관소에 저장된 자바 객체를 꺼내고 저장이 가능하다.

 

JSTL도 비슷하지 않나?

 

프론트와 백을 분리 시키기 위한 기술로는 JSTL도 일종의 분리 기술이다. 

 

프론트엔드 입장에선 자바빈을 이용해서 데이터를 가져오고 JSTL로 데이터를 뿌려주면 좀 더 직관적으로 사용할 수 있다. 오로지 자바빈만 사용한다면 아래처럼 써야하기 때문이다.

<jsp:getProperty name="자바빈" property="프로퍼티이름" />

단점

1. JSP든 JSTL이든 자바 파일로 다시 컴파일 하게 되는데, JSP는 실제 자바코드라서 바로 번역하면 되지만 JSTL은 다시 자바 코드로 변경되야하는 것 때문에 메모리 과부하 문제가 존재한다. 또 JSTL에서는 JSP에서 사용하는 자바 문법보다 다양하지 않다

 

2. HTML 프로그래머에겐 익숙하지만 Java 프로그래머에겐 배우기도 쓰기도 귀찮다.

 

3. 결과적으로 SI 처럼 모든걸 다 개발해야하는 상황이면 구애받지 않고 JSP를 쓰는게 낫고 대규모이고 디자이너가 1명 이상일 경우 해당 디자이너에게 맡기고 Java bean만 던지는 방식으로 분리 시켜서 만들면 좋다.

 

 

 

 

 

728x90