1.HttpSessionBindingListener 인터페이스의 중요성 (awt component 사용할때 내가 재정의해서 등록하는 리스너와 동일 )


(1) public void valueBound(HttpSessionBindingEvent event)
 :빈이 사용자의 세션에 처음 바인딩(useBean 통해 인스턴스화후에) 될때 호출됨 
(2)public void valueUnbound(HttpSessionBindingEvent event)
 :빈이 세션에서 제거될때 호출됨

=>즉 세션 바인딩 이벤트를 처리한다는 것은.. 빈의 인스턴스의 생성,소멸을 리퀘스트 단위가 아닌, 세션 단위로
   처리할수 있다는 의미가 된다.(내 요청마다 새로생성, 소멸..반복.. 낭비 아닌가?)


2. 빈의 리스너
(1)java.beans  인터페이스 PropertyChangeListener

public interface PropertyChangeListener extends EventListener 
PropertyChange 이벤트는, Bean 가 「바운드」프로퍼티을 변경할 때마다 트리거됩니다. 
바운드 프로퍼티의 갱신마다 통지를 보내도록(듯이), PropertyChangeListener 를 소스 Bean 에 
등록할 수 있습니다.
메소드의 개요 void propertyChange (PropertyChangeEvent  evt)

java.beans 
클래스 PropertyChangeEvent java.lang.Object  
java.beans.PropertyChangeEvent 모든 구현된 인터페이스:Serializable
직계의 기존의 서브 클래스: IndexedPropertyChangeEvent

생성자 의 개요PropertyChangeEvent (Object  source, String  propertyName, Object  oldValue, Object  newValue)
새로운 PropertyChangeEvent 를 구축합니다.



(2)java.beans 인터페이스 VetoableChangeListener
public interface VetoableChangeListener
extends EventListener

VetoableChange 이벤트는, Bean 가 「제약」프로퍼티을 변경할 때마다 트리거됩니다. 

제약 프로퍼티의 갱신마다 통지를 보내도록(듯이), VetoableChangeListener 를 소스 Bean 

에 등록할 수 있습니다.


메소드의 개요
 voidvetoableChange (PropertyChangeEvent  evt) 
          제약 프로퍼티의 변경시에 불려 갑니다.



(3) public interface ExceptionListener

ExceptionListener 는, 내부 예외의 통지를 받습니다.


메소드의 개요
 voidexceptionThrown (Exception  e) 
          이 메소드는, 회복 가능한 예외가 캐치 되었을 때에 불려 갑니다.





*************************************************************************


3.빈과 gui 합체 (비주얼 툴 만들기?)

java.beans   인터페이스 Customizer

public interface Customizer

카스타마이자크라스는, 타겟 Java Bean 를 커스터마이즈하기 위한 완전한 커스텀 GUI 를 제공합니다.

각 카스타마이자는, AWT 다이얼로그나 패널내에서 인스턴스를 생성할 수 있도록(듯이),java.awt.Component 클래스를 상속하지 않으면 안됩니다.

카스타마이자 마다 인수 없음의 생성자 이 필요합니다.


메소드의 개요
 voidaddPropertyChangeListener (PropertyChangeListener  listener) 
          PropertyChange 이벤트의 청취자를 등록합니다.
 voidremovePropertyChangeListener (PropertyChangeListener  listener) 
          PropertyChange 이벤트의 청취자를 삭제합니다.
 voidsetObject (Object  bean) 
          커스터마이즈 하는 객체를 설정합니다.


void setObject(Object  bean) :커스터마이즈 하는 객체를 설정합니다. 이 메소드는, Customizer 
를 친 AWT 컨테이너에 추가하기 전에 1 회만 호출하도록 해 주세요.파라미터: bean - 커스터
마이즈 되는 객체


java.beans 
인터페이스 PropertyEditor 기존의 구현 클래스의 일람: PropertyEditorSupport

