Struts2 : JSP보다 어렵지만 능률적


처음요청을받는 필터 FilterDispatcher
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>


struts.xml : 어플리케이션의 모든 제어에 대한 설정, 클래스 패스의 루트에 위치, struts.xml 파일은 내부적으로 디폴트 설정 파일을 포함. 
                   디폴트 설정파일에는 디폴트 패키지가 있고 패키지는 상속할 수 있다.

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

   "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

   <package name="default" extends="struts-default">

     <!-- 기본연결 start -->

              <!-- helloWorld: 요청 url,  호출되는 class:dr.struts2.ch01.action.HelloWorld-->

       <action name="helloWorld" class="dr.struts2.ch01.action.HelloWorld">

               <!-- 출력되는 /hello.jsp -->

        <result name="success">/hello.jsp</result>

       </action>

   </package>

<!-- 기본연결 end -->

</struts>


P53

액션 클래스 작성 방법

1. POJO 형태로 작성 : 평범한 옛 자바 오브젝트 : 복잡해진 상속,구현 관계를 깨버리고  편의성 생산성을 회복하기위한 방법
2. Action 인터페이스로 구현하여 작성 : struts.xml에서 액션과 class를 맵핑 success같은 반환타입에따라 jsp선택이동 
3. ActionSupport 클래스를 확장하여 작성 :      

-ActionSupport 클래스는 Validateable 인터페이스의 validate() 메서드와, ValidationAware인터페이스의 addFieldError()메소드와 함께 사용하여 유효성을 검사하는 기능을 제공한다 . 

-액션을 Actionsupport클래스을 확장하여 유효성 검사







include 요소 설정 파일 관리하기 P70

여러개의 설정파일을 만들어서 나눠사용 가능

struts.xml
    <include file="struts-ch4.xml" />
    <include file="struts-ch5.xml" />

패키지(package)

패키지는 result-types, interceptors, action 등을 논리적인 단위로 그룹핑하는데 사용한다.

1) 패키지에 들어가는 엘리먼트 순서

result-types
interceptors
default-interceptor-ref
default-action-ref
global-results
global-exception-mappings
action

2) 패키지 속성
속성필수설명
name
(식별요소)
필수필수 속성. 패키지를 구분하는 키. 패키지의 name은 유일해야 함. 다른 패키지가 이 패키지를 상속할 때 이 이름을 사용한다.
extends
(다른패키지
상속할때)
선택다른 패키지를 상속하고자 할 때 다른 패키지의 name을 지정한다. 다른 패키지를 상속하면 그 패키지 내의 설정들을 그대로 이어 받는다. 상위 패키지의 설정을 다시 정의하면 그 설정을 오버라이드 하게 된다.
namespace

선택네임스페이스. 패키지 내의 액션들을 URL에 매핑할 때 이 네임스페이스가 URL의 중간 경로가 된다
abstract선택패키지를 추상 패키지로 만든다. 추상 패키지에는 액션 설정이 없다. 다른 패키지에 상속하는 용도


네임스페이스

/StrutsMain/helloWorld.action
/StrutsMain/ch04/helloWorld.action
           (네임 스페이스지정시 URL의 중간경로 , ch04 폴더:가상일수도 있고 만들어줄수도있음)

액션없이 설정만으로 jsp연결

루트네임 스페이스 : 네임 스페이스 사용안할시
명시적 루트네임스페이스 : namespace="/"

디폴트 네임스페이스 : 명시안하거나
extends="struts-default"
명시적으로 명시 namespace=""


많이 사용하는 방법
<!-- 3.네임스페이스 사용 -->
<!-- 4.ActionSupport를 이용한 jsp 호출 -->
<!-- 5. 디폴트 액션  -->


01 Action 인터페이스 이해하기

execute() 메소드 : 액션 클래스가 인스턴스화되면서 자동 호출되는 기본 액션 메소드
리턴 코드
리턴코드설명
ERROR액션 실행에 실패하여 에러 페이지로 돌아감
INPUT입력 값이 부족하거나 문제가 있어 입력 페이지로 돌아감
LOGIN로그인을 하지 않아서 액션을 실행할 수 없으므로 로그인 페이지로 돌아감
NONE액션이 성공적으로 실행은 되었지만 화면을 보여주지 않음
SUCCESS액션이 성공적으로 실행되어 결과 화면을 사용자에게 보여줌


생성자, getter,setter, toString



