■ 개발 순서

먼저 하이버네이트 툴을 설치 한다.

https://www.hibernate.org/ 에서 hibernate tool zip 파일을 다운 받아 압출을 풀고 features, plugins 폴더를 eclipse가 설된 폴더에 복사해 넣는다. 그러면 설치 끝.


1. log4j.xml 파일 만들기, library 파일 lib 폴더에 넣기(하이버네이트와 스프링을 사용하기 위한 기본적인 라이브러리들)



2. hibernate.cfg.xml 파일 만들기

- WEB-INF 폴더에서 새로운 파일 만들기를 클릭하여 Hibernate Configuration 파일을 선택한다.(하이버네이트 툴이 설취되어 있어야만 나타난다.)


- 파일이름 그대로 두고 다음.


- 자신에 맞는 DB를 선택, 설정 하고 넥스트(XE는 오라클 10g EX버전 ) 아래 Create a console configuration 을 체크한다.


- 이 부분은 하이버네이트 perspective 에서 만들 수 있지만 여기서 하면 한번에 다 만들 수 있다.(위에서 Create a console configuration  체크를 해야지만 된다.)


- 그러면 hibernate.cfg.xml 파일이 만들어 진 것을 볼 수 있다.


log4jdbc를 사용하기 위하여 아래와 같이 변경


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">net.sf.log4jdbc.DriverSpy</property>
        <property name="hibernate.connection.password">user01</property>
        <property name="hibernate.connection.url">jdbc:log4jdbc:oracle:thin:@localhost:1521:XE</property>       
        <property name="hibernate.connection.username">user01</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    </session-factory>
</hibernate-configuration>

- Hibernate perspective 로 이동


- 아래 그림과 같이 만들어 진 것을 볼 수 있다.


이제 부터 개발을 시작 한다.











전에 소개 했던 [Programming in Objective-C 2.0] 책에 대해서 좀더 자세히 소개 하기로 하겠습니다.(조금 더 보았기에...;;;)

(사진 출처 : 인사이트)

책을 다 보고 이야기 하는게 제일 좋겠지만, 다른 책으로 넘어가고자 해서 남깁니다.(그래도 꾸준히 볼 겁니다.)

인사이트에서 번역본이 나왔습니다. 제가 가입한 모 카페에서 쓰레기 취급을 받긴 했지만;;;;

아마존에서는 그래도 평이 좋은 책입니다. 그래서 보기 시작한 책이기도 하고요.(평이 안 좋은 글에 저자가 직접 댓글을 남기기도 하였습니다.ㅎㅎ)

번역도 괜찮습니다. '이렇게 번역했네?' 라는 부분도 있지만, 이해도 잘 가고 괜찮습니다.(다른 정말 쓰레기 취급받는 번역서는 아닙니다. 저의 짧은 영어 실력으로 말하기에 민망하지만.ㅋ)

아쉬운 점은, 용어에 대한 설명을 추가적으로 집어넣었으면 더 좋았을 거 갔다는 생각이 듭니다.

이 책을 한마디로 말하자면 '처음 프로그래밍을 배우시는 분이, 처음으로 하는 언어가 Objective-C 일 경우'에 가장 적합한 책인 거 같습니다.

책 처음에도 나오는 말처럼 Objective-C를 배우기 위해 절차지향 언어인 C를 배울 필요 없이, 이 책으로 바로 공부할 수 있게 만들었다고 나옵니다.

그리고 책 내용에도 for 문이나 while 문, C에 대한 내용도 나옵니다.

다른 언어에 능통하시다면 굳이 저 부분을 보지 않아도 될 것입니다. 그래서 C, C++, JAVA를 해오셨던 분이 보신다면 지루할 수 있는 책입니다.

하지만, 처음 언어를 배우고 Objective-C에 대해 자세히 알고 싶으시다면, 지금까지 나온 책 중에서 이 책이 가장 좋은 것 같습니다.

책도 좀 두껍습니다. 맘만 먹고 보면 금방 보겠지만 쉽지 않더군요.ㅎㅎ;;(Beginning Oracle 보다 야는 아니지만ㅎㅎ)

결론적으로 말씀드리면,

iPhone 개발을 하기 위해 Objective-C를 공부하고 싶으신데, 프로그래밍이 처음이시분에게 추천!

다만, 이거 한 권 본다고 iPhone 개발을 할 수 없다는 것! iPhone 관련 책을 같이 보는 것을 추천!

이상입니다.

※주의 : 개인차가 있으니 본인이 직접 보시고 판단하세요!
1. command + shift + 3 : 전체 화면 캡쳐.

2. command + shift + 4 : 마우스가 + 모양으로 바뀜. 마우스를 드래그 해서 원하는 부분만 캡쳐.

3. command + shift + 4, 그리고 space bar 를 클릭 : 마우스가 사진기 모양으로 변함. 원하는 윈도우 창에 갔다 놓고 클릭하면 원하는 윈도우 화면만 캡쳐.

