View Resolver

개발/SPRING 2008. 9. 4. 16:10 |

View Resolver

핸들러(controller)는 요청을 처리 한 뒤 ModelAndView 객체를 넘겨준다. 이 때 이 객체에 view의 이름을 같이 넘겨 주는데 이 이름으로 실제 view를 찾아 주는 역할을 하는 것이 View Resolver이다.
Spring이 제공하는 View Resolver들은 다음과 같다.

ViewResolver 설명
AbstractCachingViewResolver View 들을 cashing하는 기능 제공
XmlViewResolver ViewResolver 의 구현체로 XML파일 사용(/WEB-INF/views.xml 을 기본 설정파일로 사용)
ResourceBundleViewResolver ViewResolver 의 구현체로 리소스 파일 사용(views.properties 를 기본 리소스 파일로 사용)
UrlBasedViewResolver ViewResolver 의 구현체로 특별한 맵핑 정보 없이 의미상 view 이름을 URL로 사용(View 이름과 실제 view 자원과의 이름이 같을 때 사용)
InternalResourceViewResolver UrlBasedViewResolver 를 상속 받았으며 InternalResourceView(Servlet, JSP)를 사용
VelocityViewResolver/FreeMarkerViewResolver UrlBasedViewResolver 를 상속 받았으며 VelocityView 와 FreeMarkerView를 사용

사용하려는 기술에 따라 위와같은 View Resolver를 적절히 선택하여야한다.


  • JSP 사용

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>


    viewResolver는 action 요청 처리 후 사용자에게 보여줄 view를 찾는 역할을 하고 prefix와 suffix를 지정해 줄수 있다. 만약 controller에서 넘겨준 modelAndView 값이 index이고 prefix를 "/jsp/", suffix를 ".jsp"라고 정의 했다면 이 viewResolver는 "/jsp/index.jsp"를 찾게 된다. 이러한 viewResolver 정보를 변경함으로써 Velocity, Excel, PDF등을 View로 이용하는 것이 가능하다.

  • JSTL 사용

    <bean id="jspViewResolver" 
       class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
      <property name="prefix" value="/WEB-INF/jsp/"/>
      <property name="suffix" value=".jsp"/>
    </bean>

    만약 JSTL 태그를 사용한다면 viewClass 특성을 설정함으로써 InternalResourceView를 JstlView로 대체해야 한다. JstlView도 요청을 JSP에 전달한다.

Posted by 무리미
:

Spring Exception

개발/SPRING 2008. 9. 4. 16:05 |

Spring이 제공하는 예외 클래스 계층도


그리고 아래는 간단한 설명
예외 클래스 설명
CannotAcquireLockException update 과정에서 lock에 실패
CannotSerializeTransactionException update 충돌로 serialized 모드의 트랜젝션 실패
CleanupFailureDataAccessException CRUD 오퍼레이션은 성공했으나, DB 리소스 회수에 실패한 경우(예: Connection close 실패)
ConcurrencyFailureException 동시 접근 제어 실패
DataAccessResourceFailureException DB 연결 불능과 같은 DB 리소스 문제
DataIntegrityViolationException 데이터 무결성 규칙에 위배되는 insert/update를 시도
DataRetrievalFailureException 아무 데이터도 추출하지 못함
DeadlockLoserDataAccessException Dead-lock 문제로 트랜젝션 무효화
EmptyResultDataAccessException 하나 이상의 결과가 나와야 하는 상황에서 결과가 없음
IncorrectResultSizeDataAccessException 예상되는 결과와 다른 수의 데이터가 반환
IncorrectUpdateSemanticsDataAccessException update 과정에서 예기치 못한 일 발생. 잘못된 트랜젝션 Roll-back 안됨.
InvalidDataAccessApiUsageException 기반 API를 잘못 사용
InvalidDataAccessResourceUsageException SQL 문법 오류와 같은 DB 리소스 오용
OptimisticLockingFailureException optimistic locking 위반. DBMS가 아닌 ORM이나 DAO 구현에서 throw
PermissionDeniedDataAccessException 접근 권한 오류
PessimisticLockingFailureException DBMS에서 포착한 pessimistic locking 위반.
TypeMismatchDataAccessException 자바 타입과 데이터 타입 불일치
UncategorizedDataAccessException 미분류

Posted by 무리미
:

컬럼명 변경은 오라클9i 부터 지원되는 기능입니다. ^^*


테이블명 바꾸기

ALTER TABLE 구테이블명 RENAME TO 신테이블명;


ALTER TABLE [TABLE NAME] RENAME COLUMN [COLUMN NAME] TO [NEW COLUMN NAME];

컬럼명 바꾸기
ALTER TABLE 테이블명 RENAME COLUMN 구컬럼명  TO 신컬럼명 ;


컬럼수정

먼저 바뀔컬럼을 update 테이블명 set 컬럼명='' 모두 초기화 한다.

alter table  테이블명 modify (컬럼명 number(10,2) ) ;


컬럼 삭제

Alter table  테이블명 Drop (컬럼명);


컬럼추가
Alter table 테이블명

add(컬럼명 number(10,2));

Posted by 무리미
: