2013년 8월 11일 일요일

Struts2로 작성한 HelloWorld [Struts, Struts2, Struts Spring, StrutsFramework, Struts MVC, Struts게시판, 스프럿츠게시판, Struts Action, Struts DAO, struts교육, struts강좌, struts2교육, struts2강좌]

Struts2로 HelloWorld 작성하기! 


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  

Struts2에서는 HTML 폼 데이터를 특정 자바 클래스로 Submit 하는 데 이런 자바클래스를 Action이라고 하며 Action이 실행된 후 그 결과를 클라이언트 브라우저로 보내주어야 하는데 이때 사용되는 자원을 result라고 한다. 이러한 result는 일반적으로 JSP이지만 PDF나 엑셀파일들이 될 수도 있다.

1.        JDK, Tomcat 및 Eclipse, Tomcat Plug-In등의 설치는 이전 강좌를 참조하여 설치 바란다.
(c:\oraclejava\eclipse, c:\oraclejava\apache-tomcat-5.5.27 과 같이 설치)

 


2.        Struts 다운로드 및 설치

-        http://struts.apache.org에서 최신 버전(현재 2.0.14)을 다운 받는다. (Full Distribution을 다운받으면 예제 프로그램, 다큐먼트, 소스코드 모두를 받을 수 있다)

-        압축을 풀면 lib 디렉토리에 필요한 라이브러리가 있는데 다음과 같은 최소 라이브러리로 “HelloWorld”를 만들어 보기로 하자.

commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.14.jar
xwork-2.0.4.jar

이 파일은 작성할 웹 애플리케이션의 WEB-INF/lib에 복사하면 된다.

3.        Eclipse에서 struts2_helloworld라는 이름으로 Tomcat Project를 만들자.

 

작성 후 WEB-INF의 lib 디렉토리에 struts2의 lib의 디렉토리에서 필요한 jar 파일을 복사한 후 java build path의 library에 추가하자.

 

4.        먼저 요청을 처리하는 Action을 먼저 만들자.

Action은 Bean으로 getter를 통해 JSP 같은 곳에서 데이터를 읽을 수 있으며 setter를 통해 form 데이터 값을 Bean에 저장할 수 있다. 본 예제에서는 사용자가 hello.jsp의 화면에서 본인의 이름을 입력하면 setName(String name) 메소드를 통해 form 데이터를 전송 받고 getMsg() 메소드를 통해 JSP(result.jsp)에서 값을 읽을 수 있는 것이다.

사용자가 웹 화면에서 hello.action 이라는 요청을 보내면 struts.xml에 설정된 것처럼 해당 Action 클래스의 execute 메소드가 실행되며 “SUCCESS”를 리턴하게 된다. (struts.xml에 설정된 내용처럼 SUCCESS가 리턴 되었을 때는 result.jsp로 응답을 만들게 되는 것이다.)

[HelloWorldAction.java]

package hello;
import com.opensymphony.xwork2.Action;

public class HelloWorldAction implements Action{
        private String name;
        private String msg;

        public String getMsg() {
                return msg;
        }

        public void setName(String name) {
                this.name = name;
        }
       
        public String execute() throws Exception {
                msg = "Hello, " + name;
               
                return SUCCESS;
        }
       
       
}

5.        JSP 파일은 struts2_helloworld아래에 작성하자.

[hello.jsp]

<form action=/struts2_helloworld/hello.action>
Input Your Name : <input type=text name=name>
<input type=submit>
</form>

[result.jsp]

<h2>${msg}<h2>

6.        /WEB-INF/src아래 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="hello" extends="struts-default">
      <action name="hello" class="hello.HelloWorldAction">
        <result name="SUCCESS">/result.jsp</result>
      </action>
    </package>
</struts>


Struts.xml 파일은 이미 만들어진 Action과 result의 매핑을 하는 곳인데, 요청 URL과 액션을 매핑하고 Action과 result을 묶는 일을 한다. /WEB-INF/src에 작성하면 eclipse에서 /WEB-INF/classes로 옮겨준다.

위의 설정에서 action name이 URL인데 hello.jsp에서 사용자가 이름을 입력하면 Action을 호출하는 부분은 다음과 같다.

<form action=/struts2_helloworld/hello.action>

다음 class가 Action 클래스를 지정하며 result가  응답 페이지로 result.jsp 이다.

7.        /WEB-INF/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>Struts2 HelloWorld</display-name>

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

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>


이 web.xml은 struts2 filter을 등록하는 일을 하는데 /*의 의미는 모든 요청을 가로챈다는 뜻이다.

8.[결과확인]

브라우저의 URL창에 http://localhost:8080/struts2_helloworld/hello.jsp를 실행시키면 이름을 입력하라는 화면이 나타나며 이름 입력 후 SUBMIT 버튼을 누르면 Action파일이 실행되어 result.jsp로 결과가 나타난다.

댓글 없음:

댓글 쓰기