* 추가로 : 윈도우상에서 Print Screen 하는 방법
전체 화면 캡쳐 : fn + Shift + F11
원하는 윈도우 창만 캡쳐 : fn + Shift + Alt + F11

'MacBook' 카테고리의 다른 글

MacBook에 바람입력기 설치하기.  (1) 2009.07.12
맥북 키스킨 만들기 일명 반창고 키스킨.  (1) 2009.07.10
그래픽 카드 드라이버를 제대로 설치했는데도 불구하고 Aero Peek가 제대로 동작하지 않는 경우가 발생했습니다.

작업 표시줄 및 시작 메뉴 속성을 보면(아래 작업표시줄에서 오른쪽 마우스 - 속성 클릭)

Aero Peek 부분에서 체크 부분을 클릭 할 수 없게 나타났습니다.(지금은 되는 상태입니다.)




처음에는 그래픽 카드 드라이버 문제인줄 알고 엄청 삽질 했다는...;;;

해결 방법은 간단 합니다.

Windows 체험 지수를 체크하면 됩니다.;;;;(도데체 이걸 왜 해야하는지ㅡㅡㅋ)

제어판 - 시스템 항목으로 가셔서 하시면 됩니다.

해결~!

struts1을 그대로 사용하는 것이 아니라 개발하기 좀 더 편한 방법으로 커스터마이징 해서 사용해본다.

1. lib 셋팅
생성한 프로젝트의 WEB-INF의 lib 폴더에 설정할 라이브러리 파일을 갖다 넣는다 : struts, log4j, struts-test, junit

- apache, sourceforge 사이트에서 각각 다운로드를 받는다.
Junit은 C:\eclipse\plugins\org.junit_3.8.2.v20090203-1005 에서 junit.jar  파일을 사용한다.

- struts의 lib 폴더안에 있는 라이브러리 파일을 사용한다.

- log4j는 라이브러리와 함께, log4j.properties나, log4j.xml 설정 파일을 src 폴더 아래에 넣는다.

- strutstest는 struts를 WAS를 띄우지 않고 테스트 하기 위해 필요하다. strutstest.jar 파일과 common-collection.jar 파일이 필요하다.



2. 서블릿 설정
web.xml 안에 서블릿을 설정한다.
- 다운 받아 압출을 해제한 struts 폴더 안에 struts-blank 안에 있는 web.xml 에서 복사하거나, Servlet을 하나 만들어서 web.xml 안에 생성하게 하고, 만든 Servlet은 삭제 한다.


/action -> *.do 바꾼다.



<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
 </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>


3. struts-config.xml 생성
struts-config.xml을 WEB-INF 아래 만들고 struts-blank 안에 있는 struts-config.xml 파일에서 dtd 설정을 복사해서 넣는다.

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "
http://struts.apache.org/dtds/struts-config_1_3.dtd">

나머지 설정(역시 struts-blank 참조)

<struts-config>
 <!-- 액션 폼 설정 파일 -->
 <form-beans>
 </form-beans>
 
 <!-- 공통 예외처리 -->
 <global-exceptions>
 </global-exceptions>
 
 <!-- 공통 링크 이동 처리 -->
 <global-forwards>
 </global-forwards>
 
 <!-- 액션 설정 -->
 <action-mappings>
 </action-mappings>
 
 <!-- 커스터마이징된 RequestProcessor -->
 <controller>
 </controller>
 
 <!-- 다국어 처리, 에러메시지 -->
 <!--  <message-resources parameter=""></message-resources>-->
 
 <!-- 외부 프레임웍, 라이브러리 연동 -->
 <!--  <plug-in className=""></plug-in> -->
 
</struts-config>



여기까지 작업을 하고, WAS를 띄워서 http://127.0.0.1:8081/struts1/*.do 해서 * 아무이름이나 넣고 접속이 되는지 확인한다. 500에러가 발생할 것이다. 그러면 성공.
그리고 struts-config.xml 에서 아래와 같이 설정하고

<action-mappings>
  <action path="/hello" forward="/hello.jsp"></action>
</action-mappings>


설정을 해주고 http://127.0.0.1:8081/struts1/hello.do 했을 때 hello.jsp 라고 뜨는지 확인한다.

log4j 설정을 해놨다면 콘솔창에 로그가 뜬다.

