English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JSP 문법

이 장에서는 JSP 개발의 기본 문법을 간단히 소개하겠습니다.

스크립트 프로그램

스크립트 프로그램은 스크립트 언어에서 유효한 Java 문장, 변수, 메서드, 표현식을 포함할 수 있습니다.

스크립트 프로그램의 문법 형식:

<% 코드 절 %>

또는, 이와 동일한 의미를 가진 XML 문장을 작성할 수도 있습니다. 예를 들어 다음과 같습니다:

<jsp:scriptlet>
   코드 조각
</jsp:scriptlet>

텍스트, HTML 태그, JSP 요소는 스크립트 프로그램 밖에 적어야 합니다.

다음은 예제이자 이 튜토리얼의 첫 번째 JSP 예제입니다:

<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("당신의 IP 주소는 ") + request.getRemoteAddr());
%>
</body>
</html>

주의:Apache Tomcat이 C:\apache-tomcat-7.0.2디렉토리에 배치하고 환경이 올바르게 설정되어 있는지 확인하세요.

위 코드를 hello.jsp에 저장한 후 C:\apache-tomcat-7.0.2\webapps\ROOT 디렉토리에 접속하여 브라우저에서 주소 탐색기에 http://localhost:8080/hello.jsp. 실행 후 다음 결과를 얻습니다:

중국어 인코딩 문제

صف면에서 중국어를 정상적으로 표시하려면 JSP 파일 헤더에 다음 코드를 추가해야 합니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">

다음으로 이 프로그램을 변경하겠습니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼 웹(oldtoolbag.com)</title>
</head>
<body>
Hello World!<br/>
<%
out.println("당신의 IP 주소 ") + request.getRemoteAddr());
%>
</body>
</html>

이렇게 중국어는 정상적으로 표시될 수 있습니다.

    JSP 선언

한声明문은 하나 이상의 변수, 메서드를 선언할 수 있으며, 이는 이후의 Java 코드에서 사용할 수 있습니다. JSP 파일에서는 이 변수와 메서드를 사용하기 전에 먼저 선언해야 합니다.

JSP 선언 문법 형식:

<%! declaration; [ declaration; ]+ ... %>

또는, 이와 동일한 의미를 가진 XML 문장을 작성할 수도 있습니다. 예를 들어 다음과 같습니다:

<jsp:declaration>
   코드 조각
</jsp:declaration>

프로그램 예제:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %>

    JSP 표현식

JSP 표현식에 포함된 스크립트 언어 표현식은 먼저 String으로 변환되고, 표현식이 나타나는 위치에 삽입됩니다.

표현식의 값이 String으로 변환됨을 감안하여, 텍스트 행에서 표현식을 사용할 수 있으며, 이가 HTML 태그인지 여부를 고려하지 않아도 됩니다.

표현식 요소는 Java 언어 표준에 맞는 어떤 표현식도 포함할 수 있지만, 표현식을 종료하는 세미콜론을 사용할 수 없습니다.

JSP 표현식 문법 형식:

<%= 표현식 %>

그리고, 동일한 의미를 가진 XML 문장을 작성할 수도 있습니다:

<jsp:expression>
   표현식
</jsp:expression>

프로그램 예제:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼 웹(oldtoolbag.com)</title>
</head>
<body>
<p>
   오늘의 날짜는: <%= (new java.util.Date()).toLocaleString() %>
</p>
</body> 
</html>

실행 후 다음과 같은 결과를 얻습니다:

오늘의 날짜는: 2016-6-25 13:40:07

    JSP 주석

JSP 주석은 주로 두 가지 목적을 가지고 있습니다. 코드에 주석을 달고, 특정 코드 부분을 주석으로 처리합니다.

JSP 주석 문법 형식:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼 웹(oldtoolbag.com)</title>
</head>
<body>
<%-- 이 부분 주석은 웹 페이지에서 표시되지 않습니다--%> 
<p>
   오늘의 날짜는: <%= (new java.util.Date()).toLocaleString() %>
</p>
</body> 
</html>

실행 후 다음과 같은 결과를 얻습니다:

오늘의 날짜는: 2016-6-25 13:41:26

주석 사용 문법 규칙은 다양합니다:

