
스크립트의 요소란 JSP 프로그래밍에서 사용되는 문법의 표현 형태를 말함
JSP의 스크립트 요소에는 4가지가 있음
<%@ page contentType="text/html;charset=EUC-KR"%>
<html>
<title>JSP 스크립트 Example</title>
<body>
<h1>Script Example</h1>
<%!
String declaration = "Declaration";
%>
<%!
public String decMethod() {
return declaration;
}
%>
<%
String scriptlet = "Scriptlet";
String comment = "Comment";
out.println("내장객체를 이용한 출력 : " + declaration + "<p>");
%>
선언문의 출력1 : <%=declaration%><p>
선언문의 출력2 : <%=decMethod()%><p>
스크립트릿의 출력 : <%=scriptlet%><p>
<!--JSP주석부분-->
<!--JSP 주석1 : <%=comment%>--><p>
<%--JSP 주석2 : <%=comment%> --%>
<% /* 주석
(여러줄 주석)
*/
%>
<%// 주석(한줄 주석%>
</body>
</html>
위 코드의 출력 결과는 아래와 같음
Script Example 1
내장객체를 이용한 출력 : Declaration
선언문의 출력1 : Declaration
선언문의 출력2 : Declaration
스크립트릿의 출력 : Scriptlet
JSP에서 사용될 변수나 메소드를 선언할 수 있는 영역의 요소
선언문에서 선언된 변수를 '멤버 변수'라고 부름
<%!
String name = "JSPStudy";
int year = 2013;
%>
선언문에서 선언된 변수는 JSP 페이지가 서블릿 코드로 변환되면, 서블릿 클래스의 멤버변수가 됨
-> JSP 페이지 어느 곳에서든지 이 변수의 값을 참조하여 동적으로 HTML을 생성할 수 있음
<%!
String name = "Korea";
public String getName() {
return name;
}
%>
But 스크립트 요소 중에서 선언문은 잘 사용되지 않음
보통 클래스 내 여러 메소드에서 공통적으로 사용되는 값을 멤버 변수로 선언하지만, JSP 페이지에서 메소드를 선언하는 일이 거의 없음
JSP 페이지에서 선언된 메소드는 자신의 페이지에서만 반복적으로 사용할 수 있기 때문에, 차라리 반복적으로 사용할 기능의 메소드가 필요하다면 자바 파일을 만들어서 모든 JSP 페이지에서 참조하여 사용하기 때문
일반적으로 가장 많이 사용되는 스크립트 요소
JSP 페이지가 서블릿으로 변환되고 요청될 때 _jspService 메소드 안에 선언이 되는 요소
스크립트릿은 선언문과 달리 선언된 변수는 지역 변수로 선언이 되고, 메소드 선언은 할 수 없음 (반드시 초기화를 해줘야 함)
<%
이곳에 필요한 자바코드를 삽입합니다.(지역 변수 선언, for, while, if 등...)
%>
변수를 출력하거나 메소드의 결과 값을 브라우저에 출력할 수 있음
스크립트릿 코드 내에서 out이라는 내장객체를 통해서 브라우저에 출력할 수도 있음
표현식에서는 서블릿 코드로 변환될 때 자동적으로 세미콜론이 붙여지기 때문에, 변수나 메소드를 출력하려고 할 때 세미콜론을 표기하지 않아도 됨
<%=변수 혹은 메소드%>
<%!
String name[] = {"Java", "JSP", "Android", "Struts"};
%>
<% for (int i=0; i < name.length; i++) { %>
<tr><td><%=i%></td>
<td><%=name[i]%></td>
</tr>
<%}%>
<!-- Fighting <%=name%> -->
서블릿으로 코드 전환될 때 주석 안에 있는 표현식을 컴파일한 후 생성되는 출력물이 주석으로 처리됨
<%-- Fighting <%=name%> --%>
서블릿으로 코드 전환될 때도 위 주석은 무시됨
<% /*주석.....여러 줄 주석 및 부분 주석)*/ %>
<% //주석.....(한 줄 주석)%>
if.html
<form method="post" action="if.jsp">
이름 : <input name="name><p/>
좋아하는 색깔 : <select name="color">
<option value="blue" selected>파란색</option>
</select><p/>
if.jsp
<%@ page contentType="text/html;charset=EUC-KR"%>
<h1>If-else Example</h1>
<%!
String msg;
%>
<%
String name = request.getParameter("name");
String color = request.getParameter("color");
if (color.equals("blue")) {
msg = "파란색";
}
else if (color.equals("red")) {
msg = "붉은색";
}
else {
color = "white";
msg = "기타색";
}
%>
<body bgcolor=<%=color%>>
<b><%=name%></b>님이 좋아하는 색깔은 <b><%=msg%></b>입니다
</body>
for.jsp
<%@ page contentType="text/html;charset=EUC-KR"%>
<h1>For Example</h1>
1에서 10까지의 합은 ?<p>
<%
int i, sum = 0;
for (i=1; i<=10; i++) {
if (i<10) {
%>
<%=(i + " +")%>
<%
} else {
out.println(i + " = ");
} // if-else
sum += i;
} // for
%>
<%=sum%>
while.jsp
<%@ page contentType="text/html;charset=EUC-KR"%>
<h1>While Example</h1>
1에서 10까지의 합은 ?<p>
<%
request.setCharacterEncoding("EUC-KR");
String msg = request.getParameter("msg");
int number = Integer.parseInt(request.getParameter("number"));
int count = 0;
while (number > count) {
%>
<b><%=msg%></b><br/>
<%
count++;
}
%>