JSP 는 HTML 태그와 자바코드를 섞어서 개발할 수 있습니다. JSP 에서 자바코드는 어떻게 입력을 하는지, 어떤 결과를 출력하려면 어떤 것을 사용해야하는지에 대해서 알아보도록 하겠습니다.
스크립트 요소의 이해
JSP 페이지에서는 선언문(Declaration), 스크립트릿(Scriptlet), 표현식(Expression) 이라는 3가지의 스크립트 요소를 제공합니다.
스크립트릿 Scriptlet
1. 스크립트릿 : <% %>
가장 일반적으로 많이 쓰이는 스크립트 요소입니다. 주로 프로그래밍의 로직을 기술할 때 사용합니다. 여기서 말하는 로직이란 Java 프로그램 뿐만 아니라 HTML 이 포함된 로직도 의미합니다. 무슨 말인지는 뒤에 이어지는 실습을 통해서 더 알아보도록 하겠습니다. 스크립트릿에서 선언된 변수는 지역변수입니다. 왜냐하면 스크립트릿 안에서 작성한 코드는 전부 서블릿으로 변환되면서 Service( ) 메서드 안에 작성되기 때문에 그렇습니다. 실습을 통해서 알아보겠습니다. 스크립트릿에서 Java 로직은 위의 코드처럼 한 스크립트릿에서 마무리되지 않아도 됩니다. 또한 이러한 점을 이용하면 HTML 과 함께 동작하는 Java 로직을 스크립트릿을 활용하여 작성할 수 있습니다. 실행결과를 보겠습니다.
이런 식으로 H0 ~ H5 까지 스크립트릿과 표현식을 활용하여 jsp 로 작성하였습니다. jsp 가 실행되어 작성된 servlet 파일을 살펴보겠습니다.
서블릿이 위와 같이 작성된 것을 확인할 수 있습니다. 계속 말하지만 JSP 의 핵심은 jsp 가 서블릿으로 바뀔 때 어떻게 바뀌는지 파악하는 것입니다.
표현식 Expression
1. 표현식 : <%= %>
표현식은 응답결과에 어떤 것을 표현하고 싶을 때 활용합니다. JSP 페이지에서 웹 브라우저에 출력할 부분을 표현합니다. 다른 말로 응답에 포함하고 싶은 것을 표현식을 활용하여 표현합니다. 스크립트릿 내에서 출력할 부분은 내장객체인 out객체의 print( ) 또는 println( ) 메서드를 사용해서 출력해줄 수 있습니다.
선언문 Declaration
1. 선언문 : <%! %>
선언문은 JSP 페이지 내에서 멤버변수나 메서드가 필요할 때 선어하여 사용할 수 있게 하는 요소입니다. 선언문 안에 사용하면 Service 메서드 안에 내용이 작성되지 않기 때문에 필요한 멤버 변수나 필드를 선언하여 사용할 수 있게 됩니다. 예시와 함께 더 자세히 알아보도록 하겠습니다. 선언문은 WAS 가 서블릿으로 변경할 때 실행이 되기 때문에 실제 jsp 파일에서의 위치가 중요하지 않은 특징이 있다. 따라서 위의 코드에서 getId( ) 메서드를 사용하는 위치보다 아래에서 선언문을 통해 getId( ) 메서드를 선언해도 문제가 발생하지 않는다. 실행을 시켜보았더니 우리가 설정한 id 가 그대로 출력된 것을 확인할 수 있다. 실제로 이 코드가 어떻게 만들어졌는지 확인해보겠습니다. 즉, JSP 가 WAS에 의해서 java 파일로 수정된 것을 보겠다는 겁니다. Service 메서드가 아니라 body 영여에 위와 같은 코드가 생성된 것을 확인할 수 있습니다.
주석
JSP 는 HTML, Java, Jsp 의 특성이 섞인 것처럼 보이기도 하는데요. 이런 특성이 잘 드러나는 것이 JSP의 주석 부분입니다. JSP 의 주석은 HTML, Java, Jsp 의 모든 주석을 사용할 수 있습니다. 그런데 각 주석마다 약간의 차이점이 있으니 다음을 보고 확인합니다.
1. JSP 주석 : <%-- --%>
JSP 주석은 다른 주석들과는 다른 특징이 있습니다. JSP 주석은 JSP 자체의 주석이기 때문에 WAS 가 해당 JSP 를 실행하기 위해 Servlet 으로 변형할 때 무시됩니다. JSP 페이지에서만 동작하는 주석으로 JSP 페이지가 서블릿으로 변형되는 단계에서 변형되지 않고 무시됨. 즉 웹 브라우저에서 소스보기를 해도 표현되지 않습니다.Java or HTML 주석일 경우에는 실제로 Servlet 으로 같이 변형되는데, 단지 Java or HTML 주석이기 때문에 실행되지 않을 뿐입니다.
2. HTML 주석 : <!-- -->
HTML 주석은 <!-- --> 형태로 작성합니다. HTML 주석은 Java 로 변형되었다가 실제로 웹 브라우저로 전달되었을 때 화면에 표시되지 않습니다. 즉 클라이언트의 웹 브라우저에 전달되기 전까지 HTML 주석은 실제 값으로 전달됩니다.
3. JAVA 주석 : // or /* */
Servlet 으로 변경될 때는 함께 변형되었다가 Java 가 동작할 때는 동작하지 않습니다.
주석 실습
JSP, HTML, Java 의 주석들을 작성해보았습니다. 각 주석마다 약간의 차이들이 존재합니다. 실제로 생성된 Servlet 을 확인하면 JSP 주석은 Servlet 으로 함께 변형되지 않은 것을 확인할 수 있습니다.