티스토리 뷰

이전에 배운 내용 - 서블릿 생명주기, 초기 파라미터, 리스너 컨테스트 리스너, HTML에서 어떻게 서블릿으로 데이트를 전송하고 받는지 (Form 태그)

 

1. JSP 태그 개념 이해 

 - Servlet은 Java언어를 이용하여 문서를 작성하고, 출력객체를 이용하여 HTML코드를 삽입함.

 - JSP는 Servlet과 반대로 HTML코드에 Java언어를 삽입하여 동적 문서를 만들 수 있음. 

 - HTML코드안에 Java코드를 삽입하기 위해서는 태그를 이용한다. 

 

1-1 JSP 태그 종류

<%@   %> : 지시자 : 페이지 속성 
<%-- --%> :주석 cf) HTML주석 <!-- --> //HTML주석은 브라우저에서 실행되기 때문에 소스코드를 볼 경우 코드내용이 보임 그렇지만 JSP주석 코드는 WAS에서 처리되기 때문에 소스코드를 해도 보이지 않음
<%!   %> : 선언 : 변수, 메소드 선언
<%=   %> : 표현식 : 결과값 출력
<%    %> : 스크립트릿 : JAVA 코드
<jsp:action> </jsp:action> : 액션태그 : 자바빈

 

2. JSP 동작 원리

 - JSP가 요청되어 응답하기까지의 과정을 이해하면 개발에 많은 도움이 됨. 

 - 클라이언트가 웹브라우저로 HelloWorld.jsp를 요청하게 되면 서버를 거쳐 WAS안에 있는 JSP컨테이너가 JSP 파일을 Servelt파일(.java)로 변환함. 그리고 Servlet파일(.java)은 컴파일 된 후 클래스 파일(.class)로 변환되고 메모리상에 로드되어, 요청한 클라이언트에게 HTML파일 형태로 응답하게 됨.

 

1) 웹브라우저 요청

 

2) JSP -> Servlet (helloworld.js -> helloworld_jsp.java)

3) Servlet -> class (helloworld_jsp.java -> helloworld_jsp.class)

 

4) 웹 브라우저로 응답(HTML형태로 응답) 

 

 

2-1 JSP와 Servlet의 동작비교

 

 - Servlet: 클라이언트 요청 -> 서블릿객체 만들어짐 -> 스레드 만들어짐 -> 또 요청 -> 객체는 그대로 유지하고 스레드가 또 생성 -> 반복. 다른 CGI언어에 비해 부하가 걸리지 않아 속도가빠름 (JSP도WAS에서 서블릿으로 만든 후 실행이 되기 때문에 동일한 구조를 갖는다.) 

 

 - JSP: 클라이언트 JSP 요청 - > 요청에 대해 서블릿 유무 판단 -> 없는 경우 서블릿 생성(servlet.java /class) -> 메모리에 올림 -> 클라이언트에게 응답 -> 또 요청 -> 서블릿 유무 판단 -> 서블릿이 이미 생성됨 -> 생성된 서블릿을 재활용해서 사용 (속도가 서블릿 보다는 느리지만 거의 동일함, 다른 CGI언어에 비해 여전히 빠르다)

 

3. JSP 내부 객체 

 - 개발자가 객체를 생성하지 않고 바로 사용할 수 있는 객체

 - JSP에서 제공되는 내부객체는 JSP컨테이너에 의해 Servlet으로 변화될 때 자동으로 객체가 생성됨.

- 내장 객체는 JSP 페이지 내에서 제공하는 특수한 레퍼런스 타입의 변수.

- JSP 페이지에서 사용하게 되는 특수한 레퍼런스 타입의 변수가 아무런 선언과 객체 생성 없이 사용할 수 있는 이유는 JSP 페이지가 서블릿으로 변환될 때 JSP 컨테이너가 자동적으로 제공을 하기 때문이다.

 

3-1 내부 객체 종류

 - 입출력 객체 : requset, response, out

 - 서블릿 객체 : page, config

 - 세션 객체 : session

 - 예외 객체 : exception

댓글