지난 포스트에서는 JSP 페이지의 설정 정보를 담당하는 디렉티브 태그에 이번에는 JSP 페이지를 구성하는 스크립트 요소
에 대해 알아보겠습니다.
스크립트 요소
에는 선언문(Declaration Tag), 표현식(Expression Tag), 스크립트릿(Scriptlet)
의 세 가지가 있습니다.
선언문(Declaration Tag)
는 JSP 페이지에서 사용할 변수나 메소드를 선언하는 태그입니다.
<%! 변수|메소드 선언 %>
이렇게 작성된 변수와 메소드는 (자바 서블릿) 클래스 변환 과정에서 클래스의 멤버 변수와 멤버 메소드로 들어가게 됩니다.
다음과 같이 선언문 예제 코드를 작성합니다.
//scriptElements.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%!
String name = "JSP";
public String getName() {
return name;
}
%>
<html>
<head>
<title>스크립트 요소 연습</title>
</head>
<body>
<h2>Hello <%=name %>!</h2>
</body>
</html>
선언문을 사용해서 변수와 메소드를 선언했습니다. 그리고 이 선언문은 .java 파일로 해석될 때 멤버 변수가 됩니다. 이때 <%= %>
는 표현식 태그인데요. 표현식에 대해서는 잠시 후에 다룰 예정이니 지금은 그렇구나 하고 넘어갑시다.전달된 name 변수값이 잘 나타났죠?
변환된 .java 파일에 선언문에 선언한 변수와 메소드가 있음을 확인할 수 있습니다.
getName()
은 그냥 메소드 선언을 보여주려고 만든 메소드입니다.
스크립트릿(Scriptlet)
은 동적 웹 페이지를 구현하기 위한 자바 코드를 적는 태그입니다.
하지만 최근에는 액션 태그
라는 것을 이용해서 동적 웹 페이지를 구현합니다. 그래서 스크립트릿을 사용한 자바 코드를 사용할 일이 거의 없기에 간단히만 알아보겠습다.
<% 자바 소스 코드 %>
위 코드를 다음과 같이 수정한 뒤 서버를 실행하고 http://localhost:8090/HelloJSP_war_exploded/scriptElements.jsp?str=안녕
으로 접속해봅시다.
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%!
String name = "JSP";
%>
<%
String str = request.getParameter("str");
%>
<html>
<head>
<title>스크립트 요소 연습</title>
</head>
<body>
<h2>Hello <%=name %>!</h2>
<h2>전달받은 문자열: <%=str %></h2>
</body>
</html>
표현식(Expression Tag)
은 JSP 파일에서 변수나 메소드의 결과를 출력하기 위해 사용되는 태그입니다. 위에서 봤던대로 표현식에 변수명을 넣어서 출력하게 했던 예제들 기억하시죠?
<%=값 %>
값으로는 단순 값, 변수, 식을 넣을 수 있습니다.
한 가지 주의할 점은 선언문, 스크립트릿과는 다르게 표현식에서 세미콜론;
을 사용하지 않습니다.
소스 코드를 다음과 같이 변경합니다. 표현식은 요청 파라미터의 number 값에 10을 곱하고 출력합니다>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%!
String name = "JSP";
%>
<%
String number = request.getParameter("number");
%>
<html>
<head>
<title>스크립트 요소 연습</title>
</head>
<body>
<h2>Hello <%=name %>!</h2>
<h2>number * 10 = <%=Integer.parseInt(number) * 10 %> </h2>
</body>
</html>
방금 연 페이지를 크롬 개발자 도구의 소스를 통해 살펴보면 오직 HTML(+CSS, JS)만 전송됨을 확인할 수 있습니다. 이처럼 스크립트 요소들은 서블릿 클래스로 변경되어 서버(컨테이너)에서만 동작할 뿐 브라우저에 전송되지 않습니다.
JSP도 당연히 주석을 달 수 있습니다. JSP에서 주석을 다는 방법에는 HTML, Java, JSP
세 가지 방법이 있습니다.
- HTML 주석
HTML 주석
은 말그대로 HTML 문서에서 사용하던 주석을 사용하는 방법입니다. JSP 페이지에서 HTML 태그를 이용하기에 사용되는 주석입니다.<!-- 주석 -->
- Java 주석
Java 주석
은 자바 코드를 작성하는 스크립트릿 내에서 사용됩니다.//주석 /* 주석 */
- JSP 주석
JSP 주석
은 JSP 페이지의 스크립트 요소들에 대해 주석 처리를 하기 위해 사용되는 주석입니다.<%-- 주석 --%>
각 주석 방식을 한 번에 사용하면 다음과 같습니다. (velog에서 jsp를 완전하게 지원하지 않아서 주석 흐림 처리가 제대로 안되어있습니다.)
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <%-- JSP 주석 --%> <% //Java 주석1 /* Java 주석2 */ %> <html> <head> <title>스크립트 요소 연습</title> </head> <body> <!-- HTML 주석 --> </body> </html>