|
|
제목:대성리
jsp(java server page)
java를 이용하여 동적인 웹페이지를 만들기위해 sun microsystems사가 개발한 기술
기존 브라우저는 HTML형식의 문서만 표시 했음
동적인 웹 페이지
사용자의 요청 처리 결과에 따라 자동으로 변화 될수 있는 웹페이지가 필요했다.
EX)시간을 표시해주는 웹은 시간이 가지 안았음.
동적인 페이지를 만들면 사용자가 요청이있을때 마다 서버가 그때의 시간을 표시해줌
jsp문서는 html+java 문법의 형식이 혼합된 형태
java:<%...%>
jsp 컨테이너는 html코드가 아닌 부분을 분석해 jvm(java virtual machine)을 통해 자바코드를 실행
그결과 java코드를 html코드로 변환해서 보게 해준다.
jsp의 특징
강력한 이식성
jvm을 이용해 어떤 운영체제 에서도 사용이 가능함(리눅스,윈도우 등등)
서버자원의 효율적인 사용
cgi방식의 가장큰단점 중의 하나는 프로세스 관리의 어려움을 인핸 서버자원의 낭비
사용자가 요청을 하면 시작하고 끝내고 다른 사용자의 요청을 실행하여 수많은 사용자가 접속할 경우 프로세스 생성이 너무 많은 서버자원을 필요로함 (서버다운위험 등등)
jsp는 이문제점을 스레드(thread)기반의 아키텍처를 사용하여 개선
요청이 들어오면 서버는 요청에 맞는 jsp페이지에 대한 서블릿 인스턴스를 단 한번 생하고 이후 같은 페이지의 요청이 오면 생성되어 있는 인스턴스에 스레드 단위로 요청을 전송 처여 처리 서버자원의 효율적인 사용이가능하게함
간편한 mvc패턴 적용
MVC(Model-View-Controller)패턴
jsp(View)-자바빈스(Model)-서블릿(Controller) 구현
각각으로 분업이 가능하게 하는 장점과 자바빈스를 사용 비지니스 로직을 분리하면 컴포넌트화 하여 공통로직의 재사용이 용이하다.
jstl 커스텀 태그 등을 이용한 개발 용이성
JSTL(jsp standard tag library)과 커스컴 태그의 대한 지원이 강화 별도의 태그 라이블러리 파일을 만들어 정리 가독성과 유지 보수의 효율이 대폭상승
|
|
서블릿의 개요
웹서버 측에서 사용자의 요구에 따라 자동으로 변화된 html형식의 페이지를 생산해 전송해 줄수 있는 여러 기술이 개발
그중 자바 진형의 기술이 바로 서블릿(servlet)이다.
웹서버 상에서 실행되는 자바의 클래스 파일
기본적으로 자바의 api를 그대로 사용 강력한 객체 지향성등 자바의 장점을 모두 가지고 있다.
서블릿은 반드시 javax.servlet.servlet인터페이스를 구현(implements)해서 작성 해야하며
http프로토콜의 요청과 응답의 형태로 다룬다
클라이언트의 요청-웹서버는 그요청에 해당하는 서블릿 클래스 파일을 실행 서블릿클래스에서는 요청을 처리해 결과물(html 형식의 페이지)을 만들어 냄 그러면 웹서버가 그페이지를 클라이언트에 전송하는 것
서블릿이란 말그대로 server side applet 즉 서버 사이드의 자바 응용프로그램
jsp파일을 서블릿형태의 자바 코드로 자동 변환 후 서블릿의 라이프 사이클을 거치면서 클라이언틔 요청을 처리해준다
jsp요청또한 서블릿의 요청 처리 방식으로 처리 같은개념
http프로코톨의 이해
인터넷 통신 프로토콜에는 TCP/IP,FTP,SMTP,HTTP등 많은 종류의 프로코로이 있다.
최상의 연결계층 끝판왕이 HTTP(hypertext transfer protocol)이다.
http프로콜의 구조
HTTP 프로토콜은 요청(requset)과 응답(response)의 형태로 이루어져 있다.
페이지 클릭시 http프로토콜의 요청 형태로 http메세지를 작성하여 웹서버에 전송
웹서버는 받은 http메세지가 요청(requset) 메시지임을 판단 데이터를 분석
http프로토콜의 응답(response)형태로 메시지를 작성해 브라우저에 보내 브라우저는 메시지를 받아 화면에 표시함
시작라인:요청,응답,요청URL
헤더:수행날짜,서버정보,브라우저 버전
본문:요청이나 응답에 필요한 내용
http요청(request)메세지
기본적으로 http메소드(method)와 접근할주소(url)정보 그리고 서버에 전달한 데이터폼 파라미터로 구성
http메소드는 클라이언트가 웹서버가 해야할 행동을 정해줌
GET,POST메소드가 있다.
GET메소드
시작라인 :주소?전송파라미터값
요청헤더:HOST,User-agent
장점:본문이 없어 전송속도가 빠르다
전송할 데이터가 적은경우 사용
POST메소드
시작라인 :주소
요청헤더:HOST,User-agent
본문:전송할 파라미터값
장점:길이제약이 없다.
파라미터값을 확인할수 없어 보안상 유용하다.
HTTP응답(response) 메시지
서버처리 성공여뷰를 표시하는 상태코드(http404,500등등)와 웹서버가 응답해주는 콘텐츠 타입정보(text/html, 이미지등)의내용으로 구성
웹컨테이너 란?
웹서버는 URL주소의 해석을 맡아주는 HTTP서버
jsp파일의 실행요청을 처리해주는 웹컨테이너로 구성됨
웹서버
1. http서버
2. 웹컨테이너
http서버:단순 주소 요청이 올경우 주소 매핑되 있는 컨텐츠를 사용자의 브라우저에 응답 형태로 전송
요청된 URL이 서블릿클래스,jsp파일 경우 웹컨테이너 에서 처리하도록 클라이언트의 요청에 넘겨줌
웹컨테이너:요청에 맞는 미리 설정된 서블릿 클래스 or jsp를 실행해 http서버에 넘겨줌
서블릿은 서블릿컨테이너
jsp는 jsp컨테이너
둘이 통합하여 웹컨테이로 통칭함
웹컨테이너로 자카르타 톰캣,웹로직,resin 등이있음
서블릿의 동작원리
사용자의 url
배포서술자(deplotment descriptor)가 필요
쉽게 서블릿 요청이오면 서버가 알아챌수 있도록 적어놓은 파일
서버에 요청이올때 배포서술자가 가야할곳을 지정 담당하는 웹컨테이너로 요청을 전달함
request,response 객체생성
request:java.servlet.http.httpservletrequset객체 타입 생성
response:java.servlet.http.httpservletresponse객체 타입 생성
서블릿 인스턴스와 스레드 생성
요청이 실행된적이 없다면 새로 인스턴스를 생성(메모리에 로드) init()메소드를 실행해 초기화 한뒤 스레드를 하나 생성
요청이 실행되었다면 기존에 인스턴스에 스레드만 하나 새로 생성
각 서블릿 인스턴스는 웹컨테이너 하나당 존재하기 때문에 init()메소드는 각 서블릿 하나씩만 호출
service()메소드 호출과 서블릿 클래스 실행
스레드가 생성되면 각 스레드에서 service()호출
호출후 http요청방식이
GET일경우 deGet()메소드
POST방식 doPost()메소드
요청,응답 객체를 인자로 자동 호출
개발자가 실제로 동적인 웹페이지를 생성 할수 있는 코드를 만들어야 하는 부분이 바로 doGet(),doPost()메소드 부분
응답과 스레드의 소멸
doGet(),doPost()메소드가 호출되어 사용자의 요청에 따른 동적인 웹페이지를 생성 결과물을
response객체를 웹컨테이너가 http응답형태로 바꾸어 웹서버로 전송
그리고 사용이 끝난 객체는 소멸 스레드를 종료 웹서버는 전송받은 http응답메시지를 사용자의 브라우저로 전송 사용자는 브라우저를 통해 동적으로 생성된 페이지를 받아봄