Published 2022. 6. 24. 07:21
MVC 패턴 기본구조

 

 

ㄱ.  모델 1구조
웹컨테이너 [서블릿 클래스(jasper) -> 서블릿 객체]

ex01.jsp          <- 요청           브라우저
   구현
                        응답 ->

 


ㄴ.  모델 2 구조(MVC 패턴)
                                                                                                                                                    로직 클래스[M]VC
                                                                                                                                                     모델(model)객체
write.htm ->                                                                                                                               write.java 클래스 서블릿x
list.htm ->                                                                                                                                   List.java 클래스 서블릿 X
view.htm ->                                               하나의 서블릿 요청 받아요.                                       request.setAt("list",list);
delete.htm ->                                                      [서블릿] 1개                                                       포워딩 list.jsp
모든 요청    MV                                                   [C]컨트롤러 
:                                                                                                                                                      담당로직 클래스
:

                                    view
                              출력 객체
                              화면 출력 list.jsp, write.jsp, view.jsp
                              게시글 목록
                              출력

 


클라이언트(웹 브라우저) 서버
주소[]                                                                         [ 하나의 서블릿(컨트롤러) 역할]                                클래스(자바빈)
                                                                                                                                                                   CommandHandler 
/list.htm                                                                                                                                                             (모델객체)
/write.htm                                      ->요청->            1. 모든 http 요청                                                               ListModel.java 
/edit.htm                                                                  2. 요청분석(  edit.htm  ):                           

/view.htm                                                                   게시글 수정 요청                                     

                                                                                 (어떤 요청인지 파악한다.)                                                                     
                                                                               3. 로직 처리 담당하는 클래스(모델)               모델처리=> EditModel.java

                                                                                  (EditModl.java(모델))    파악 후  

                                                                                  담당 모델한테 처리하라고 지시한다.
                                                                                4.모델이 처리한 결과를 받아서                   <=처리 결과
                                                                                ->request/session/application

                                                                                저장공간에 저장한다.
                                                                               5. 화면 출력 담당뷰가 누군지 파악 하고

                                                                                  포워딩 또는 리다이렉트 시킴
                                                                                  edit.jsp 

 

                                                                          1번부터 5번까지 서블릿(컨트롤러)의 역할    
   
                                                                                                 :
                                                                                                 :
                                                                                            edit.jsp
                                                            <=응답                  [출력/화면]

 

 

**작동원리

모든 요청을 담당하는 컨트롤러 
(요청이 들어오면 누가 일을 처리해야할지 고민해서 담당자(모델객체)를 결정한다 )
컨트롤러가 모델 객체한테 일을 시키는거다.
모델 객체가 로직을 수행하고   다시 컨트롤러로 보내준다
그런면 컨트롤러가  포워딩 또는 리다이렉트 할 곳을 정해서 뷰 객체로 보내준다.
(가운데서 컨트롤러가 모든걸 담당)

뷰 객체에서는 화면을 출력하기만 한다.(리스트 목록 불러오기 등등)

 

컨트롤러만 서블릿이다. 나머지는 클래스 파일

 


MVC 패턴 게시판 구현

 

1. days08폴더
ㄴboard 폴더 생성
2. web.xml 을 없애고 + ctrl C V   + web_days07.xml
web.xml
ㄴDBCP 설정 부분만 남기고 다 지워라
3. 모든 요청                       -> 단 하나의 서블릿(  MV[C] 컨트롤러 )
url-pattern="/"                ->
url-pattern="*.확장자"->
url-pattern="*.do"             ->   days08.mvc.controller.DispatcherServlet.java                      (이걸로 쓰자)
list.do
write.do
edit.do
view.do
???.do
4. web.xml
서블릿(컨트롤러) 등록
<load-on-startup>1</load-on-startup>
1번째 요청 -> 서블릿 객체 생성 -> 응답
요청 X 톰캣(WAS) 시작될 때 서블릿 객체 생성 바로 응답할 수 있도록 하기 위해서
(없어도 에러는 안나지만 그냥 성능 때문에 미리 요청해서 하나 만들어 놓는 것이다.)

5.DispatcherServlet에서 코딩 시작
a링크 요청     -> get()
브라우저 주소창[] 요청 -> get

6. 설정 파일 선언(추가)
요청URL => 커맨드 핸들러
요청URL => 커맨드 핸들러
WEB-INF 폴더
ㄴ commandHandler.properties   어떤요청이 들어오면 프로퍼티즈 파일에 의해 우변 항 파일이 실행되는 것이다.

7.커맨드 핸들러 implements CommandHandler 인터페이스 오버라이딩
ListHandler
WritrHandler

days08.mvc.command.CommandHandler.java 인터페이스 선언
days08.mvc.command.ListHandler
days08.mvc.command.WriteHandler
days08.mvc.command.EditHandler

8. DispatcherServlet.init() 구현

DispatcherServlet.doGet() 구현

9./board/list.do 요청 -> ListHandler.process() 구현
days05.board.List.java  코딩 복사해서 붙이기



3q번쨰 질문

String path = "/jspPro/board/list.do"

첫번째 방법
path = path.replaceAll("/jspPro","")



4번쨰 질문

<load-on-startup>1</load-on-startup>    에 의해  DispatcherServet 서블릿 객체를 생성 => init(){}
톰캣 서버 시작할떄  모든. 요청 -> ??? Handler.process() -> 포워딩
list
                                                 init(){} 역할 : .propertirs 파일 열어서 목록에 해당되는 key 값을 반복문으로 돌면서 해당되면 map에 (key value)값으로 추가해주는 역할이다.
                                                ~~Map
                                                .propertirs 파일 열어서
                                               목록에 해당되는게 몇개인지 파악하고 해당되는 거 만큼
                                               Map에 추가하는 것이다.
                                               
                           
12. 글쓰기
ㄱ. list.jsp
<a href="<%=contextPath %>/board/write.do">글쓰기</a>        글쓰기 버튼 url 수정       
    ㄴ. board/write.do (GET방식)
    WriteHandler.java 코딩 수정
    doGET() write.jsp
    ㄷ. 5일차에 있는 write.jsp 를 8일차로 옮김     days08/board/write.jsp 복사 붙이기
              
13. list.jsp 하나의 게시글 제목을 클릭하면 상세보기 view.jsp
ㄱ.<td ><a href="<%= contextPath%>/board/view.do?seq=${dto.seq}">${ dto.title }</a></td> 수정
ㄴ.  commandHandler.properties  확인
/board/view.do = days08.mvc.command.ViewHandler    추가해 주기

ViewHandler.java     핸들러가 있는지 파악     확인 -> View.java  코딩 복사 + 붙이기
ㄷ. view.jsp    복사 붙이기

14. MVC 패턴 코딩
수정하기
삭제하기
    

'Jsp' 카테고리의 다른 글

[JSP]JSP와 Servlet/ 동작과정__10/20  (0) 2022.10.20
[JSP]JSTL 기본__개발공부 83일차  (0) 2022.07.11
복사했습니다!