2013년 8월 8일 목요일

[오라클자바커뮤니티자바교육]struts simple example

Struts의 간단한 예제


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

이번 예제는 간단한 구조를 가지는 프로그램이지만 스트럿츠의 흐름을 이해할 수 있는 예제 입니다.

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

이 예제를 실행하기 위해서는 http://struts.apache.org 에 가서 struts 최신 버전인 1.2.4 또는 1.2.6을 다운받습니다. 압축 받은 파일을 풀면 lib 폴더에 jar 파일과 tld 파일이 있는데 jar 파일은 context의 WEB-INF/lib에 위치시키고, tld 파일은 /WEB-INF에 저장 합니다. (전 이클립스를 사용했으며 struts-test라는 Tomcat 프로젝트를 만들었습니다)

Result.jsp에서는 JSTL을 사용했는데 Struts에서 JSTL을 사용하기 위해 http://www.apache.org/dist/jakarta/taglibs/standard/ 에서 jakarta-taglibs-standard-current.zip 파일을 다은 받은 후 jar 파일을 /WEB-INF/lib 폴더에 복사 합니다.


이클립스와 톰캣 플러그인에 대해서는 이전 강좌를 참고하시기 바랍니다.

--------------------
web.xml
--------------------
version="1.0" encoding="ISO-8859-1"?>
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

Welcome to Tomcat

Welcome to Tomcat



/WEB-INF/struts-bean.tld
/WEB-INF/struts-bean.tld


/WEB-INF/struts-html.tld
/WEB-INF/struts-html.tld


/WEB-INF/struts-logic.tld
/WEB-INF/struts-logic.tld




action
org.apache.struts.action.ActionServlet

config
/WEB-INF/struts-config.xml

1 





action
*.do





--------------------
Struts-config.xml
--------------------

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


















path="/FirstAction"
type="add.action.AddAction"
name="addForm"
validate="false"
>







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

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

<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
:namespace prefix = html />
+=




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

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

<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
합은 : :namespace prefix = c />

------------------------
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
-----------------

사용자의 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;
}
}


---------------------
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;
}
}

댓글 없음:

댓글 쓰기