JSP

MVC 패턴

campanula 2023. 7. 17. 17:53

경로 설정

.jsp라서 servletExample까지는 필요x

"subject/subjectSearchSuccess.jsp"

servlet을 불러올때 프로젝트명부터

"/servletExample/subjectDelete"


MVC 패턴: 모델, 뷰, 컨트롤러 구분 작업 분리, 결합도를 최소화, 유지보수 높이고, 개발자들이 각각 맡은 영역에만 집중할 수 있게 해서 개발의 효율성을 극대화할 수 있는 장점이 있다. 사용자의 입력을 받아서, 처리를 하고 결과를 다시 사용자에게 표시하기 위한 최적화된 설계

 

: 클라이언트와 서버 간의 인터페이스 역할을 하는 영역, 화면 구성을 담당 (HTML, CSS, JSP를 사용하여 구현)

컨트롤러: 뷰와 모델을 연결하는 중계 역할, 클라이언트가 전달한 파라미터를 추출하여 모델로 전달, 처리 결과 페이지를 보여준다.  (JSP, 서블릿 사용)

1. 뷰에서 들어온 요청을 받는다.

2. 클라이언트가 전달한 파라미터 추출

3. 파라미터의 유효성 검사, 실패하면 다시 뷰

4. 서비스 객체의 메서드 호출, 파라미터를 서비스 객체로 전달

5. 출력 뷰 페이지로 이동

 

모델: 서비스와 데이터베이스 처리를 담당하는 역할, 각 로직처리, DB 질의 처리기능, 서비스 처리 담당 Service (or Business) 객체, 데이터베이스 처리 담당하는 DAO 객체 (평범한 자바: Plain Old Java Object(POJO))

DAO: 데이터베이스 처리에 관한 기능만으로 구성

 

DTO(Data Tranfer Object, Domain Object DO, Value Object  VO): 데이터를 다른 logic에게 전송 및 반환할 때 효율적으로 데이터를 사용할 수 있게 클래스 작성. 

 

프런트 컨트롤러 디자인 패턴(front controller) : 대표 컨트롤러를 두고 뷰에서 들어오는 모든 요청을 담당하게 하면 웹 애플리케이션을 실행하는 모든 요청 일괄적 처리

 

프런트 컨트롤러 설정

1. 클라이언트의 서비스 요청 시 요청되는 URL 패턴의 규칙 지정

2. 지정된 URL의 패턴과 프론트 컨트롤러 연결

 

URL 패턴: 실제 서블릿의 매핑 정보 (서블릿 매핑 시 사용되는 가상의 이름), /슬래시로 시작 서블릿 매핑이름으로 사용되는 URL 패턴의 종류는 정확히 이름까지 일치하는지, 디렉토리까지만 일치하는지, 확장자만 일치하는지에 따라 세가지로 나누어짐.

 

URL 패턴 지정: '~.do', '~.action'과 같은 단어가 공통으로 들어가게 URL을 지정

FrontController 패턴을 적용한 서블릿에서 고려해야 되는 사항: 사용자가 어떤 동작을 요청했는지 식별. 사용자가 서블릿에 요청할 때, 서블릿이 사용자의 요청을 식별할 수 있도록 지원

http: //IP번호:포트번호/context명/식별값

 

서브 컨트롤러: 프런트 컨트롤러 다음에 실제 서비스를 처리하는 컨트롤러. (로직은 서브에서 처리)

 

Command 패턴: 클라이언트의 각 요청을 처리하는 별도 클래스를 제공하는 구현 패턴. 하나의 명령어를 하나의 클래스가 처리하도록 설계

 

3계층 아키텍처

프레젠테이션 계층, 비즈니스 계층, 영속 계층

클래스 기능
DispatcherServlet 유일한 서블릿 클래스, 모든 클라이언트의 요청을 가장먼저 처리하는 Front Controller
HandlerMapping 클라이언트의 요청을 처리할 Controller 매핑
Controller 실질적인 클라이언트 요청을 처리  //자바(인터페이스) 추상메서드 선언
ViewResolver Controller가 리턴한 View 이름으로 실행될 JSP 경로 완성

 

다형성

구현=> 슈퍼클래스 참조변수 = new 서브클래스1()

                                               = new 서브클래스2()

       => 인터페이스 참조변수 = new 구현클래스1()

                                               = new 구현 클래스2()

 

DispatcherServlet -> controller -> service ->DAO -> DB

 

① 클라이언트가 메뉴에서 게시판 메뉴를 클릭하면 /getBoardList.do를 요청하면 DispatcherServlet이 요청을 받는다.

② DispatcherServlet은 HandlerMapping 객체를 통해 게시판 목록 요청을 처리할 GetBoardListController 를 검색하고

③ 검색된 GetBoardListController의 execute() 메서드를 호출하면 게시판 목록을 보여주기 위한 로직이 처리된다.

④ 로직 처리 후에 이동할 화면 정보를 리턴하면

⑤ DispatcherServlet은 ViewResolver를 통해 접두사와 접미사가 붙은 JSP 파일의 이름과 경로를 리턴받는다.

⑥ 그리고 최종적으로 JSP를 실행하고 실행 결과가 브라우저에 응답된다.

 

Connection 객체란?

자바에서 DB와 연결하기 위해 사용하는 객체입니다.

파라미터는 Data의 위치(URL), 기타 정보(DB 접속 ID, 패스워드, 포트 번호)

DriveManager의 getCOnnection()메소드를 호출하여 생성할 수 있습니다.

 

(1) createStatement()

SQL문을 DB에 전달하기 위한 Statement 객체를 생성한다.

 

(2) preparedStatement(String sql)

파라미터가 포함된 SQL문을 DB에 전달하기 위한 preparedStatement 객체를 생성한다.

(3) prepareCall(String sql)

DB의 Stored Procedure를 호출하기 위해 CallableStatement객체를 생성한다.

(4) close()

현재 커넥션 객체에 할당된 시스템 리소스를 즉시 반환한다.

필터로 구현할 수 있는 기능에 대한 목록

서블릿이 호출되기 전에 서블릿 요청을 가로채는 기능

서블릿이 호출되기 전에 서블릿 요청 내용을 점검하는 기능

 

필터: 브라우저에서 서블릿에 요청하거나 응답할 때 미리 요청이나 응답과 관련해 여러가지 작업을 처리하는 기능