본문 바로가기

Programming/JSP

<jsp:useBean>에 대해 간략한 문법설명

<jsp:useBean id="bean이름" class="javaBean class 이름" scope="범위" />
      id = jsp페이지에서 자바빈 객체에 접근할 때 사용할 이름을 명시
 class = 패키지 이름을 포함한 자바빈 클래스의 이름을 입력
scope = 자바빈 객체가 저장될 영역을 지정 => page, request, session, application 중 하나를 값으로 가짐
                                                               default는 page이다.

ex) 아래문장의 jsp소스는 밑의 java소스로 이해할 수 있다.
<jsp:userBean id="detail" class="com.hk.UserDetail" scope="request" />
======> UserDetail detail = (UserDetail)request.getAttribute("detail");
if(info == null){
    info = new UserDetail();
    request.setAttribute("detail", detail);
}
위 코드는 UserDetail클래스의 객체를 생성하여 이름이 detail인 변수에 할당,
그리고 request 기본 객체에 "detail" 키와 detail이란 값으로 저장한다.


<jsp:setProperty>
<jsp:setProperty name="자바빈" property="이름" value="값" />
<jsp:setProperty name="자바빈" property="이름" param="parameter id" />
    name = 프로퍼티의 값을 변경할 자바빈 객체의 이름, <jsp:useBean> 액션태그의 id속성에서 지정한 값을 사용한다.
property = 값을 지정할 프로퍼티의 이름
    value = 프로퍼티의 값, 표현식을 사용할 수 있다.
  param = value대신 쓸 수 있는데, 이때에는 parameter id에 저장된 값을 property의 값으로 지정한다.

<jsp:useBean id="detail" class="com.hk.UserDetail"/>
<jsp:setProperty name="detail" property="*" />
위 코드의 경우 모든 프로퍼티의 값들을 같은 이름을 가지고 있는 파라미터의 값으로 설정한다.
쓰임은 특정 Dto의 값들을 파라미터의 값들로 한번에 설정하려할 때 쓰이며,
이때 반드시 Dto의 name들과 파라미터의 name들은 반드시 동일해야한다.
위와같은 jsp소스를 java소스로 본다면 이렇게 표현할 수 있다.
detail.setId(request.getParameter("id"));
detail.setPassword(request.getParameter("password"));
detail.setEmail(request.getParameter("email"));