action은 struts에서 실제 어떤 행동을 기술하는 부분으로써, 아주 중요한 부분이라고 할 수 있습니다. 모든 struts에서의 접근은 이 action을 통해서만 가능하도록 통일을 해야 개발의 완성도를 높일 수 있습니다. action을 구현하려면, struts의 Action class를 상속받아서 필요한 부분을 구현하면 됩니다.
게시판에서는 공통으로 호출하는 MainAction(로그인 처리를 대비해서) , 게시물 쓰기 페이지 보여주기 action(WriteAction) , 게시물저장 action(BoardcreateAction) , 게시물삭제 action(DeleteAction) , 리스트 가져오기 action(ListAction) , 답글 페이지 보여주기 action(ReplyAction) , 답글저장 action(ReplyitAction) , 글 수정 페이지 보여주기 action(UpdateAction) , 글 수정한것 저장하기 action(UpdateitAction) , 게시물 상세보기 action(ViewAction) 이런 action들로 구성되어 있다. 꼭 이렇다는 건 아니고, action이란게 이런것이란걸 말하는 것입니다.
action class를 생성하면, 그것을 struts에서 알게 하도록 struts-config.xml에 해당 작동 내역을 추가하여야 합니다.
각 action 소스를 하나씩 보면서 어떻게 동작하는지 살펴보도록 하죠.
1. 공통 Action ( MainAction )
모든 action에 공통적으로 들어가야 할 기능이 있다면 ( 예를들면, 로그인체크,접속/비접속 체크,쇼핑카트 등) 그것을 구현해 놓고, 다른 action들이 struts의 action을 상속받지 않고, 이 공통 action을 상속받게 합니다. 이것은 필수요소가 아니라 선택사항입니다. ( 공통사항이 없다면 안해도 상관 없죠. )
package com.board.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* author : suny<skyfafa@gmail.com>
*/
// 추상 class로 생성
public abstract class MainAction extends Action {
// execute method에 공통으로 수행하는 부분을 적어줌
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
....
....
....
// 공통 부분을 다 수행했다면 실제 execute를 수행할 doExecute method를 호출한다.
return doExecute(mapping,form,request,response);
}
// doExecute 는 이것을 상속받은 다른 action들에게 실제(execute)를 적어주는 부분. 추상 method이기 때문에 당연히 내용은 없음.
public abstract ActionForward doExecute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception;
}
2. 게시물 저장 action
게시물 작성 페이지에서 저장 버튼을 클릭하면 게시물 저장 action이 호출되고, 이 action에서는 이전에 만들어 놓았던, Board class와 BoardDAO class의 기능들을 이용하여 실제 저장을 수행하도록 하고 난 후에 게시물 리스트 페이지로 이동하도록 지시 합니다.
package com.board.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.board.struts.form.BoardcreateForm;
import com.board.model.*;
/**
* author : suny<skyfafa@gmail.com>
*/
// 위에서 만든 MainAction을 상속받는다. ^^
public class BoardcreateAction extends MainAction {
// MainAction에 명시해두엇던 doExecute method를 이용하여 게시물을 저장하는 기능을 수행한다.
public ActionForward doExecute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// form은 게시물 쓰기 페이지에서 넘어온 form parameter들이 모두 들어가 있는 곳이다.
BoardcreateForm boardcreateForm = (BoardcreateForm) form;
// board class에 해당 파라메터에 있는 내용을 옮긴다.
Board board = boardcreateForm.getBoardValue();
// 게시물 dao인 BoardDAO를 생성
BoardDAO boardDao = new BoardDAO();
// 게시물 저장 metho은 createBoard 호출
boardDao.createBoard(board);
// 저장 후 게시물 리스트로 가기
return mapping.findForward("list");
}
}
struts-config.xml 에는..
<action
attribute="boardcreateForm"
name="boardcreateForm"
path="/create"
type="com.testboard.struts.action.BoardcreateAction">
<forward name="list" path="/list.do" redirect="true" />
</action>
이렇게 action을 설정해 준다.
게시판에서는 공통으로 호출하는 MainAction(로그인 처리를 대비해서) , 게시물 쓰기 페이지 보여주기 action(WriteAction) , 게시물저장 action(BoardcreateAction) , 게시물삭제 action(DeleteAction) , 리스트 가져오기 action(ListAction) , 답글 페이지 보여주기 action(ReplyAction) , 답글저장 action(ReplyitAction) , 글 수정 페이지 보여주기 action(UpdateAction) , 글 수정한것 저장하기 action(UpdateitAction) , 게시물 상세보기 action(ViewAction) 이런 action들로 구성되어 있다. 꼭 이렇다는 건 아니고, action이란게 이런것이란걸 말하는 것입니다.
action class를 생성하면, 그것을 struts에서 알게 하도록 struts-config.xml에 해당 작동 내역을 추가하여야 합니다.
각 action 소스를 하나씩 보면서 어떻게 동작하는지 살펴보도록 하죠.
1. 공통 Action ( MainAction )
모든 action에 공통적으로 들어가야 할 기능이 있다면 ( 예를들면, 로그인체크,접속/비접속 체크,쇼핑카트 등) 그것을 구현해 놓고, 다른 action들이 struts의 action을 상속받지 않고, 이 공통 action을 상속받게 합니다. 이것은 필수요소가 아니라 선택사항입니다. ( 공통사항이 없다면 안해도 상관 없죠. )
package com.board.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* author : suny<skyfafa@gmail.com>
*/
// 추상 class로 생성
public abstract class MainAction extends Action {
// execute method에 공통으로 수행하는 부분을 적어줌
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
....
....
....
// 공통 부분을 다 수행했다면 실제 execute를 수행할 doExecute method를 호출한다.
return doExecute(mapping,form,request,response);
}
// doExecute 는 이것을 상속받은 다른 action들에게 실제(execute)를 적어주는 부분. 추상 method이기 때문에 당연히 내용은 없음.
public abstract ActionForward doExecute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception;
}
2. 게시물 저장 action
게시물 작성 페이지에서 저장 버튼을 클릭하면 게시물 저장 action이 호출되고, 이 action에서는 이전에 만들어 놓았던, Board class와 BoardDAO class의 기능들을 이용하여 실제 저장을 수행하도록 하고 난 후에 게시물 리스트 페이지로 이동하도록 지시 합니다.
package com.board.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.board.struts.form.BoardcreateForm;
import com.board.model.*;
/**
* author : suny<skyfafa@gmail.com>
*/
// 위에서 만든 MainAction을 상속받는다. ^^
public class BoardcreateAction extends MainAction {
// MainAction에 명시해두엇던 doExecute method를 이용하여 게시물을 저장하는 기능을 수행한다.
public ActionForward doExecute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// form은 게시물 쓰기 페이지에서 넘어온 form parameter들이 모두 들어가 있는 곳이다.
BoardcreateForm boardcreateForm = (BoardcreateForm) form;
// board class에 해당 파라메터에 있는 내용을 옮긴다.
Board board = boardcreateForm.getBoardValue();
// 게시물 dao인 BoardDAO를 생성
BoardDAO boardDao = new BoardDAO();
// 게시물 저장 metho은 createBoard 호출
boardDao.createBoard(board);
// 저장 후 게시물 리스트로 가기
return mapping.findForward("list");
}
}
struts-config.xml 에는..
<action
attribute="boardcreateForm"
name="boardcreateForm"
path="/create"
type="com.testboard.struts.action.BoardcreateAction">
<forward name="list" path="/list.do" redirect="true" />
</action>
이렇게 action을 설정해 준다.
[개발실무&100%환급]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… | 12-27 | 2454 | ||
[채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1802 | ||
53 | [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… | 03-15 | 1609 | |
52 | [주말]C#,ASP.NET마스터 | 01-31 | 1705 | |
51 | [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… | 01-31 | 2372 | |
50 | [평일주간야간,주말]C기본&자료구조,알고리즘 | 01-31 | 1345 | |
49 | [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… | 01-19 | 1650 | |
48 | [평일야간,주말]안드로이드개발자과정(Android기초실무) | 01-11 | 1510 | |
47 | [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… | 01-03 | 2037 | |
46 | [개발실무&100%환급]SQL/자바/스프링/안드로이드/닷넷C#/웹퍼블… | 12-27 | 2454 | |
45 | [기업100%환급,평일주간5일 교육]JAVA,JDBC,Servlet,JSP | 12-19 | 1766 | |
44 | [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… | 12-14 | 1743 | |
43 | [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… | 12-11 | 1802 | |
42 | [기업100%환급]웹퍼블리싱마스터(HTML5,CSS3,JavaScript,jQUERY) | 12-09 | 1409 | |
41 | [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 | 12-01 | 1639 | |
40 | [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… | 12-01 | 1812 | |
39 | [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) | 12-01 | 1289 |
댓글 없음:
댓글 쓰기