struts.xml

<!-- 2.POJO 형태의 ACTION -->
	<package name="pojo" extends="struts-default">
		<action name="helloWorld02" class="tutorial.HelloWorld02">
			<result name="success">/helloWorld02.jsp</result>
		</action>
	</package>

HelloWorld02.java

package tutorial;

public class HelloWorld02 {
	private String message;
	
	//getMessage()역할은 request.setAttribute("message",message);
	public String getMessage(){
		return message;
	}
	
	public String execute() throws Exception{
		message = "POJO 형태의 액션 만들기";
		
		return "success";
	}
}

helloWorld02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>POJO 형태의 액션 연습</title>
</head>
<body>
${message}
</body>
</html>

implements Action이 없으면

강요되는 부분이 없어서 에러날 확률이 있다

그냥 작동된다는것만 확인 하자




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
HelloWorld
package tutorial;

import com.opensymphony.xwork2.Action;

public class HelloWorld  implements Action{

    private String message;
    
    public String getMessage(){
        return message;
    }
    
    @Override
    public String execute() throws Exception {
        
        message ="Hello, World";
        
        return SUCCESS;
    }
}

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


<struts>
    <!-- 1.기본연결 -->
    <package name="tutorial" extends="struts-default">
        <action name="helloWorld" class="tutorial.HelloWorld">
            <result name="success">/helloWorld.jsp</result>
        </action>
    </package>
</struts>

web.xml
<!--?xml version="1.0" encoding="UTF-8"?-->
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>struts2Main</display-name>
    <!-- 스트럿츠는 필터가 서블릿보다 먼저 동작하여 요청을 받는다  -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
            <param-name>struts.i18n.encoding</param-name>
            <param-value>utf-8</param-value>
           </init-param> 
    </filter>
    
    <!-- 모든요청을 필터가 받는다. -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>
helloWorld.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>테스트</title>
</head>
<body>
${message}
</body>
</html>



'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

work_struts


새프로젝트 만들기 


톰켓서버설정














인코딩정보 4군대













struts import 하기















요소역할비고
필터URL의 확장자가 action이면 FilterDispatcher에 의해서 액션을 실행하기 위한 환경을 구축하도록 한다.web.xml
액션리절트가 필요로 하는 메시지를 제공한다.HelloStruts.java
매핑액션실행 후 결과를 처리할 리절트와의 매핑을 설정한다.struts.xml
리절트메시지를 출력하기 위한 화면 처리를 담당한다.helloStruts.jsp



 web.xml : 웹 어플리케이션 Deployment Descriptor(DD), Struts2 필터 등록

<!-- Struts2 dispatcher start -->

 <filter>

                 <filter-name>struts2</filter-name>

                 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

                 <init-param>

                          <param-name>struts.i18n.encoding</param-name>

                          <param-value>utf-8</param-value>

                 </init-param>

        </filter>

        <filter-mapping>

                 <filter-name>struts2</filter-name>

                 <url-pattern>*.action</url-pattern>

        </filter-mapping>

        <!-- Struts2 dispatcher end -->



'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



프레임워크은 ‘핵심적인 클래스와 인터페이스, 정보파일(XML)을 미리 모아놓은 집합 또는 라이브러리’라고 할 수 있다. 

1) 스트럿츠 프레임워크는 Jakarta프로젝트에서 개발, 오픈 소스의 웹 어플리케이션 프레임워크.
2) 스트럿츠는 MVC 패턴의 프레임워크.
3) 스트럿츠2는 스트럿츠와 웹워크가 결합한 형태

4) 다운로드와 설치 : http://struts.apache.org 에 접속 최신 버전 다운로드




<스트럿츠2의 특징>

1) 완전히 새로운 프레임워크. 
    스트럿츠1 때와는 다른 웹워크의 MVC 아키텍처 채용
2)  직관적인 개발. 
    POJO 기반 액션(Action)
3)  Zero Configuration 지향. 
    기본 값 지원으로 많은 설정 생략 가능. 
    어노테이션 사용으로 설정 파일에서 설정 생략
4)  신속한 리로딩. 
    변경된 환경 설정 파일의 내용을 웹 컨테이너 재시작 없이 리로드
5) POJO 액션, POJO 폼
   프레임워크에 종속되지 않음
6) 손쉬운 Ajax(Asynchronous Javascript And XML)구현
    Dojo 프레임워크 포함
    Ajax 테마 지원 태그
7)  다양한 표현식 언어 EL(Expression Language) 지원
     JSTL 사용 가능
     OGNL(Object Graph Navigation Language) 지원
8)  다양한 리절트 타입의 지원 및 프로파일링
     JSP 외의 프리마터(Freemarker), 밸로시티(Velocity) 등의 사용 가능




'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