ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP] MVC패턴2로 프로젝트 구성 (제작중)
    기초/JSP 2017. 3. 29. 13:36


    MVC1 모델

    JSP        <---------->        모델

    화면구현기능,    페이지 요청,    데이터요구

    JSP                                    DAO  

    서블릿에서 구현


    컨트롤러

     서블릿

     서블릿

     서블릿 ... << 이 생겼다

     서블릿과 DAO간에 의존성이 높았다.





    MVC2 모델

    프론트에서 클래스를 부르는 형태이기에 변경과 유지보수면에서 빠르게 작업할 수있지만

    너무 광범위해서 소규모 게시판은 MVC1 패턴이 적합하다.



    모델 <------->        Controller(서블릿)    <------->        View   (jsp)

    팩토리 클래스

    ▼▼

    서비스 클래스를 생성

    1) 요청(URL) 분석


    http://localhost:8181/jspMain /페이지

    /페이지 ? 쿼리 스트링

    / 매핑값 << 서블릿


    /jsp_Membershop/login.do

    /jsp_Membershop/logout.do

    /jsp_Membershop/idcheck.do

    --> 확장자 패턴


    >>> 서블릿을 하나로 만들자 !(프론트) 


    /JSP_Membershop/*.do

    어떤 요청이든 간데 .do확장자 붙어있으면 하나의 서블릿으로 와라 (대문의 역할 "front"


    front에서는 구체적으로 어떤 요청인지 물어봐야 한다.

    그리고 나서 요청을 분리해 내야 한다.


    요청문자열 - getServletContext()   >>>>>> "insert.do"

     "update.do"

    ........


    if(어떤 요청? equals("insert.do"){

    insert와 관련된 서비스 클래스를 만들겠다.

    해당 서비스 클래스를 실행하겠다.


    }



    [mvc 1 컨트롤러]

    요청 >>>>>>서블릿 >>>>>>>>>

    요청 >>>>>>서블릿 >>>>>>>>>

    요청 >>>>>>서블릿 >>>>>>>>>    DAO

    요청 >>>>>>서블릿 >>>>>>>>>

    요청 >>>>>>서블릿 >>>>>>>>>


    [mvc 2 컨트롤러]

    요청 ------------------------------->                                                    >>   서비스 클래스    <--> dao

    하나의 서블릿     >>     Factory     >>   서비스 클래스    <--> jsp

    요청 ------------------------------->                                                    >>   서비스 클래스




     

     MVC 1

    MVC 2 

     MVC

    뷰 컨트롤러 VO

     컨트롤러 구성

    서블릿 + DTO 

    서블릿(프론트, 커멘드) + 

    호출될 클래스(Factory)  +

    서비스 클래스의 부모클래스(인터페이스)+

    서비스 클래스 (액션 서비스)+

    DB 연결 클래스(DBManager)+

    DTO

     의존성

    강함 

    약함 

    적용 대상 

    소규모

    대규모 



    MVC1 패턴은 서블릿의 의존성이 너무 강했다. 따라서 대규모 프로젝트에서

    MVC2 패턴을 사용해서 좀더 유기적으로 홈페이지를 관리할 수 있다.


    먼저 서블릿은 메인 (front) 서블릿과 제어문을 통해 객체를 생성하는 Factory클래스로 나뉜다.


    프론트 서블릿에서 Action의 특정 메소드를 실행해 객체를 생성해 특정객체를 excute() 실행명령어를 실행해서 특정 DB를 실행할건데


    이때 특정클래스들은 서비스 클래스들에 담겨져 있다.


    서비스 클래스들은 각각의 고유성을 띄고 있지만 이걸 뭉치기위해 실행메소드를 공통적으로 집어넣는다


    이떄 사용되는게 인터페이스와 추상메소드이다.


    이번 mvc2 프로젝트는 인터페이스를 사용해서 모든 클래스들에게 excute() 라는 메소드를 강제삽입 시킬것이다.


    이렇게 되면 front에서 excute()메소드를 객체마다 다르게 실행시킬수 있다.




    * 페이지 명세

    프로젝트 FrontTest


    WebContect

    01_frontController.jsp (페이지)

    com.koreait.frontTest

    FrontCon.java (서블릿)

          (url-pattern) : *.do      /를 사용하지 않고..

                 *.do로 작성


    WebServelt을 *.do 로 해놓으면 




    >> 서블릿에서 받아서 페이지마다 uri가 변경되면 그에따른 메소드들이 호출되어야하는데

    페이지 이동시 if문으로 처리되는 구간을 따로 관리하는 Factory 클래스를 만듭니다.



        





    URL자체가 자동으로 변합니다.






    #페이지 명세


    Project Name : JSP_Board_MVC2

    -> web.xml 만들기

    -> server.xml에 가서 dbcp 연동

    -> jar목록 가져다 놓기


    DB

    table 만들기  :  create Table Board();

    sequence  : 번호 매기기(글에 부여되는 유일값) 고유 index


    #뷰 

    index.jsp


    board 폴더

    boardCheckPass.jsp

    boardList.jsp

    boardUpdate.jsp

    boardView.jsp

    checkSuccess.jsp

    +boardWrite.jsp ( 프로젝트 구성중 빠진걸 확인)

    css 폴더

    board.css

    script 폴더

    board.js



    #컨트롤러 

    1. 서블릿 컨트롤러

    com.dgblog.controller.ActionFactory

    -BoardServlet.java     (커맨드를 만들어서 ActionFactory한테 넘긴다)


    -ActionFactory.java    (일반 클래스 - if문 같은 제어문을 담당한다)


    2. 서비스 클래스

    com.dgblog.controller.action 액션할 서비스 클래스를 만든다.

    Action 인터페이스 - 추상메서드 excute();


    ----모든 서비스 클래스들은 반드시 Action을 implements 시키고 excute를 강제상속 시킨다.


    BoardCheckPassAction

     BoardCheckPassFormAction


           BoardDeleteAction


     BoardListAction


     BoardUpdateAction

     BoardUpdateFormAction


     BoardViewAction


     BoardWriteAction

     BoardWriteFormAction


    >> update, insert, delete같은건 메세지만 띄워주면 될뿐  

    3. DAO
    com.dgblog.dao.BoardDAO

    4. DTO
    com.dgblog.dao.BoardVO

    5. UTIL
    util.DBManager  (Connection,  close() )

    6. 기존에 사용하던 .jar file 복사

    기획의도

    포트폴리오  :  내 프로젝트의 강점
    이건 그냥 테스트 용이다
         :  필요한 기능
    Oracle 11g, jsp (el, jstl mvc패턴의 이해)

         :  샘플 디자인(홈페이지)
    여러 게시판
         :  샘플 디자인에서의 보안된점
    보안적인 부분을 생각하지 않았다.  
         :  아직 부족한점.
    이클립스툴을 이용한 개발이였다.


    #1 index.jsp > 실행해서 server.xml의 context를 등록시킨다


    #2 server.xml 에서 dbcp를 연동한다


    #3 페이지 명세대로 페이지를 만든다.

    +boardWrite.jsp



    1) Action inteface 만들고

    2) 서비스 클래스에서 add 시켜서 만든다.


    #4 SQL 테이블 만들기

    시퀀스 만들기(index번호 부여(일련번호))

    데이터 몇개 집어넣기


    #5 DTO, DAO 구조 설정


    #6 util : dbcp static으로 선언



    [프로젝트 만들기]


    #1 index.jsp >> front (command class) 서블릿으로 보낸다.


    #2 모든 url요청을 BoardServlet( front ) 에서처리한다.


    #3 BoardServlet은 excute만 실행하고 url을 조건에따라 변경시켜주는 작업은 ( Factory 클래스에서 )를 한다.








    '기초 > JSP' 카테고리의 다른 글

    [JSP] CCS/JS TimeStamp 적용  (0) 2020.09.08
    [JSP] 페이지 이동 기술  (0) 2017.03.23
    [jsp] MVC패턴1 으로 프로젝트 구성 (구성중)  (0) 2017.03.22
    [JSP] JSP DB연동 3가지 방법  (4) 2017.03.21
    [JSP]데이터 베이스  (0) 2017.03.20

    댓글

Designed by Tistory.