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
액션 클래스 작성 방법
2. Action 인터페이스로 구현하여 작성 : struts.xml에서 액션과 class를 맵핑 success같은 반환타입에따라 jsp선택이동
3. ActionSupport 클래스를 확장하여 작성 :
-ActionSupport 클래스는 Validateable 인터페이스의 validate() 메서드와, ValidationAware인터페이스의 addFieldError()메소드와 함께 사용하여 유효성을 검사하는 기능을 제공한다 .
-액션을 Actionsupport클래스을 확장하여 유효성 검사
include 요소 설정 파일 관리하기 P70
여러개의 설정파일을 만들어서 나눠사용 가능
<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 폴더:가상일수도 있고 만들어줄수도있음)
루트네임 스페이스 : 네임 스페이스 사용안할시
명시적 루트네임스페이스 : 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 |