| JSP(Java Server Page)란?

 Java를 이용한 서버 사이드 스크립트언어로 같은 부류에 속하는 것으로는 PHP, ASP가 있다.
확장자는 . 주로 결과를 출력할때 jsp를 사용한다.
실행시에 java.servlet.http.HttpServlet 클래스를 상속받는 자바 소스코드로 변환된 다음 컴파일되어 실행된다. 이 JSP 파일은 Servlet 클래스로 변환하고 실행시켜주는 역할을 하는 프로그램이 Servlet Container이다.
항상 JSP는 서블릿으로 바껴서 실행된다는 점을 기억하자. HTML 파일과 비슷하게 생겼다고 HTML 작동과 유사할 것이라고 생각하면 안된다. 대표적으로 오픈 소스 웹 서버/ 서블릿 컨테이너인 톰캣이 있다. 하나의 JSP 페이지가 하나의 자바 클래스이기 때문에 모든 자바 라이브러리를 끌어다 쓸 수 있다. 그러나 디자인 적용, 수정 등의 문제로 Java언어대신에 JSP에 등장하게 된 것이 JSTL과 EL인데, 이건 나중에 살펴보자.

 

 

 

| JSP와 Servlet의 상관관계

서블릿과 JSP는 서로 상호 보완적인 관계를 가지고 있다. 서블릿은 IDE 등에서 지원을 좀 더 잘해주므로 로직을 구현하기에 알맞지만, HTML을 출력하기엔 불편하다. JSP는 로직을 구현하는 것은 불편하지만 필요한 html문을 그냥 입력하면 되므로 HTML을 출력하기엔 편리하다. 이러한 서블릿과 JSP를 좀 더 잘 사용하기 위해서 forward가 사용되는 경우가 많다. 즉, Servlet과 JSP의 장단점을 해결하기 위해서 Servlet에서 프로그램 로직이 수행되고, 그 결과를 JSP에게 포워딩하는 방법이 사용되게 되었다. 이를 Servlet과 JSP연동이라고 한다.

 

 

 

 

forward란?

WAS의 서블릿이나 JSP가 요청을 받은 후 그 요청을 처리하다가, 추가적인 처리를 같은 웹 어플리케이션안에 포함된 다른 서블릿이나 JSP에게 위임하는 경우가 있다. 이렇게 위임하는 것을 포워드(forward)라고 한다. 위 그림으로 forward가 어떻게 동작되는지 살펴보면 다음과 같다.

1. 웹 브라우저에서 Servlet1에게 요청을 보냄
2. Servlet1은 요청을 처리한 후, 그 결과를 HttpServletRequest에 저장
3. Servlet1은 결과가 저장된 HttpServletRequest와 응답을 위한 HttpServletResponse를 같은 웹 어플리케이션 안에 있는 Servlet2에게 전송(forward)
4. Servlet2는 Servlet1으로 부터 받은 HttpServletRequest와 HttpServletResponse를 이용하여 요청을 처리한 후 웹 브라우저에게 결과를 전송

 

 

 

 

| JSP 스크립트 요소 문법

JSP는 HTML태그와 자바코드를 섞어서 개발할 수 있다. JSP 페이지에서는 선언문(Declaration), 스크립트릿(Scriptlet), 표현식(Expression) 이라는 세 가지의 스크립트 요소를 제공하고 있다. 그 외의 기타 구성 요소로 디렉티브(Driective), 표현언어(Expression Language), 기본 객체(Implicit Object), 정적인 데이터, 표준 액션 태그(Action Tag), 커스텀 태그(Custom Tag)와 표준 태그 라이브러리(JSTL), Filter & Listener 등이 있다.