서블릿 워크샵 36~38
JSP와 서블릿, 마이바티스을 이용하여
브라우저와 서버, DB간 데이터 요청 및 응답 연습
비동기 처리 부분은 제외하고 구현
=> javascript 작업 데이터 전송 : 1) 콘솔로 데이터확인 후 전송
=> 서버 servlet, jsp 2) 전송받은(파싱)데이타 확인
3) db작업 => list, dto, dml 갯수 결과 확인
jsp 응답처리
MVC 패턴에 사용됨
서블릿은 자바 코드 작성에 장점이 있고
JSP파일은 HTML 작성에 장점이 있다.
이 두가지 장점을 이용해 만든 패턴이 MVC 패턴이다.
< MVC 패턴 진행과정 >
사용자 요청 => servlet(controller): 데이터파싱, service,dao,dto 사용
db연동 후 응답에 필요한 데이터 저장 jsp에 전송(주로 forward(req, res) 사용)
=> jsp request에 저장된 데이터를 받아서 브라우저에 응답처리코드 작성 (view)
MVC 패턴의 장점 : 개발 초기에는 복잡하고 어렵지만 유지보수 기능이 향상된다.
웹 어플리케이션의 Business Logic을 담당하는 모듈로서 일반 자바 클래스로 구현된다.
데이터베이스 연동시 필요한 DAO, DTO 클래스 파일들에 해당된다.
사용자와의 직접적인 화면 구성을 담당하는 모듈로서 JSP로 구현된다. Model의 데이터를 HTML로 부여주거나, 사용자가 입력하는 화면 구성을 담당한다.
Model과 View는 논리적으로 밀접한 관련을 갖지만, 물리적으로는 관련이 전혀 없다. 서로간의 의존성을 감소시킴으로써 유지 보수를 쉽게 할 목적으로 분리시켜 작업이 이루어진다. 따라서 Model과 View를 관리하는 역할의 Controller가 필요하며, Servlet으로 구현한다.
Cotroller는 여러개의 Model 클래스 파일과 여러개의 View들 중에서 적절하게 선택하여 실행시키는 핵심 역할을 담당한다. 예를 들어, 요청 다음에 보여줄 화면을 선택하는 작업이거나 또는 사용자가 입력한 데이터를 검증하거나 출력하는 작업 등이다.
HTTP 프로토콜을 기반으로 하는 웹 서비스는 웹 서버의 부하가 매우 크기 때문에 불특정 다수인 클라이언트와 지속적인 연결방식으로 요청/응답을 처리하지 않는다.
대신에 클라이언트가 웹 서버에 요청하고 응답 받으면 즉시 연결을 끊는 Connectionless 방식으로 동작된다. 이것은 웹 브라우저의 각 페이지는 서로 간에 연결고리가 없음을 의미한다.
따라서 각 페이지 간에 특정 데이터를 공유할 방법이 필요한데 이것을 '세션 관리'라고 부른다.
세션 관리는 일반적으로 다음 두가지 방법으로 처리할 수 있다.
1. HttpSession 클래스를 이용한 세션 처리
2. Cookie 클래스를 이용한 세션 처리
3?. forward()를 이용한 request 유지 처리
세션(Session)이란 사용자의 상태 정보를 서버에서 관리하는 메커니즘을 의미한다. 세션의 정보는 클라이언트가 서버에 접속해서 종료될 때(브라우저 종료)까지 유지된다.
상태 정보가 서버에 저장되기 때문에 서버의 부하가 클 수 있다. 따라서 time-out 제한을 두어 일정시간(기본은 30분) 동안 요청이 없으면 서버는 세션 정보를 유지하지 않고 제거한다.
요약 :
다음은 세션의 전체적인 아키텍쳐(구조)이다.
1) time-out을 지정하여 제거하는 방법
session.setMaxInactiveInterval( 60*60*24 ); //24시간 유지2) 즉시 제거하는 방법
session.invalidate(); //즉시 제거session.removeAttribute(name); //name 값에 해당하는 속성 값만 제거브라우저에 저장해둘만한 값이면 session 저장 이용
session에 없고 페이지간 잠깐 저장할 것이라면 forward
모든 요청의 시작은 서블릿, 응답은 jsp
평가 문제
Mybatis 기술 이용 MVC패턴으로 emp 목록 출력 - 워크샵 39번~46번
프로젝트 선택후 실행하면 원하는 파일 실행되게하기