문법                설명
                <%-- 주석 --%>                JSP 주석, 주석 내용은 브라우저로 전송되지 않으며 컴파일되지도 않습니다
                <!-- 주석 -->                HTML 주석, 웹 페이지 소스 코드를 브라우저에서 확인할 때 주석 내용을 볼 수 있습니다
                <\%                정적 <% 상수를 나타냅니다
                %\>                정적 %> 상수를 나타냅니다
                \'                속성에서 사용하는 단락 괄호
                \"                속성에서 사용하는 양쪽 괄호

    JSP 지시어

JSP 지시어는 전체 JSP 페이지와 관련된 속성을 설정하는 데 사용됩니다.

JSP 지시어 문법 형식:

<%@ directive attribute="value" %>

이곳에는 세 가지 지시어 태그가 있습니다:

지시어설명
                <%@ page ... %>                페이지의 의존 속성 정의, 예를 들어 스크립트 언어, error 페이지, 캐시 요구 등
                <%@ include ... %>                기타 파일 포함
                <%@ taglib ... %>                라벨 라이브러리 정의를 소개합니다. 사용자 정의 태그가 될 수 있습니다.

    JSP 행위

JSP 행위 태그는 servlet 엔진을 제어하기 위해 XML 구조를 사용합니다. 파일을 동적으로 삽입하고 JavaBean 컴포넌트를 재사용하고 사용자를 다른 페이지로 이동시키고, Java 플러그인에 대한 관련 HTML을 생성할 수 있습니다.

행위 태그는 하나의 문법 형식만 가지며, XML 표준을 엄격히 준수합니다:

<jsp:action_name attribute="value"> />

행위 태그는 일반적으로 사전에 정의된 함수들이며, 다음 표는 사용할 수 있는 일부 JSP 행위 태그를 나열합니다:

문법설명
                jsp:include                현재 페이지에 정적이거나 동적 리소스를 포함하는 데 사용됩니다
                jsp:useBean                JavaBean 컴포넌트를 찾고 초기화합니다
                jsp:setProperty                JavaBean 컴포넌트의 값을 설정합니다
                jsp:getProperty                JavaBean 컴포넌트의 값을 output에 삽입합니다
                jsp:forward                사용자 요청을 포함한 요청 객체를 하나의 JSP 파일에서 다른 파일로 전달합니다
                jsp:plugin                생성된 HTML 페이지에 Applet과 JavaBean 객체를 포함하는 데 사용됩니다
                jsp:element                동적으로 생성된 XML 요소를 생성합니다
                jsp:attribute                동적으로 생성된 XML 요소의 속성을 정의합니다
                jsp:body                동적으로 생성된 XML 요소의 본문을 정의합니다
                jsp:text                템플릿 데이터를 포장하는 데 사용됩니다

    JSP 숨겨진 객체

JSP는 9개의 자동 정의된 변수를 지원합니다. 이 9개의 숨겨진 객체는 '江湖人称隐含对象'로 불립니다. 이 9개의 숨겨진 객체의 간단한 소개는 다음 표에 나와 있습니다:

객체설명
                requestHttpServletRequest클래스의 예제
                responseHttpServletResponse클래스의 예제
                outPrintWriter결과를 웹 페이지에 출력하는 데 사용되는 클래스의 예제
                sessionHttpSession클래스의 예제
                applicationServletContext애플리케이션 컨텍스트와 관련된 클래스의 예제
                configServletConfig클래스의 예제
                pageContextPageContextJSP 페이지에 있는 모든 객체와 이름 공간에 대한 접근을 제공하는 클래스의 예제
                page                Java 클래스에서의 this 키워드와 유사
                exceptionexception 에러가 발생한 JSP 페이지에 해당하는 예외 객체를 대표하는 클래스의 객체

    제어 흐름 문

JSP는 Java 언어에 완벽한 지원을 제공합니다. JSP 프로그램에서 Java API를 사용하거나 Java 코드 블록을 만들 수 있습니다. 이는 조건문과 루프 문 등을 포함합니다.

    조건 문장