public interface PropertyEditor PropertyEditor 클래스는, 사용자가 지정의 형태의 프로퍼티치를 편집하기 
위한 GUI 의 지원를 제공합니다. PropertyEditor 는, 프로퍼티치의 표시나 코우신에 도착해 다양한 방법을 
지원합니다. 대부분의 PropertyEditor 에서는, 이 API 로 사용할 수 있는 각종 옵션의 부분집합을 지원하는 것
만으로 충분합니다. 단순한 PropertyEditors 가 지원하는 것은 getAsText 와 setAsText 메소드만으로, paintValue 
이나 getCustomEditor 등의 지원는 불필요합니다. 

보다 복잡한 것으로는, getAsText 나 setAsText 는 지원할 수 없습니다만, 대신에 paintValue 과 getCustomEditor 
를 지원합니다. 각 propertyEditor 는, 다음의 3 개의 표시 스타일중 1 개(살) 이상을 반드시 지원할 필요가 있습
니다. 

즉, (1) isPaintable 의 지원, (2) getTags()로부터 null 가 아닌 String[] 를 돌려주어, 한편 getAsText 로부터
 null 가 아닌 값을 돌려준다, 또는 (3) 단지 getAsText()로부터 null 가 아닌 String 를 돌려주는, 의 3 개(살)
입니다. 

각 프로퍼티 에디터는, 인수 객체가 대응하는 propertyEditor 의 형태인 경우에, setValue 의 호출을 지원할 필요가
있습니다. 한층 더 각 프로퍼티 에디터는, 커스텀 에디터 또는 setAsText 의 어느 쪽인지를 지원할 필요가 있습니다.

각 PropertyEditor 는, 인수 없음의 생성자 을 가지지 않으면 안됩니다.


=>그니까.. 컴포넌트중 Frame이나 Window같은거 상속받은 담에.. implemets java.beans.Customizer 하면 어찌되나;; ㅎㄷㄷ


**************************************************************
사용한 빈 서버 app 메모리에서 날리기
session 스코프 : session.removeAttibute(name)  , HttpSession.removeAttribute(name)
request/page   : pageContext.removeAttribute(name) , ServletRequest.removeAttribute(name)
application    : application.removeAttribute(name) , ServletContext.removeAttribute(name)

******************************************************
request 객체를 빈태드로 엑세스하기:request도 빈처럼 다룰수 있다.
<jsp:getProperty name="request" property="remoteUser" />  

request빈의 프로퍼티들 (요청객체 임으로 getProperty만 가능하다)
authType : 들어온 요청의 인증 방식을 얻어내며, 모르면 null..
method   : 들어온 요청에서 행해진 http메소드(get,post,put)을 얻어낸다.
pathInfo : 들어온 요청의 url의 서블릿 경로 뒤에 붙지만, 질의 문자열 앞에 오는 추가 경로 정보 얻음
pathTranslated: 들어온 요청의 url의 서블릿 경로뒤,질의 문자열 앞에 오는 추가 경로를 얻어내 진짜 경로로 바꿈?
queryString : http요청 uri와 한몸으로 들어오는 질의 문자열 얻기
remoteUser : 요청을 보낸 원격 접속 사용자의 이름을 얻어냄. 사용자 이름은 http 인증과 함께 세팅됨
requestURI : 원래의 요청에 해당하는 URI를 얻음
characterEncoding: 캐릭터셋 얻음
contentType: 인터넷 미디어 타입을 얻음 (text/html , text/xml..)
protocol : 프로토콜과 버전을 얻음 <protocol>/<major version>.<minor version> 의 문자열로 얻음
remoteAddr : 요청 보낸 클라이언트의 ip주소 얻기
serverName: 요청 받은 웹 서버의 호스트 이름을 얻어냄
serverPort: 요청 받은 웹 서버의 포트번호
scheme: 들어온 요청의 url방식(scheme)를 얻어냄 (http,https,ftp..)
remoteHost: 요청을 보낸 에이전트(클라이언트)의 호스트 이름을 완전형태(fully qualified)로 얻어냄


'프로그래밍 > JSP' 카테고리의 다른 글

jsp 322p 세션에 기록해 두는 토큰에 관해  (0) 2014.01.02
jsp ~ jdbc  (0) 2014.01.01
jsp에서 빈의 사용2  (0) 2014.01.01
빈을 이용한 컴포넌트 방식의 설계1  (0) 2014.01.01
jsp 스크립트  (0) 2014.01.01
by givingsheart 2014. 1. 1. 15:58