2013년 8월 11일 일요일

Struts1.3.8의 간단한 예제(두수의 합 구하는 예제)

Struts1.3.8의 간단한 예제(두수의 합 구하는 예제)

이번 예제는 간단한 구조를 가지는 프로그램이지만 스트럿츠의 흐름을 이해할 수 있는 예제 입니다. (두수를 입력받아 두수의 합을 구하는 Struts Simplr 예제)

add.jsp에서 사용자가 두수를 입력한 후 submit 버튼을 누르면 ActionServlet이 호출된 후 AddAction을 호출하여 비즈니스 로직(두수를 더함)을 처리 합니다. 그런 다음 처리 결과를 result.jsp로 포워드 시키는 예제 입니다. 이때 사용자가 입력되는 두수를 저장하기 위해 AddForm이라는 폼빈을 사용했습니다.

이 예제를 실행하기 위해서는 http://struts.apache.org 에 가서 struts 최신 버전인 1.3.8을 다운받습니다. 압축 받은 파일을 풀면 lib 폴더에 jar 파일이 있는데 jar 파일은 context의 WEB-INF/lib에 위치시키고 Java Build Path에 “Add Jars” 하여 라이브러리에 추가 합니다. . (전 이클립스를 사용했으며 struts-test라는 Tomcat 프로젝트를 만들었습니다)

 

1. /WEB-INF/struts_config.xml

--------------------
struts-config.xml
--------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
 
 
    <!-- ========== Form Bean Definitions ========== -->
    <form-beans>
        <form-bean name="addForm" type="add.model.AddForm"></form-bean>       
    </form-beans>
   
    <!-- ========== Global Forward Definitions ======= -->
    <global-forwards>
        <forward name="success" path="/result.jsp" />       
    </global-forwards>
   
   
   
    <!-- ========== Action Mapping Definitions =========== -->
    <action-mappings>
        <action         
            path="/FirstAction"
            type="add.action.AddAction"
            name="addForm"                       
            validate="false"
        >
        </action>       
    </action-mappings>   


</struts-config>
2. /WEB-INF/web.xml

--------------------
web.xml
--------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
        <!-- ActionServlet Config ==-->
        <servlet>
                <servlet-name>action</servlet-name>
                <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
                <init-param>
                        <param-name>config</param-name>
                        <param-value>/WEB-INF/struts-config.xml</param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>               
        </servlet>
       
       
        <!-- ActionServlet Mapping ===========-->
        <servlet-mapping>
                <servlet-name>action</servlet-name>
                <url-pattern>*.do</url-pattern>
        </servlet-mapping>
           
</web-app>





3. JSP 작성하기

-----------------------------------------------
add.jsp (struts-test 컨텍스트의 루트에 저장)
-----------------------------------------------

최초 실행 시 add.jsp를 localhost/struts-test/add.jsp 라고 호출 합니다.

<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>    <html:form action="/FirstAction">
    <input type=text name=op1>+<input type=text name=op2>=
    <input type=submit>
</html:form>



-----------------------
result.jsp
-----------------------

결과가 포워드 되는 페이지 입니다.

<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
합은 : <c:out value="${requestScope.resultvo.result}"/>


4. struts Action, ActionForm 작성 하기

------------------------
AddAction.java
------------------------

사용자가 submit 버튼을 눌렀을 때 호출되는 action 클래스 입니다.

WEB-INF/src/add/action폴더에 작성 합니다.

package add.action;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.*;
import add.model.AddForm;
import add.model.AddResultVO;

public class AddAction extends Action {
    public ActionForward execute(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest req,
                                HttpServletResponse res) {
        int op1  = ((AddForm)form).getOp1();
        int op2  = ((AddForm)form).getOp2();
       
        int result = op1 + op2;
       
        AddResultVO vo = new AddResultVO();
        vo.setResult(result);             
       
        req.setAttribute("resultvo", vo);
       
//System.out.println(vo.getResult());       
       
        return (mapping.findForward("success"));
               
    }     
}



-----------------
AddForm.java
-----------------

사용자의 HTML Input Form과 형태를 같이 하며 ActionServlet을 통해 사용자의 입력 값들이 자동으로 저장되는 AddForm 입니다.

WEB-INF/src/add/model에서 작성 합니다.

package add.model;
import org.apache.struts.action.ActionForm;;

public class AddForm extends ActionForm {
        protected int op1;
        protected int op2;
       
        public int getOp1() {
                return op1;
        }
       
        public int getOp2() {
                return op2;
        }
       
        public void setOp1(int op1) {
                this.op1 = op1;
        }
       
        public void setOp2(int op2) {
                this.op2 = op2;
        }       
}




5. Value Object(VO) 작성하기

---------------------
AddResultVO.java
---------------------

결과값을 저장하여 request에 AddResultVO를 저장하여 result.jsp가 나중에 이 값을 이용하여 화면에 출력을 할 수 있도록 합니다.

WEB-INF/src/add/model에서 작성 합니다.

package add.model;

public class AddResultVO {
        private int result;
     
     
        public int getResult() {
                return result;
        }
             
        public void setResult(int result) {
                this.result = result;
        }       
}

댓글 없음:

댓글 쓰기