Web Application Server : 웹 서버와 Application 서버를 합친 것이다. 과거에는 분리된 형태로 존재하였지만, 최근에는 통합되어 나오고 있다.
WAS 종류에는 Weblogic, WebSphear, 톰캣 등 이 있다.
Application Server 작동 순서
1. Data get
2. Logic수행 - 비즈니스로직 ( 서비스 ) 와 Data Base 로직(DAO) 가있다.
3. 응답 : 성공 / 실패 / 에러
DTO : 데이터 테이블과 일치시킨다. 그러나 SQL 쿼리에서 JOIN사용하면 테이블과 달라진다.
VO: 그래서 VO를 만들어서 사용한다. DAO와 VO는 비슷하지만 다르다.
DTO : 전달 객체
VO : 리턴 객체
자바 서블릿
자바를 사용해서 웹 페이지를 동적으로 만드는 서버프로그램 혹은 기술. MVC 컨트롤러에서 컨트롤러에 해당
JSP와 유사하다
서블릿 API
내 서블릿 -> HttpServlet -> GenericServlet -> Servlet 인터페이스
서블릿 서버 라이프 사이클
메인 메소드 없다! 즉, 사용의 주체가 서블릿 컨테이너이다.
Request -> Constructor() -> init () -> service(), doget(), doPost() -> destroy()
처음 1번만 실행 요청마다 반복 1번만 실행
- init : 서블릿이 메모리에 로드될 때 한번 호출된다. 코드 수정으로 다시 로드되면 호출된다.
- service: 모든 요청은 service를 통해 doXXX를 호출한다.
- destroy: 서블릿이 메모리에서 해체되면 호출된다. 코드 수정되면 호출된다.
즉, 서블릿은 1번만 초기화한다!!! 1개만 만들고 쓰레드가 만들어진다.
URL : ~ ? 파라미터이름 = 파라미터값 & 파라미터 ~~
( 범위는 URI > URL 이다)
서버에는 많은 리소스들이 있다. 그 리소스들에 접근하기 위한 주소가 URI이다. URI는 리소스 식별자이다.
POST 요청 처리시, UTF-8로 인코딩해줘야한다. GET 요청은 쿼리 스트링을 이용하기 때문에 하지 않아도 된다.
Get/Post
Get : 쿼리스트링으로 데이터 전달. 간단한 데이터 빠르게 전송, 데이터 양이 최대 2kb
Post: HTTP 헤더 뒤 body에 입력스트림으로 전달. 데이터 제한 없음. Get보다 느림
웹에는 브라우저가 있어야 한다. 브라우저는 HTML문서를 파싱해가지고 렌더링을 해주는 역할을 한다.
그러면, 이 HTML이라고 하는 문서는 어디에서 제공을 하는지 생각해봐야 한다.
브라우저는 누구나 다 가지고 있다. HTML은 서버에서 제공해줘야한다. HTML이 존재하는 주소를 입력해서 가지고온다.
HTTP는 프로토콜이다. 내부적으로 GET, POST.DELETE 같은 메소드들이 정의되어 있다.
서블릿 JSP에서는 GET, POST 만 사용한다.
HTTP는 다양한 데이터를 전송 할 수 있다. 바이너리, 텍스트 등등
서버는 리퀘스트를 받아야 응답을 한다.
리퀘스트에 클라이언트의 요청 정보가 다 들어가 있다.
HTTP 상태 코드
서블릿은 자바이다. 서블릿은 로직처리만 해야한다. 클라이언트에서 요청 들어오면 서비스를 이용한다. 컨트롤러는 해야 할 작업들을 모듈화 해 둔 곳이다.
서블릿에서 서비스를 이용하게 되면, 화면을 만들어야 하는데, 서블릿에서 만들지 않는다.
JSP는 HTML태그를 핸들링하는 친구다. JSP페이지가 HTML에 데이터 넣어야 한다. 그 데이터를 서블릿에서 가져온다,
즉, 요청 -> 서블릿 -> 컨트롤러 -> 비즈니스레이어 -> 컨트롤러 -> 서블릿 -> JSP -> response
서블릿에서는 로직처리, JSP에서 UI처리.
그러면은 서블릿과 JSP 사이에서 data 공유가 필요하다. 서블릿에서 만든 데이터를 JSP가 사용해댜 한다.
Dispatcher Servlet은 흐름 제어를 해주는 서블릿이다. 이 서블릿의 생명주기와 JSP와의 데이터 공유을 알아야 한다.
서블릿의 역할 알아야 한다.
상속받을때 HTTP서블릿 혹은 제너릭 서블릿 상속받을 수 있다.
서블릿 처음 로딩될 때 시간 걸릴 수 있으므로, 미리 메모리 상에 올려주는게 좋다,
최초의 요청이 들어올 때 메모리에 올리면 느리므로 미리 올리기!
loadOnStartup = 1 이라고 하면 서버 켜지면 로딩된다,
중요한 서블릿은 미리 메모리에 올리는 과정이 필요하다.
form안에 있어야 데이터 전송된다. type hidden이면 숨겨서 데이터 보낼 수 있다.
form태그 안에서 submit 버튼을 누르면, form 태그 안에 있는 데이터가 action 으로 넘어간다. 서버쪽에서는 유저가 넘긴 정보를 input.name으로 받는다.