4. util 패키지 않에 기본적으로 구현할 Action을 추상 클래스로 만들어서 오버라이드 시킨다.
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public abstract class BasicAction extends Action {
 
protected static Logger logger = Logger.getLogger(BasicAction.class); //log4j 설정
 
 public ActionForward execute(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception{
  
  logger.info("action path" + request.getRequestURI()); //log4j 설정
  
  return executeAction(mapping, form, request,response);
  
 }
 protected abstract ActionForward executeAction(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception;
}

5. struts에서 기본적으로 CRUD가 나오면 DispatchAction을 사용한다.
action을 만들고 테스트 한다.

public class BbsAction extends DispatchAction {
 private static Logger logger = Logger.getLogger(BbsAction.class);
 
 public ActionForward add(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception{
  
   return null;
 }
 
}

- test 패키지에서 BbsTest.java를 만들어서 테스트 한다. strutstest는 가짜로 request, response를 만들어서 테스트 할 수 있게 해준다. 아래와 같이 작성 하고, Junit으로 테스트 한다.

import java.io.File;
import servletunit.struts.MockStrutsTestCase;
public class BbsTest extends MockStrutsTestCase {
  public void setUp() throws Exception{
   super.setUp();
   this.setContextDirectory(new File("WebContent")); //반드시 WebContent가 들어가야 한다. WebContent아래 설정 파일들을 불러 오기 위해
  }
 
  public void testAdd() throws Exception{
   this.setRequestPathInfo("/bbs");
    this.actionPerform();
  }
  
  }

6. ActionForm을 안잡고 하는 방법.
ActionForm을 사용 할 경우 상당한 노가다를 해야한다. 그래서 LazyValidatorForm을 사용한다.
이것의 단점은 파라미터 검증을 할 수 없다는 것이다.(그래서 commons의 validation을 적용해서 사용한다.)
ActionForm은 타입이 똑같아야 들어가지만, BeanUtils는 타입이 달라도 들어간다.

- BbsVO 작성

- struts-config.xml 에서 추가.
 <form-beans>
  <form-bean name="lazyForm" type="org.apache.struts.validator.LazyValidatorForm"></form-bean>
 </form-beans>


<action path="/bbs"
 type="org.bnk.bbs.BbsAction"
 parameter="method"
 name="lazyForm"
 validate="false"></action> <!-- 검증을 할 수 없으므로 false -->

- BbsAction 추가

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.validator.LazyValidatorForm;
import org.bnk.bbs.vo.BbsCriteria;
import org.bnk.bbs.vo.BbsVO;
import org.bnk.util.VODisplayer;

public class BbsAction extends DispatchAction {
 private static Logger logger = Logger.getLogger(BbsAction.class);
 
 public ActionForward add(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception{
  
  LazyValidatorForm lazyForm = (LazyValidatorForm) form;
  
  BbsVO vo = new BbsVO();
  
  BeanUtils.copyProperties(vo, lazyForm);
  
  logger.info(VODisplayer.display(vo));
  
  return null;
 }
 
 public ActionForward update(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception{
  
  logger.info("update.......");
  return null;
 }
 public ActionForward list(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)throws Exception{
  
  logger.info("list.......");
  
  LazyValidatorForm lazyForm =
   (LazyValidatorForm)form;
  
  BbsCriteria cri = new BbsCriteria();
  BeanUtils.copyProperties(cri, lazyForm);
  
  logger.info(VODisplayer.display(cri));
  
  return null;
 }
}

- BbsTest 에서 Junit 으로 테스트

import java.io.File;
import servletunit.struts.MockStrutsTestCase;
public class BbsTest extends MockStrutsTestCase {
  public void setUp() throws Exception{
   super.setUp();
   this.setContextDirectory(new File("WebContent"));
  }
 
  public void testAdd() throws Exception{
   this.setRequestPathInfo("/bbs");
   request.addParameter("method", "add");
  
   request.addParameter("title", "게시물제목");
   request.addParameter("content", "게시물내용");
   request.addParameter("writer", "작성자");  
  
   this.actionPerform();
  }
 
  public void testList()throws Exception{
   this.setRequestPathInfo("/bbs");
   request.addParameter("method", "list");
   
   request.addParameter("pageNo", "5");
   request.addParameter("keyword", "워드");
   request.addParameter("type", "title");
   this.actionPerform();
  }
}

7. BbsCriteria.java 를 만들어서 파라미터를 수집한다.
LazyValidatorForm은 파라미터를 수집한다. 그래서 페이징 할 때, 파라미터를 던지지 말고 객체를 던져서 사용한다. 만약에 파라미터가 변경이 된다면 다 고쳐야 하지만, 이렇게 따로 만들어 놓으면 여기만 고치면 된다.

- BbsTest에서 testList() 로 테스트 한다.

기본 적으로 이렇게 만들어서 개발을 하고, 여기다가 화면을 붙이면 개발 끝~

'FrameWork > Struts1' 카테고리의 다른 글

Struts1 FileDownload  (0) 2009.08.18
Struts1 fileUpload  (0) 2009.08.18
Struts1의 Action 4  (0) 2009.08.16
Struts1의 Action 3  (0) 2009.08.16
Struts1의 Action 2  (0) 2009.08.12
Struts1의 Action 1  (0) 2009.07.27
Struts1에서 ActionForm 사용하기.  (0) 2009.07.25
Struts1 에서 iBatis 사용하기  (0) 2009.07.05
Struts 1 을 사용하여 간단한 회원가입, 리스트 불러오기.  (0) 2009.07.05
Struts1 개발환경 설정.  (0) 2009.07.05

+ Recent posts