If…else 블록을 보여드리겠습니다. 다음은 이 예제입니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<% int day = 3; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼(oldtoolbag.com)</title>
</head>
<body>
<h2>IF...ELSE 예제</h2>
<% if (day == 1 | day == 7) { %>
      <p>오늘은 주말입니다</p>
<% } else { %>
      <p>오늘은 주말이 아닙니다</p>
<% } %>
</body> 
</html>

실행 후 다음과 같은 결과를 얻습니다:

IF...ELSE 예제
오늘은 주말이 아닙니다

이제 switch…case 블록을 보여드리겠습니다. if…else 블록과는 크게 다릅니다. out.println()를 사용하며, 전체가 스크립트 프로그램의 태그 안에 포함되어 있습니다. 다음과 같이 보입니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<% int day = 3; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼(oldtoolbag.com)</title>
</head>
<body>
<h2>SWITCH...CASE 예제</h2>
<% 
switch(day) {
case 0:
   out.println("일요일");
   break;
case 1:
   out.println("월요일");
   break;
case 2:
   out.println("화요일");
   break;
case 3:
   out.println("수요일");
   break;
case 4:
   out.println("목요일");
   break;
case 5:
   out.println("금요일");
   break;
default:
   out.println("토요일");
}
%>
</body> 
</html>

브라우저에서 접속하여 실행 후 다음과 같은 결과를 얻습니다:

SWITCH...CASE 예제
수요일

반복 문장

JSP 프로그램에서는 Java의 세 가지 기본 반복문 유형을 사용할 수 있습니다: for, while, 그리고 do…while.

이제 for 반복문 예제를 보여드리겠습니다. 다음은 "기본 튜토리얼 웹"이라는 텍스트의 다른 폰트 크기를 출력하는 예제입니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<% int fontSize; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼 웹(oldtoolbag.com)</title>
</head>
<body>
<h2>For 반복문 예제</h2>
<% for (fontSize = 1; fontSize <= 3; fontSize++){ %>
   <font color="green" size="<%= fontSize %>">
    기본 강의
   </font><br />
<%}%>
</body> 
</html>

실행 후 다음과 같은 결과를 얻습니다:

이 예제를 while 반복문으로 작성하면 다음과 같이 됩니다:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8">
<% int fontSize=0; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>기본 튜토리얼(oldtoolbag.com)</title>
</head>
<body>
<h2>While 루프 예제</h2>
<%while ( fontSize <= 3){ %>
   <font color="green" size="<%= fontSize %>">
    기본 강의
   </font><br />
<%fontSize++;%>
<%}%>
</body> 
</html>

브라우저 접근, 출력 결과는 (fontSize 초기值为0이므로 추가 행이 출력되었습니다):

    JSP 연산자

JSP는 모든 Java 논리적 및 수학 연산자를 지원합니다.

다음 표는 JSP에서 일반적으로 사용되는 연산자와 그 우선순위를 나열합니다:

분류연산자결합성
                후행                () [] . (점 연산자)                왼쪽에서 오른쪽으로
                원자적                ++ - - ! ~                오른쪽에서 왼쪽으로
                곱셈성                * / %                 왼쪽에서 오른쪽으로
                가산성                + -                 왼쪽에서 오른쪽으로
                이동                >> >>> <<                  왼쪽에서 오른쪽으로 
                관계                > >= < <=                  왼쪽에서 오른쪽으로
                일치/불일치                == !=                 왼쪽에서 오른쪽으로
                비트와                &                 왼쪽에서 오른쪽으로
                비트 독립적 또는                ^                 왼쪽에서 오른쪽으로
                비트 또는                |                 왼쪽에서 오른쪽으로
                논리적과                &&                 왼쪽에서 오른쪽으로
                논리적 또는                ||                 왼쪽에서 오른쪽으로
                조건 판단                ?:                 오른쪽에서 왼쪽으로
                할당                = += -= *= /= %= >>= <<= &= ^= |= |=                 오른쪽에서 왼쪽으로
                쉼표                 ,                 왼쪽에서 오른쪽으로 

    JSP 리터럴

JSP 언어는 다음과 같은 몇 가지 리터럴을 정의했습니다:

  •             부울형 (boolean): true와 false;

  •             정수형 (int): Java와 동일;

  •             소수점형 (float): Java와 동일;

  •             문자열 (string): 단락 표시기로 시작하고 끝;

  •             Null: null.