jsp2

Model.view.controller

longer 2012. 5. 23. 01:18

MVC 구현

Model(boardDAO,boardDTO)

V(list.jsp, insert.jsp, insertOk.jsp, detail.jsp, update.jsp, updateOk.jsp, delete.jsp)

C(controller.frontcontroller  -   Act.action인터페이스를 상속받은 listaction, insertaction,insertOkaction, detailaction, updateaction, deleteaction)


Act.action  ->인터페이스(request와 response를 받아 execute 추상메서드를 구현해서 다른 action에게 상속시켜준다.)

Act.action  ->인터페이스(request와 response를 받아 execute 추상메서드를 구현해서 다른 action에게 상속시켜준다.)


Act.listaction (controller.frontcontroller에서 url이 list.do와 같으면 listaction객체를 생성하고 메서드를 구현한다.) ->

action인터페이스를 상속받아 execute메서드를 오버라이딩시켜주고 Model(DAO)에 접근하고 처리해주는 로직을 수행하고

결과값을 request.setAttribute()를 이용해서 객체로 만들고 그 객체를 return시켜서 View(jsp)에 값을 전달시킨다.

>>list.jsp는 getAttribute로 값을 전달받고 화면에 뿌려준다.



Act.insertaction(controller.frontcontroller에서 url이 insert.do와 같으면 insertaction객체를 생성하고 메서드를 구현한다.)->action인터페이스를 상속받아 execute메서드를 오버라이딩시켜주고 path를 "insert.jsp"로 바로 리턴시켜준다.

(insert는 입력페이지가 따로 필요하다.  따라서 insert.jsp로 경로를 리턴해준다.)

>>insert.jsp는 입력페이지화면을 뿌려주고 값을 form태그로 필요한 값을 입력받아 insertOk.do 액션으로 값들을 전달해준다.


Act.insertOkaction(insert.jsp에서 form태그의 action값을 주어서 값을 전달시켜주었다. insertOk.do액션으로 링크가 걸렸기 때문에 controller.frontcontroller는 insertOk.do를 인식하고 Act.insertOkaction객체를 생성하고 execute메서드를 수행한다)

->insert.jsp에서 post로 전달한 값들을 getParameter로 받고 Model의 DTO객체에 저장후 DAO로 로직을 구현해 DTO를 삽입한다. 모든 수행이 완료되면 insertOk.jsp페이지로 return해주고 몇개가 삽입되었는지 스크립트로 구현해준다.(그 후 location.href="list.do"로 이동해서 다시 화면에 자료를 뿌려준다.)


Act.detailaction(list.jsp에 a 태그의 액션을 이용하여 값을 누르면 detail.do로 페이지를 전환시켜주는 버튼을 생성했다 이 액션이 수행되면 controller.frontcontroller에 의해 detail.do가 url로 인식이 되고 Act.detailaction객체가 생성되고 execute메서드가 수행된다)

->앞서 a태그에서 값을 전달하면 그값을 받아서 DAO 로직을 구현해 DTO로 해당하는 값을 받아온다. 이를 setAttribute로 묶어서 객체화 시켜주고 return detail.jsp수행한다.


detail.jsp>>

앞서 detail.do를 실행하면 DTO객체를 받아올 수 있었다. 따라서 이값을 받아서 화면에 뿌려준다.

(detail.jsp에는 해당하는 DTO를 수정하고 삭제할 수 있는 버튼이 있다. 따라서 버튼을 누르면 update.do나 delete.do를 수행한다.-앞서 내용들과 매우 비슷한 로직으로 구현되기 때문에 이부분은 생략하겠다.)




Context.xml>>

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

<Context>

     <Resource name="myboard/oracle"

    auth="Container"

   type="javax.sql.DataSource"

   maxActive="10"

   maxIdle="4"

   maxWait="-1"

   driverClassName="oracle.jdbc.OracleDriver"

   url="jdbc:oracle:thin:@KITRI-E00:1521:orcl"

   username="hr" password="tiger"/>

  

</Context>

Web.xml>>

 

  <servlet>

        <servlet-name>ttt</servlet-name>

        <servlet-class>controller.frontcontroller</servlet-class>

  </servlet>

 

  <servlet-mapping>

         <servlet-name>ttt</servlet-name>

         <url-pattern>*.do</url-pattern>

  </servlet-mapping>

 

         <resource-ref>

         <res-ref-name>myboard/oracle</res-ref-name>

         <res-type>javax.sql.DataSource</res-type>

         <res-auth>Container</res-auth>

         </resource-ref>

</web-app>