본문 바로가기

Programing/Struts

Struts2프레임워크 강좌1

Struts2에 대하여...


1) Struts2의 배경 

2000년도에 아파치 재단에 기증되었으며, 대표적인 웹 애플리케이션 개발 프레임워크로 거듭났다.

웹 개발의 가이드 역할이라 할 수 있고, POJO(Plain Old Java Object)기반MVC 패턴 적용 , XML 기반의 환경 설정 ,

태그 라이브러리 지원 ,국제화 지원

다양한 유틸리티들을 제공 (유효성 검사, 레이아웃, 프리젠테이션 객체 지원,… ) 하고 있다.

 

그리고 Struts2환경은 웹워크단순함 세련미, 또한 개발 툴 친화성의 장점들이 스트럿츠를 만나면서 이루어진

유용하면서 강한 프레임워크다.

 

사용자 삽입 이미지



2) Struts2의 구성.

사용자 삽입 이미지


 3) Struts2의 특징

      완전히 새로운 프레임워크.

      스트럿츠 때와는 다른 웹워크2MVC 아키텍처 채용.

      직관적인 개발

      POJO  기반 액션(Action).

      제로 컨피규레이션 지향

      기본 값 지원으로 많은 설정 생략 가능.

      어노테이션 사용으로 설정 파일에서 설정 생략.

      신속한 리로딩

      변경된 환경설정 파일의 내용을 웹 컨테이너 재시작 없이 리로드.

      POJO 액션, POJO

      프레임워크에 종속되지 않는다.

      Mock 객체에 의존하지 않고 손쉽게 테스트 가능하며 별도의 폼 빈이 필요 없다.

      손쉬운 Ajax Asynchronous xxxxxxJavascript And Xml 구현

      Dojo 프레임워크 포함.

      ajax 테마 지원 태그

      다양한 표현식 언어 EL Expression! Language 지원

      JSTL을 사용 가능.

      OGNL Object Graph Navigation Language 지원.

      다양한 리절트 타입의 지원 및 프로파일링

      JSP 외에 프리마커 Freemarker, 밸로시티 Velocity 등의 사용 가능.

      요청 처리 과정 프로파일링.

      의존성 주입 지원

      구글 주스 Google Guice  프레임워크 사용하여 프레임워크 내부 핵심 객체의 라이프 사이클 관리.


 자~ 그럼 환경설정 부터 해서 간단한 예제로 익혀보자!!

환경설정

http://struts.apache.org으로 접속하여 struts-2.0.11.2-all.zip 다운 받자!

압축을 해제하여 jar파일 XXX-plugin-XXX.jar tiles-XXX.jar파일들을 제외한 나머지 jar파일 모두를 현재 사용되는 Context lib 복사해 놓는다.

다음은 넷빈에서 라이브러리가 등록된 모습이다.

 

사용자 삽입 이미지

 

흐름은 나중에 파악하기로 하고, 우선 간편한 예제 하나만 보자!

환경파일 – web.xml(사용중인 Context/WB_INF에 있음)

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

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <session-config>

        <session-timeout>

            30

        </session-timeout>

    </session-config>

    <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

    </welcome-file-list>

       

    <filter>

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

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

        <init-param>

            <param-name>actionPackages</param-name>

            <param-value>test16</param-value>

        </init-param>

    </filter>

 

    <filter-mapping>

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

        <url-pattern>/*</url-pattern>

    </filter-mapping>   

   

</web-app>

 

[src/struts.properties]문서 작성

struts.i18n.reload=true

struts.devMode=true

struts.configuration.xml.reload=true

struts.continuations.package = org.apache.struts2.showcase

struts.custom.i18n.resources=globalMessages

struts.action.extension=action

struts.url.http.port = 8084

#struts.freemarker.manager.classname=customFreemarkerManager

struts.serve.static=true

struts.serve.static.browserCache=false

struts.multipart.maxSize=2097252

#struts.objectFactory=org.apache.struts2.spring.StrutsSpringObjectFactory

 

[src/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" namespace="" >       

        <global-results>

            <result name="error">/test20_Exception/error.jsp</result>

        </global-results>

       

        <global-exception-mappings/>

       

          <action name="test" class="test1.TestAction1" >

               <result>/test1.jsp</result>

          </action>

</package>       

</struts>

 

여기서 이젠 중요한 Action객체를 생성해야 한다. Action객체를 생성하는 방법에는 3가지 방법이 있다.

1)   POJO 기반 객체(보통의 기존 자바 객체라는 뜻)

2)   com.opensymphony.xwork2.Action인터페이스를 구현한 클래스

3)   com.opensymphony.xwork2.ActionSupport클래스를 상속받는 방법

 

우선 POJO기반으로 작업해 보자! src/test1/TestAction

package test1;

public class TestAction1 {

    private String message;

    public String execute() throws Exception{

            message = "스트럿츠2  --~~~!";

            return "success";

    }

    public String getMessage() {

            return message;

    }

    public void setMessage(String message) {

            this.message = message;

    }

}

 

이제 result 페이지를 작성해 보자!! web/test1.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

   "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib prefix="s"  uri="/struts-tags"%>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>JSP Page</title>

    </head>

    <body>

       <s:property value="message"/>

    </body>

</html>

[결과화면] 

사용자 삽입 이미지



struts.xml에서 설정된 액션의 이름은 사용자가 요청하는 URL로 쓰인다.

사용자 삽입 이미지


이렇게 해서 간단한 움직임을 알아보았다!  다음 시간에는

앞서 얘기한 중요한 액션 객체를 만드는 방법 3가지를 모두 알아보도록 하자!(많이 중요하겠죠?)