Struts 1 - 기본

Published on: 2009. 6. 25. 16:10 by louis.dev



기본 흐름

Client는 주소창에 register.do를 입력을 하면 맨처음으로 web.xml을 로딩한다.

web.xml은

<servlet>
   <servlet-name>action</servlet-name> <!-- 아무이름이나 하면 된다. -->
   <servlet-class>  <!-- 클래스 지정 -->
    org.apache.struts.action.ActionServlet
   </servlet-class>
 
 <init-param> <!-- struct-config.xml 설정 -->
  <param-name>config</param-name> <!-- 이름은 아무거나 -->
  <param-value>/WEB-INF/struts-config.xml</param-value>  <!-- /WEB-INF/(기본베이스 - 다른폴더일때는 경로를 설정해주어야 함)폴더 안에 struts-config.xml파일 위치 지정  - 여기까지 작성후 struts-config.xml파일을 생성-->
 </init-param>
  </servlet>
 
  <servlet-mapping> <!-- url 패턴 설정 -->
   <servlet-name>action</servlet-name> <!-- *.do로 들어오면 servlet-name이 action 실행 -->
   <url-pattern>*.do</url-pattern>
  </servlet-mapping>

다음과 같은 코드로 되어있다.
servlet mapping을 통해서 *.do로 들어오는 모든것들을  ActionServlet을 로드하고 struts-config.xml을 로딩하게 된다.

struts-config.xml은 로딩을 통해서 action 태그에 있는 내용을 로드하게 된다.

ActionServlet은 Servlet에서 init() 메소드의 역할을 하고 RequestProcess 는 service()메소드의 역할을 하게 된다.

RequestProcess에서 RequestProcessor class를 상속받아 다양한 method를 override해서 구현 할 수 있는데

위에 말한 Servlet의 Service() 메소드 역할을 하는것들이 RequestProcessor class의 process*()메소드 이다.

RequestProcessor class에서 process메소드 들을 상속하지 않으면 기본적인 메소드가 실행 된다.

ActionServlet에서 입력된 데이터들은 RequestProcess로 넘어가기 전에 RequestProcessor class 의 processPreprocess()를 오버라이드 함으로서 한글 인코딩 설정을 할 수 있다.

그리고 RequestProcessor class를 선언하고 사용할 때는 반드시 struts-config.xml 파일에서 다음과 같이 선언 해 주어야 한다.

<controller processorClass="com.myhome.info.processor.InfoRequestProcessor" />    //다읨의 경로는 패키지 경로와 클래스 파일 이름이다.

RequestProcess로 넘어온 데이터는 ActionForm에 저장되어 Action class를 상속받은 RegistAction class의 execute() 메소드에서 사용 할 수 있다.

RegistAction class 의 비지니스 로직을 통해 로직을 수행한 후 ActionForward를 통해 ViewPage로 이동을 돕는다. 이 결과값이 다시 RequestProcess로 돌아와 Client에서 뿌려지게 된다.