본문 바로가기
이카루스의 날개/JSP

초보을 위한 스트럿츠(struts) 기초 강좌 - 2부

by 윙혼 2007. 3. 6.
출처 : http://www.jspclub.co.kr

초보을 위한 스트럿츠(struts) 기초 강좌 - 2부


# 강좌를 시작하며 #

지난 1부 강좌에서는 struts 의 Action Mapping 의 흐름을 알아봤다.
이번에는 controller 에 대해 알아본다. 1부 강좌를 성공적으로 마친 분이라면
쉽게 따라 할수 있을것이다.
1부강좌를 따라하지 않는 분이라면 먼저 1부를 따라한다.
http://www.jspclub.co.kr/board/view.jsp?div=study&no=927&npage=1



# controller #
RequestProcessor 란?
MVC 모델의 C에 해당되는 controller를 struts 에서도 쉽게 쓸수 있다.
이에 해당되는 클레스는 RequestProcessor 이다

왜 RequestProcessor 가 필요한가?
1부에서 해본 struts는 하나의 actiion 에 Action Class가 mapping되고 거기에 관련 jsp
로 forward 시켜주는것을 배웠다. actiion이 많아 지면 그만큼Action Class도 많아진다.
근데 만약에 모든 Action Class에 request에 한글 인코딩을 해줘야 한다고 생각해보자.
수많은 Action Class를 모두 추가 할것인가? 하지만 걱정할것 없다. 모든 Action Class가
실행되기전 RequestProcessor 을 거치기 때문이다.이처럼 모든 Action Class가 실행되기전
해야할 작업에대해 RequestProcessor을 상속받아서 하면된다.



# WEB-INF/struts-config.xml 에 controller 설정 부분 추가 #
1부서 사용했던 struts-config.xml 에 controller 부분을 추가 한다.processorClass을 정의 하는 부분이다
<?xml  version="1.0"  encoding="UTF-8"?>  

<!DOCTYPE  struts-config  PUBLIC    
"-//Apache  Software  Foundation//DTD  Struts  Configuration  1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">  
<struts-config>  
    <action-mappings>
      <action  path="/Index"  type="examples.IndexAction">
                <forward  name="success"  path="/index.jsp"  />
        </action>
      </action-mappings>
   
    <controller>
      <set-property property="processorClass"
            value="controller.MyRequestProcessor"/>
    </controller>

</struts-config>




# controller 페키지 추가 #
controller라는 패키지를 만든다 .




# MyRequestProcessor class 추가 #




# MyRequestProcessor 의 내용 #
RequestProcessor 을 상속받은 MyRequestProcessor는 모든 Action 이 실행되기전
호출되는 processPreprocess 메소드안에 한글인코딩 부분을 추가한다.
package controller;

import javax.servlet.http.*;
import org.apache.struts.action.*;

public class MyRequestProcessor extends RequestProcessor{

  protected boolean processPreprocess(HttpServletRequest request,
      HttpServletResponse response){
   
    try{
      request.setCharacterEncoding("euc-kr");
    }catch(Exception e){}
   
    System.out.println("모든 Action이 실행되기 전에 한글 인코딩을 해줬습니다.");
   

    return true;
  }

   }




# 추가된 파일들 #




# 톰켓 서버 시작 #



# 결과 확인 #
"나의 첫번째 struts 성공" 이란 글씨가 보이면 성공이다.



# MyRequestProcessor가 실행되었는지 확인 #
console 창에 "모든 Action이 실행되기 전에 한글 인코딩을 해줬습니다." 이란 글씨가 보이면 성공이다.


댓글