/**
* @return the jumin
*/
public String getJumin()
{
return jumin;
}
/**
* @param jumin the jumin to set
*/
public void setJumin(String jumin)
{
this.jumin = jumin;
}
/**
* @return the cellphone
*/
public String getCellphone()
{
return cellphone;
}
/**
* @return the name
*/
public String getName()
{
return name;
}
/**
* @return the post
*/
public String getPost()
{
return post;
}
/**
* @return the sabun
*/
public String getSabun()
{
return sabun;
}
/**
* @return the telephone
*/
public String getTelephone()
{
return telephone;
}
/**
* @param cellphone the cellphone to set
*/
public void setCellphone(String cellphone)
{
this.cellphone = cellphone;
}
/**
* @param name the name to set
*/
public void setName(String name)
{
this.name = name;
}
/**
* @param post the post to set
*/
public void setPost(String post)
{
this.post = post;
}
/**
* @param sabun the sabun to set
*/
public void setSabun(String sabun)
{
this.sabun = sabun;
}
/**
* @param telephone the telephone to set
*/
public void setTelephone(String telephone)
{
this.telephone = telephone;
}
/**
* @return the isAdmin
*/
public boolean isAdmin()
{
return isAdmin;
}
/**
* @param isAdmin the isAdmin to set
*/
public void setAdmin(boolean isAdmin)
{
this.isAdmin = isAdmin;
}
}
VO 부분은 회원 1명을 표현할때 필요한 여러 변수를 가지고 있으며 DAO는 그 회원들의 정보를 저장 불러오기 수정 등을 할수 있는 행위가 기술됨.
DAO에서 중요한 부분은 잘 생각해 보면 이 DAO는 몇번을 실행하더라도 내용이 바뀌지가 않음. DAO가 실행될때 마다 바뀌는건 VO고 이를 봤을 때 싱글톤 패턴을 사용하면 메모리를 조금 더 적게 사용할 수 있으며(매 호출시 인스턴스를 만들지 않기 때문) static영역에 미리 만들어진 인스턴스가 들어가 있기 때문에 그 주소를 참조해서 객체를 불러오기 때문에 객체를 생성하는것에 비해 속도가 빠름.
엄청 오랜만에 글을 쓰게 되었네요~ 예전부터 계획했던 스트럿츠와 관련된 내용입니다. 한달동안 훈련소를 갔다가 오고 이것저것 하다 보니 시간이 많이 지나버렸네요! 오랜만에 Struts 홈페이지를 보니 1.3.8로 업그레이드가 되었더군요~ 이전에 마지막에 써봤던 버젼이 1.2.9 였는데... 말이죠~ 우선 기반은 1.3.8 기반으로 설명 하겠습니다.
우선 JDK와 Tomcat에 깔여 있고 툴은 이클립스 기반으로 하겠습니다.
설치 순서는 다음과 같습니다.
1. Struts 다운로드 2. 필요한 jar 파일 프로젝트의 WEB-INF 밑에 LIB 폴더에 복사(라이브러리 등록) 3. WEB.XML 파일 작성 4. Struts 설정파일(기본: struts-config.xml) 작성
자~ 대략적인 순서는 위에 갔습니다. 저렇게 보니 간단하죠? 머 그냥 해봐도 간단하기는 합니다. 그럼 시작하겠습니다.
필자가 추가한 내용을 <Servlet>과 <servlet-mapping> 부분입니다. Struts를 사용하기 전에 Servlet에 대하여 모르시는 분은 Servlet부터 공부를 하고 오시는 것이 더 효율적으로 공부를 하실 수 있을 것 같습니다.
<Servlet>부분을 살펴보면 이것저것 설정 정보가 있다는것을 볼 수 있습니다. 서블릿의 이름과 파리미터를 보시면 대강 이해를 하실수 있을 것입니다. struts-config 파일의 정보라든지 debug 정보 출력 정도라는지... <Servlet-mapping>부분을 보면 요청이 어떻게 들어왔을 때 Struts로 처리를 할 것인지 적혀 있는 부분입니다. xxx.do 로 호출 될 경우에만 Struts로 처리 한다는 이야기 입니다.
4. Struts-Config 파일 설정 web.xml 파일 설정이 끝나으면 이제 struts-config 파일을 만들어야 합니다.
설정 정보 파일은 web.xml에서 지정한 위치와 파일이름으로 생성해 주시면 됩니다. struts-config.xml파일을 생성하시고 내용을 다음과 같이 입력 하시면 Struts 설치는 끝이 납니다.
MyEclipse에서 Xdoclet을 이용하여 sesstion bean 만들기 For weblogic 8 #2
http://www.definejava.net/ @ ALT
MyEclipse에서 Xdoclet을 이용하여 sesstion bean 만들기 For weblogic 8 #1에서 Xdoclet을 이용하여 배포에 필요한 xml과 class 파일을 생성하였습니다. 이제 실제로 Weblogic Server에 Application을 배포하여 이것이 잘 돌아가는지 확인 해 보겠습니다. 우선 MyEclipse에 Weblogic 서버 설정이 되어있어야 합니다. 설정 하는 방법은 우선 따로 정리하지 않고 나중에 다시 강좌를 한개 더 쓰겠습니다. 설정이 되어있다는 가장하에 진행하도록 하겠습니다.
Server정보에 WebLogic 8 이 있는지 확인하고 마우스 오른쪽 버튼을 누르고 Manage Deployment를 선택합니다. Server Deployments 폼이 나타나면 add를 클릭한 뒤 Project에서 HelloEJB를 선택 한 뒤 Finish를 누릅니다.
Deploy가 완료 되면 OK 버튼을 누르고 Weblogic 8 왼쪽에 + 버튼을 눌러 helloEJB Application이 등록되었는지 확인합니다.
Deploy된 helloEJB 밑에 helloEJBEJB 프로젝트와 helloEJBWEB 프로젝트가 있음을 알 수 있습니다.
Weblogic 관리자 화면에도 배포가 잘 되었는지 확인 해 봅니다.
이제 JSP 또는 JAVA 파일을 만들어서 방금 만든 EJB를 사용 해 보겠습니다. Web Project를 미리 만들었기 떄문에 JSP에서 EJB를 확인 해 보겠습니다.
helloEJBWeb 프로젝트에서 helloEJB01.jsp 파일과 helloEJB02.jsp 파일을 만듭니다. 01파일은 로컬에서 EJB를 사용할 때 그리고 02는 원격지에서 EJB를 사용할 때의 예제 입니다.
helloEJB01.jsp와 helloEJB02.jsp에 다음과 같이 입력합니다. helloEJB01.jsp
public class StaticTest { private static int SIZE= 10; private static int[] myStatic = new int[SIZE]; }
대부분 이렇게 사용할 것이다.
myStatic이라는 배열을 만들었다. 그렇다면 이 myStatic에 값을 할 당할때 어떻게들 사용하는가? myStatic은 배열이다. 배열에 값을 할당 할때 과연 어떻게 할 수 있을까?(반복문을 이용하는 방법중) 생성자를 만드는 방법도 있을것이고 메인메소드나 기타메소드에서 값을 할당 받는경우도 있다. 가장 쉽게 생각한 방법이 다음과 같은 두가지 방법일 것이다.
ex1)
more..
public class StaticTest { private static int SIZE= 10; private static int[] myStatic = new int[SIZE];
public static void main(String args[]) { new StaticTest(); printStatic(); } }
ex1같은 경우 main 메소드 같은 곳에서 처음 한번만 초기화 값을 넣는 방법과 ex2처럼 생성자를 만들어 객체를 생성하게 하여 사용하는 방법이 있을 것이다. (필자는 두가지 방법밖에 몰랐었다. 하긴 지금은 몇가지를 더 알고 있으니깐 이글을 쓰는거겠지만...;;)
ex1 같은 경우를 보자! 일반 Application에서는 main메소드를 호출 하기 때문에 단 1번만 호출되면서 값이 활당된다. 그렇다면 웹어플리케이션에서는 어떨까? 당연히 힘들다.(불가능 한것은 아니다. init가 있기 때문에) web.xml을 수정하여하고 이래저래 복잡하다. ex2 같은경우를 보자! 이와 같은 방법은 객체를 생성하여야 한다. 객체 생성으로 그만큼의 공간을 잡아 먹는 샘이다. 불필요한 공간을 계속 잡고 있을 테니 조금 문제가 될수있다.
두가지의 문제점을 해결 할 수 있는 방법이 필자가 소개할려고 하는 ex3 이다. 아는 사람도 많이 있겠지만 모르는 사람도 많을 것 같다.
바로 static block을 이용하는 방법이다. ex3을 보도록 하자! ex3)
more..
public class StaticTest { private static int SIZE= 10; private static int[] myStatic = new int[SIZE]; static { for(int i=0, size=SIZE; i<size; i++ ) { myStatic[i] = 100 + i; } }
같은 클래스, 하위클래스, 또는 같은 패키지 내에 있는 어떤 클래스에서도 접근할 수 있습니다. 이 접근 권한은 클래스 또는 객체의 외부 인터페이스를 제공해 줄 때 주로 사용합니다.
Private
같은 클래스 내에서만 접근가능 합니다. 다시 말해서, 이 접근 권한으로 지정된 변수 또는 메소드를 다른 객체에서 참조하거나 사용하는 것이 불가능하고, 자신의 클래스 내에 있는 메소드에서만 참조하거나 사용할 수 있습니다. 클래스가 제공하는 기능을 내부적으로 구현할 때 주로 사용하고, 이렇게 함으로써 완벽한 정보은닉이 가능합니다.
Protected
자바에서 정의된 클래스들은 기본적으로 하나의 그룹 단위 또는 묶음단위로써 유지되는데, 이를 패키지라 합니다. 다시 말해서 패키지는 클래스들의 그룹이라 볼 수 있습니다. protected 접근지정자를 이용하면 같은 클래스, 하위클래스, 또는 같은 패키지 내의 모든 클래스에서 접근가능 합니다.
생략(Default)
같은 클래스 또는 같은 패키지 내에 있는 모든 클래스 내에서 접근가능 합니다. protected 접근지정자와는 달리 하위클래스에서는 접근할 수 없습니다.
Static
객체를 new 연산자를 이용하여 생성했을 때 비로소 메서드니 멤버 변수들이 메모리를 확보하게 됩니다. 따라서 new 연산자로 객체를 생성하지 않고서는 객체의 메서드니 멤버 변수들을 사용할 수 없지만 이러한 절차를 거치지 않고 멤버변수나 메서드를 사용할 수 있게 해줍니다.
Final
final는 상수의 의미를 가지고 있는 키워드로서 클래스와 메서드, 변수에 사용될 수 있으나 각각 의미는 다릅니다.
객체지향 개념은 클래스를 이용하여 새로운 클래스를 생성 또는 정의할 수 있도록 하고 있습니다. 예를 들어, 자동차가 갖는 일반적인 상태와 행동들을 자동차 클래스로 정의해 놓고, 이 자동차 클래스를 확장하여 버스만이 갖는 상태와 행동을 추가하여 버스 클래스를 정의하고, 트럭이 갖는 상태와 행동을 추가하여 트럭 클래스를 정의하고, 그리고 자가용이 갖는 상태와 행동들을 추가하여 자가용 클래스를 정의 할 수 있겠지요. 이 때, 자동차 클래스를 상위클래스(superclass)라 하고 버스 클래스, 트럭 클래스, 자가용 클래스 등을 하위클래스(subclass)라 하며, 이들 간의 관계에 대해 얘기할 때 “하위클래스는 상위클래스를 상속한다(inherit)”라고 합니다. 다시 말해서, 하위클래스는 상위클래스가 갖고 있는 모든 특성들을 상속하여 사용할 수 있다는 것입니다. 이러한 상속 관계를 트리로 나타낼 수 있고, 이 상속관계 트리를 클래스 계층도(class hierarchy)라 합니다.
자바에서의 모든 클래스들은 반드시 어떤 클래스로부터 파생되어야 하는데, 클래스 계층 구조의 최상위 클래스는 바로 java.lang이라는 패키지에 있는 Object라는 클래스입니다. 따라서, 자바에서 정의된 모든 클래스는 기본적으로 Object클래스로부터 파생된 클래스가 되며, 자바 개발자가 만든 클래스가 그 어떤 클래스도 상속하지 않도록 정의하였다면, 자바는 내부적으로 이 사용자 클래스가 Object 클래스를 상속하도록 코드를 추가하여 줍니다. 그러므로, 자바에서 생성된 모든 클래스는 Object 클래스가 가지고 있는 변수와 메소드를 상속하여 그대로 사용할 수 있습니다.
상위클래스와 하위클래스
자바에서 “B 클래스가 A 클래스를 상속한다”고 할 때, 상속관계에 있는 두 클래스의 관계를 정의해 보면, A 클래스를 상위클래스(superclass)라 하고, B 클래스를 하위클래스(subclass)라 합니다. 이 때, 하위클래스는 다른 클래스로부터 파생된 클래스를 나타내며, 상위클래스의 모든 상태(변수)와 행동(메소드)을 상속하게 됩니다. 상위클래스란 클래스 계층구조에서 바로 한 단계 위 클래스를 나타냅니다. 하위클래스는 상위클래스의 외부 인터페이스 및 그 구현에 대해 재사용하므로, 상위클래스의 모든 변수와 메소드에 대해 하위클래스에서 접근 가능한 변수와 메소드는 하위클래스의 것으로 생각할 수 있는데, 하위클래스가 상속할 수 있거나 그렇지 못한 상위클래스의 멤버는 다음과 같습니다.
Spring Framework는 2002년에 발간된 Rod Johnson의 저서 "Expert One-on-One J2EE Design and Development"에서 소개된 소스코드와 디자인 패턴들을 다시 정리하면서 2003년 초에 오픈소스로 시작된 프로젝트이다.
스프링의 목적은 J2EE 기반의 Web Applicaion을 쉽게 제작하는 것을 목적으로 하고 있으면서 J2EE 서비스에 종속되지 않고 계층화, 모듈화가 잘 되어 있는 유연한 프레임워크이다. 스프링은 각종 Bean의 생성 하고 관리를 하는 Light Weight 컨테이너로써 다른 프레임워크와 결합에 매우 중요한 역활을 한다.
Core 패키지는 프레임워크의 가장 기본적인 부분이고 당신에게 bean컨테이너를 기능적으로 관리하는 것을 허용하는 의존성 삽입(Dependency Injection-DI)기능을 제공한다. 여기의 기본적인 개념은 프로그램에 따른 싱글톤의 필요성을 제거하는 factory패턴을 제공하고 당신의 실질적인 프로그램 로직으로부터 설정과 의존성 명시를 분리시키는 것을 당신에게 허용하는 BeanFactory이다.
Core 패키지의 가장 위에는 프레임워크 스타일의 방식으로 bean에 접근하기 위한 방법을 제공하는 다소 JNDI-등록기와 유사한 Context 패키지가 위치한다. context패키지는 bean패키지로부터 이 기능을 상속하고 예를 들어 resource bundle와 같은것을 사용하여 텍스트 메시지, 이벤트 위임, 자원-로딩 그리고 예를 들어 서블릿 컨테이너와 같은 것에 의해 투명한 컨텍스트 생성을 위한 지원을 추가한다.
DAO 패키지는 끔찍한 JDBC코딩과 데이터베이스 업체 특정 에러코드의 파싱을 할 필요를 제거하는 JDBC추상화 레이어를 제공한다. 또한 JDBC패키지는 특정 인터페이스를 구현하는 클래스를 위해서 뿐 아니라 당신의 모든 POJOs를 위해서도 선언적인 트랜잭션 관리만큼 프로그램에 따른 방식으로 할수 있는 방법을 제공한다.
ORM 패키지는 JDO, Hibernate 그리고 iBATIS를 포함하는 인기있는 객체-관계 맵핑 API를 위한 통합 레이어를 제공한다. ORM패키지는 사용하여 당신은 앞에서 언급된 간단한 선언적인 트랜잭션 관리와 같은 Spring이 제공하는 다른 모든 기능을 사용해서 혼합하여 모든 O/R매퍼를 사용할수 있다.
Spring의 AOP 패키지는 당신이 정의하는것을 허용하는 AOP 제휴 호환 aspect-지향 프로그래밍 구현물을 제공한다. 예를 들어 코드를 명백하게 분리하기 위한 메소드-인터셉터와 pointcut은 논리적으로 구별되어야 할 기능을 구현한다. 소스레벨 메터데이타 기능을 사용하여 당신은 .NET속성과 다소 비슷한 모든 종류의 행위적 정보를 당신의코드로 결합한다.
Spring의 Web 패키지는 멀티파트기능, 서블릿 리스너를 사용한 컨텍스트 초기화 그리고 웹-기반 애플리케이션 컨텍스트와같은 기본적인 웹-기반 통합 기능들을 제공한다. WebWork나 Struts와 함께 Spring을 사용할때 이것은 그것들과 통합할 패키지이다.
Spring의 웹 MVC 패키지는 웹 애플리케이션을 위한 Model-View-Controller구현물을 제공한다. Spring의 MVC구현물은 어떠한 구현물이 아니다. 이것은 도메인 모델 코드와 웹폼(Web forms)사이의 분명한 구분을 제공하고 유효성체크와 같은 Spring프레임워크의 다른 모든 기능을 사용하도록 당신에게 허용한다.