JSP : Java Server Page. html 코드와 자바 코드를 합쳐 동적인 페이지를 제공해준다.
모든 JSP 파일은 JSP 파일 자체를 작동시키는 것이 아니라 톰캣(WAS)이 서블릿으로 바꿔서 동작한다.
예를 들어 test.jsp 라는 jsp 파일을 실행시키면 톰캣이 test_jsp.java 서블릿으로 바꾸고 이 서블릿을 실행시킨다.
서블릿 글 jang-sn.tistory.com/49
JSP의 실행 순서
- 클라이언트가 웹서버에 jsp에 대한 요청을 보낸다.
- 웹서버는 해당 jsp에 대한 요청이 최초인지 확인한다.
- 최초 요청이라면 jsp로 작성된 코드를 서블릿 코드로 변환한다(java 파일 생성)
- 서블릿 코드를 컴파일한다.(class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
- 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
JSP 코드 첫줄에는 page 지시자가 있다. 언어 컨텐츠의 타입, 인코딩 형식을 기술한다.
그리고 지시문 이후에 html 코드를 작성한다.
JSP는 대표적으로 선언문, 스크립트릿, 표현식이라는 3가지 스크립트 요소를 제공한다.
선언문(Declaration) - <%! 문장 %>
- JSP 내에서 필요한 멤버 변수나 메소드가 필요할 때 선언해 사용하는 요소
- 선언문을 사용하면 해당 jsp파일이 서블릿으로 바뀔 때, Service() 메소드가 아니라 클래스의 바디부분에 해당 코드가 추가된다. 따라서 jsp 파일 내에서 선언문의 위치는 상관없다.
스크립트릿(Scriptlet) - <% 문장 %>
- 프로그래밍 코드 기술에 사용
- jsp가 서블릿으로 바뀔 때, Service() 메소드 내의 자바 코드로 바뀐다.
- 스크립트릿에서 선언된 변수는 Service() 메소드의 지역변수다
- 주로 프로그래밍의 로직을 기술할 때 사용한다.
표현식(Expresstion) - <%= 문장 %>
- JSP 내에서 웹 브라우저에 출력할 부분을 표현. 응답 결과에 포함할 부분을 넣을 때 사용.
- 표현식 안에 내용은 out.print(); 안에 들어간다.
- 스크립트릿 내에 출력할 부분을 내장객체인 out 객체의 print() 또는 println() 메소드를 사용해 출력
- 스크립트릿으로 <% out.println(getId()) %> 작성한 것이 표현식을 사용하면 <%= getId())%> 와 같다. 그러면 getId()의 리턴값이 응답 결과에 포함된다.
주석(Comment) - <%-- 문장 --%>
- html, java, jsp의 주석들을 다 사용할 수 있음
- jsp 주석은 jsp 파일이 서블릿으로 바뀔 때, 생략되고
- java 주석은 html 응답 결과에서 생략되고
- html 주석은 브라우져에 표현되지 않는다.
jsp를 실행하면 서블릿 소스가 생성되고 실행된다. 대부분의 jsp 코드는 서블릿 소스의 _jspService() 메소드 안에 삽입되는 코드로 생성된다.
_jspService() 에 삽입된 코드의 윗 부분에 미리 선언된 객체들이 있는데, 해당 객체들을 당연히 jsp에서도 사용 가능하다. response, request, application, seesion, out과 같은 변수를 jsp 내장 객체라고 한다.
내장객체의 종류 - 출처: www.boostcourse.org/web326/lecture/58961/?isDesc=false
내장 객체(참조 변수 이름) | 자바 클래스 | 주요 역할 |
requeset | javax.servlet.http.HttpServletRequest | HTML Form 요소 선택값과 같은 사용자 입력 정보를 읽어올 때 사용 |
response | javax.servlet.http.HttpServletResponse | 사용자 요청에 대한 응답을 처리할 때 사용 |
pageContext | javax.servlet.jsp.PageContext | 현재 JSP 실행에 대한 context 정보를 참조하기 위해 사용 |
session | javax.servlet.http.HttpSession | 클라이언트 세션 정보를 처리하기 위해 사용 |
application | javax.servlet.ServletContext | 웹 서버의 애플리케이션 처리와 관련된 정보를 참조하기 위해 사용 |
out | javax.servlet.jsp.JspWriter | 사용자에게 전달하기 위한 output 스트림을 처리하기 위해 사용 |
config | javax.servlet.ServletConfig | 현재 JSP에 대한 초기화 환경을 처리하기 위해 사용 |
page | javax.servlet.HttpJspPage | 현재 JSP 페이지에 대한 클래스 정보 |
exception | java.lang.Throwable | 예외 처리를 위해 사용 |
'study > jsp, servlet ...' 카테고리의 다른 글
표현 언어 - EL(Expession Language) (0) | 2021.03.16 |
---|---|
scope (0) | 2021.03.09 |
redirect, forward + servlet, jsp (0) | 2021.03.07 |
Servlet (0) | 2021.02.26 |
WAS (0) | 2021.02.24 |