-
[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. DAOcom.dgblog.dao.BoardDAO4. DTOcom.dgblog.dao.BoardVO5. UTILutil.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