도메인 오브젝트 사용1,2,3



ActionSupport (prepare,medelDriven,params) 클래스에 대한 이해

-ActionSupport 클래스는 Validateable 인터페이스의 validate() 메서드와, ValidationAware인터페이스의 addFieldError()메소드와 함께 사용하여유효성을 검사하는 기능을 제공한다 . 

-액션을 Actionsupport클래스을 확장하여 유효성 검사


ModelDriven

 - 도메인 오브젝트에 접근하기 위한 방법으로 ModelDriven 액션을 사용하는 방법이 있다. 

 - ModelDriven 액션 클래스를 생성하기 위해서는 ModelDriven 인터페이스를 구현해야 한다. 

 - ModelDriven 인터페이스를 API document에서 찾아보도록 한다.


class: 인터페이스를 구현한 클래스에서는 추상메소드를 오버라이딩해서 구현


@Override

public Object getModel(){

  return user; : 생성된 객체를  value stack 상단에 올림

}


struts.xml:

<interceptor-ref name="modelDriven"/>


userRegForm3.jsp: 

<input type="text" name="userId">



Preparable


 - Preparable 인터페이스는 액션의 메소드 execute를 실행하기 전에 다른 로직을 실행하고 싶을때 사용한다. 

 - Preparable인터페이스 API document에서 찾아보도록한다


class: 인터페이스를 구현한 클래스에서는 추상메소드를 오버라이딩해서 구현


@Override

public void bprepare() thorws Exception{

   user=new User(); :객체를 생성

}


struts.xml:

<interceptor-ref name="prepare"/>



유효성검사


extends ActionSupport


@Override

public void validate()


<action name="helloWorld5" class="com.ch4.action.HelloWorld5">
            <interceptor-ref name="params"/>
            <interceptor-ref name="workflow"/>
            <result name="input">name5.jsp</result>
            <result name ="success">hello.jsp</result>
</action>


====================================프로젝트========================================
Java Resources
           src
                 com.ch4.action
                       CreateUser (도메인 오브젝트 사용1) : JSP적 
                       CreateUser2 (도메인 오브젝트 사용2) : Struts2 user.프로퍼티
                       CreateUser3 (도메인 오브젝트 사용3)
                       HelloWorld (네임스페이스)
                       HelloWorld3 (파라미터값을 전달받는 예제)
                       HelloWorld4 (유효성체크)
                       HelloWorld5 (ActionSupport 상속 유효성 체크)

                 com.ch4.dao
                       UserDao (도메인 오브젝트 사용1)

                 com.ch4.domain
                       User (도메인 오브젝트 사용1)  

                 com.ch5.interceptor
                       TimerInterceptor (커스텀 인터셉터)

                 tutorial
                       HelloWorld (첫예제)
                       HelloWorld02 (POJO 형태)
                 struts-ch5.xml
                 struts-ch4.xml 
                 struts.xml (include 할것)

WebContent
         ch4
                 createSuccess.jsp (도메인 오브젝트 사용1,2,3)
                 hello.jsp (네임스페이스)
                 name3.jsp (파라미터값을 전달받는 예제)
                 name4.jsp (유효성체크)
                 name5.jsp (ActionSupport 상속 유효성 체크)
                 userForm.jsp (도메인 오브젝트 사용1): JSP적 
                 userForm2.jsp (도메인 오브젝트 사용2) : Struts2 user.프로퍼티
                 userForm3.jsp (도메인 오브젝트 사용3)

         WEB-INF
                 web.xml
         a.jsp (와일드 카드를 사용해서 출력하기)
         hello.jsp (액션없이 action출력하기)
         helloWorld.jsp (첫예제)
         helloWorld02.jsp (POJO 형태)
         index.html
         some.jsp (디폴트 액션 연습 500에러)

====================================프로젝트========================================


====================================코드========================================
Java Resources
           src
                 com.ch4.action
                       CreateUser (도메인 오브젝트 사용1) : JSP적

'Struts2 > 기본(Oracle)' 카테고리의 다른 글

struts2 ActionSupport를 이용한 JSP 호출 (form만 요청할페이지에 사용)  (0) 2012.06.21
struts2 POJO형태의 액션 만들기  (0) 2012.06.20
struts2 기본예제  (0) 2012.06.20
struts2 설정  (0) 2012.06.20
struts2 란?  (0) 2012.06.20

+ Recent posts