[펌글] jsp:useBean,jsp:setProperty,jsp:getProperty

By | 8월 28, 2008

=================  
Action Tag란  
=================  
1. 클라이언트 혹은 서버에게 어떤 행동을 하도록 지시  
2. JSP의 실행시점 행동과 클라이언트에게 돌려줄 응답에 영행을 미치는 특별한 태그  
3. 크게 표준액션과 사용자 정의 액션으로 구분  
4. 표준액션은 썬아이크로시스템즈에서 정의한 액션  
5. 표준 action tag의 형태  
   <jsp:…> 내용 </jsp:…>  
   <jsp:…    />  

----------------------  
<jsp:useBean>  
----------------------  
1. 하나의 자바빈을 JSP와 연관시키는데 사용  
2. JSP의 자바코드에서는 action의 id 특성에 지정된 값을 통해서 객체를 참조한다.  
3. <jsp:useBean id=“name” scope=“page|request|session|application”  
     beandetails />  
4. beandetails는 아래의 형태중 하나이다.  
   class=“classname”, class=“classname” type=“typename”  
   beanName=”beanname” type=“typename”  
   type=“typename”  

5. id : 객체 인스턴스를 식별하는 이름(대소문자 구별), 한번 생성된  Bean이  
   소멸할때까지 같은 Id를 중복해서 사용할수 없다  
6. scope : 객체참조의 범위( default : page)  
7.  class : 완전한 형태의 클래스 이름, 다음의 beanName이 정의되어 있지 않다면  
     반드시 정의 되어야 한다.  
8. beanName : java.bean.Beans Class의  instantiate()의 메소드에 사용할 빈의 이름,  
    type과 beanName을 지정한 경우에는 class특성을 생략할수 있다. class인자를  
   안쓸경우 사용  
   (내부적으로 컨테이너는 id와 scope를 이용해서 객체를 찾는다. 만일 찾지 못하면  
    현재 클래스로더로 instantiate() 메소드를 호출하는데 , 이때 ,빈의 이름을 인자로  
    넣는다. 이 인스턴스가 실패하면 예외가 발생된다.)  
9. type : 클래스의 형을 지정하는 생략가능한 특성,              
             객체가 이 특성으로 지정된 형이 아니면 ClassCastException 이 발생된다.  
10. page : 객체 참조는 service() 호출이 종료될때 소멸  
11. request : HttpServletRequest 객체가 소멸되지 않는한 존재(요청이 다른 페이지로  
                  넘어가더라도), 컨테이너에 의해 생성된 서블릿은 HttpServletRequest의  
                  setAttribute(String key, Object value)메소드를 이용하여 객체를  
                  HttpServletRequest에 바인딩 시킨다.  
12. session : 객체는 Client의 요청과 구별되며, session이 유효한 동안에는  
                   계속살아 남는다. 컨테이너에 의해 생성된 서블릿은 HttpSession의  
                   putValue(String key, Object value)를 이용하여 객체를 HttpSession에  
                   바인딩 시킨다.  
13. application : 가장 수명이 김. ServletContext의 setAttribute를 통해 객체를  
                       ServletContext에 바인딩 시킨다.  

------------------------  
[jsp:useBean 작동원리]  
------------------------  
1. 컨테이너는 액션의 scope로 지정된 범위에서 id에 해당하는 객체를 찾는다  
   객체를 찾은경우 type 특성이 지정된 경우 이를 이용해서 객체를 형변환 한다.  
   실패시 ClassCastException 을 던진다.  
2. 객체를 못찾는 경우 , class나 beanName이 지정되어 있지않으면  
   java.instantiationException을 던진다.  
3. 지정된 범위안에서 객체를 찾지 못했으며 지정된 클래스가 인자가 없는 public  
   생성자를 가진 비추상클래스인 경우 컨테이너는 그클래스를 인스턴스화 한다.  
   객체참조는 지정된 범위안에서 변수에 배정된다. 에러발생시  
   java.lang.InstantiationException을 던진다.  
4. 지정된 범위안에서 객체를 찾지 못했으며 beanName이 지정된 경우  
    java.bean.Beans의 instantiate() 메소드가 호출된다.(beanName을 인자로 넣는다.)    
    이메소드가 성공시 지정된 범위안에서 변수에 객체참조가 배정된다.  
5. jsp:useBean 요소에 내용이 있는 경우 ,그 내용이 처리된다. 이시점은 변수가  
   초기화 되었으며 내용의 범위안에서 사용가능한 상태이다. 요소의 내용은 JSP의  
   다른 부분과 마찬가지로 처리되며 템플릿텍스트가 있으면 그것들이 출력스트림으로  
   전송된다. 내용에 빈 인스턴스의 더 상세한 초기화를 위해 추가적인 scriptlet이나  
    jsp:setProperty등의 표준액션이 포함될수도 있다.  

--------------------  
<jsp:setProperty>  
--------------------  
1. useBean과 같이 쓰이며 빈의 속성에 값을 설정  
<jsp:setProperty name=“beanName” propertydetails />  
2. property details  
   property=“*”, property=“propertyName”  
   property=“propertyName” paran=“parameterName”  
   property=“propertyName” value=“propertyValue”    
3. name : <jsp:useBean> 태그에 의해 정의된 빈 인스턴스의 이름  
4. property : 값을 설정하고자 하는 빈 속성의 이름, “*”로 설정시 ServletRequest안의  
                 모든 인자들중 빈 속성과 데이터 형이 일치하는것을 찾아 각각의 속성들을 각  
                 각의 인자들의 값으로 설정한다. 인자의 값이 “”인 경우 속성은 변하지 않는  
                 다.  
5. param : 빈 속성에 설정하고자 하는 값을 쵸청파라미터에서 지정하고자 할경우  
              사용  
6. value : 빈 속성에 설정할 값을 지정, 하나의 jsp:setProperty 태그가 param과value  
              를 동시에 가질수 없다.  

---------------------  
<jsp:getProperty>  
---------------------  
1.  빈의 속성값을 얻는데 사용  
2.  빈 속성값을 얻어 String으로 변환후 출력스트림으로 보낸다.  
3.   <jsp:getProperty name=“name” property=“propertyName” />  
      name : 속성을 얻고자 하는 빈 인스턴스의 이름  
      property : 얻고자 하는 속성의 이름  

- 출처 : http://blog.paran.com/oraclejava/9999685 -

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments