아파치 톰켓 컴파일중 오류 메시지...



According to TLD or attribute directive in tag file, attribute items does not accept any expressions



이는 JSP파일의 JSTL 선언부와 설치한 라이브러리 jstl.jar와의 버전차이에 의한 에러 메시지다.

해결법은 문서내 선언부를 버전에 맞게 변경시켜주면 된다.

JSTL 1.0
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>


JSTL 1.1
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>



..
Posted by finewoo
,

탄생배경

1996년, SUN은 자바를 위한 소프트웨어 컴포넌트 모델을 정의한 자바빈즈(JavaBeans) 1.00-A 명세를 발표했다.
이는 재사용이 가능한 자바객체를 이용해 복잡한 어플리케이션을 쉽게 구성할 수 있게 하는 일련의 코딩정책을 정의한 것이다.
그리고 앤터프라이즈급 어플리케이션의 개발을 위해 1998년 자바빈즈(EJB: Enterprise JavaBeans) 명세 1.0을 발표했다.
하지만, EJB는 어플리케이션 개발을 쉽게 구성하겠다는 본래의 의도를 벗어나게 됐다.
엔터프라이즈급의 서비스 제공을 위해 코드 및 개발이 점점 복잡해지고 어려워졌다.

이러한 분위기속에서 애스팩트 지향 프로그래밍(AOP: aspect-oriented programming), 종속객체 주입(DI: dependency injection) 같은 새로운 프로그래밍 기법으로 이전 EJB로만 가능했던 부분이 평범한 자바 객체(POJO: plain-old Java objects)로도 구현이 가능하게 됐다.

스프링 프레임워크는 이러한 가벼운 POJO 기반 개발 진영의 선두에 있다고 볼 수 있다.



스프링이란?

스프링(Spring)은 로드 존슨(Rod Johnson)이 그의 책 『Expert One-on-One: J2EE Design and Development』을 통해 소개되었다.
스프링의 특징을 간단하게 요약하면

스프링은 가벼운 DI 및 AOP기반 컨테이너이자 프레임워크이다.


종속객체 주입(DI: dependency injection)
: 객체가 의존관계에 있는 다른 객체를 컨테이너에서 찾아오는 것이 아니라 인스턴스가 생성되면 컨테이너가 그 객체에 필요한 종속객체를 찾아주는 것이다. 따라서 낮은 결합도를 유지하게 해준다.


애스팩트 지향 프로그래밍(AOP: aspect-oriented programming)
: 애플리케이션 개발에 있어 비즈니스 로직과 트랜잭션관리, 로깅등 시스템 서비스 관련 작업을 분리해 응집도 높은 개발을 가능하게 한다. 


DI와 AOP를 근간으로 한 결합도가 낮은 애플리케이션이라 함은 개발시 테스트의 용이함 뿐만 아니라 관리시에도 상당한 편의성을 제공한다.




스프링 프레임워크는 코어 컨테이너 계층 위에 여러가지 계층으로 이루어져 있다. 이는 곧 애플리케이션 개발시 필요한 개별 모듈을 선택적으로 사용할 수 있다는 의미이다.

이 여러 계층 중 몇가지만 살펴보기로 한다.



The Core package is the most fundamental part of the framework and provides the IoC and Dependency Injection features.
The basic concept here is the BeanFactory, which provides a sophisticated implementation
of the factory pattern which removes the need for programmatic singletons and allows you to decouple the configuration and specification of dependencies from your actual program logic.

코어 컨테이너(core container)
- 코어 컨테이너는 IoC와 DI를 제공하는 스프링 프레임워크의 기본을 구성한다. 이 모듈에 있는 BeanFactory는 스프링을 컨테이너로서의 역할을 하게 한다.



The Context package build on the solid base provided by the Core package: it provides a way to access objects in a framework-style manner in a fashion somewhat reminiscent of a JNDI-registry.
The context package inherits its features from the beans package and adds support for internationalization (I18N) (using for example resource bundles), event-propagation, resource-loading, and the transparent creation of contexts by, for example, a servlet container.

컨텍스트 계층(웹 계층)
- Context package는 Core package위에 위치하며 BeanFactory 형태를 확장하여 국제화(I18N), 애플리케이션 생명주기 이벤트, 유효성 검증, 이메일, JNDI 액세스, 리모팅 등 여러 서비스를 제공한다.



The DAO package provides a JDBC-abstraction layer that removes the need to do tedious JDBC coding and parsing of database-vendor specific error codes. Also, the JDBC package provides a way to do programmatic as well as declarative transaction management, not only for classes implementing special interfaces, but for all your POJOs (plain old Java objects).

DAO 계층
- JDBC 추상화를 제공하는 DAO계층은 반복되는 데이터베이스 코드를 간단하고 깔끔하게 만들어 주며, AOP모듈을 이용해 트랜잭션 관리 서비스도 가능하며 데이터베이스 관련 각종 오류를 해결하는데 도움을 준다.



Spring's MVC package provides a Model-View-Controller (MVC) implementation for web-applications.
Spring's MVC framework is not just any old implementation; it provides a clean separation between domain model code and web forms, and allows you to use all the other features of the Spring Framework.

Spring's MVC 계층
- Spring's MVC 는 웹어플리케이션에 Model-View-Controller (MVC)를 적용할 수 있게 한며 애플리케이션의 결합도를 낮춰주는 역할을 한다.



스프링 프레임워크의 철학은 다른 프레임워크와 마찬가지로 개발자로 하여금 여타 불필요하거나 반복적인 작업으로 시간낭비하는 부분을 지양하게 한다. 그리고 스프링 자체의 가벼움은 기존API 및 JDBC, iBATIS, 하이버네이트, Struts, JSF등 기존 프레임워크와도 비교적 쉽게 통합하는 특징을 가진다.



Posted by finewoo
,

프로젝트의 버전관리 도구로 CVS 와 Subversion이 가장 많이 사용된다.
하지만 CVS의 단점을 개선한 Subversion이 점차 많이 사용되고 있다.


* subversion의 특징

- 파일명 변경이 히스토리에 남는다.(CVS는 기존 파일을 삭제한 것으로 간주해버린다)
- 원자적 커밋(모든 파일이 커밋되면 되는거고 아니면 모두 롤백)
- 커밋 단위별 버저닝.(CVS는 각 파일별로 버전을 메기지만 SVN은 커밋단위로 버전을 메기기 때문에, 직전 커밋상태로
  모든 파일을 되돌리는 것이 가능하다)


http://subversion.tigris.org/ (subversion 공식 홈페이지)

http://subclipse.tigris.org/ (subclipse 홈페이지)
http://tortoisesvn.sourceforge.net/


이클립스 플러그인 설치 방법

원문 : http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA

 
 
Eclipse 3.2/Callisto, 3.3/Europa, 3.4/Ganymede, 3.5/Galileo +
Subclipse 1.6.5 and 1.4.8 are now available for Eclipse 3.2+!

See the changelog for details. Existing Subclipse users should read the upgrade instructions for important information on changes you to need to make to your Eclipse preferences to see the new version in the update manager.

Subclipse 1.4.x includes and requires Subversion 1.5.x client features and working copy format.

Subclipse 1.6.x includes and requires Subversion 1.6.x client features and working copy format.


Links for 1.6.x Release:
Changelog: http://subclipse.tigris.org/subclipse_1.6.x/changes.html
Eclipse update site URL: http://subclipse.tigris.org/update_1.6.x
Zipped downloads: http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240


 
Install Subclipse in Eclipse 3.x

 

Step 1:

Begin the installation from the Eclipse Help menu item.

Step 2:

This screenshot show the screen as it initially comes up.

In this case you will need to change the radio button to indicate that this is a new install.

Step 3:

This screen will vary depending on the features you have installed already.

You want to click on the New Remote Site button.

If you are behind a proxy and the Eclipse install mechanism does not work, then you can download a zipped version of the update site and then click the New Local Site button instead.

Step 4:

This screen is showing the New Remote Site dialog, filled in with the correct information to install Subclipse

    Name: Subclipse 1.6.x (Eclipse 3.2+)
    URL:  http://subclipse.tigris.org/update_1.6.x
    Name: Subclipse 1.4.x (Eclipse 3.2+)
    URL:  http://subclipse.tigris.org/update_1.4.x
    Name: Subclipse 1.2.x (Eclipse 3.2+)
    URL:  http://subclipse.tigris.org/update_1.2.x
    Name: Subclipse 1.0.x (Eclipse 3.0/3.1)
    URL:  http://subclipse.tigris.org/update_1.0.x

Step 5:
When you first come back to this screen, the site you added will NOT be selected.
Be sure to select it before clicking Next.
Step 6: This next screen shows all of the features that are available to install.
Step 7: Click the button to accept the license agreement.
Step 8: Confirm the install location
Step 9:
There is an Eclipse preference to turn off this next dialog.
I have never seen a signed feature. Not even Eclipse.org nor IBM sign their features.
Step 10: Just a screenshot of the in-process installation.
Step 11: Eclipse needs to be restarted after installing Subclipse.
Step 12:
Finally, after restarting Eclipse,
the first thing you will typically want to do is open the Subclipse Repository perspective
where you can define your repositories.
Be sure to also check the online help
as well as the Subclipse preferences located under Team -> SVN.




..

Posted by finewoo
,