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을 설정해 준다. |
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/14)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]안드로이드개발자과정
(7/21)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/21)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/21)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/21)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(7/09)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/10)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/15)SQL기초에서실무까지
(7/15)안드로이드개발자과정
(7/16)Spring3.X, MyBatis, Hibernate실무과정
(7/21)웹퍼블리싱 마스터
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/22)MyBatis3.X, Hibernate4.X ORM실무과정
주말(10:00~17:50) 개강
(7/12)SQL초보에서 Schema Object까지
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
(7/26)MyBatis3.X, Hibernate4.X ORM실무과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(7/14)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/14)[기업100%환급]SQL기초에서 Schema Object까지
(7/14)[기업100%환급]안드로이드개발자과정
(7/21)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/21)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/21)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(7/21)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(7/09)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/10)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/15)SQL기초에서실무까지
(7/15)안드로이드개발자과정
(7/16)Spring3.X, MyBatis, Hibernate실무과정
(7/21)웹퍼블리싱 마스터
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/22)MyBatis3.X, Hibernate4.X ORM실무과정
주말(10:00~17:50) 개강
(7/12)SQL초보에서 Schema Object까지
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
(7/19)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/19)Spring3.X, MyBatis, Hibernate실무과정
(7/19)웹퍼블리싱 마스터
(7/19)안드로이드개발자과정
(7/26)MyBatis3.X, Hibernate4.X ORM실무과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework
(8/09)SQL기초에서실무까지
댓글 없음:
댓글 쓰기