English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 장에서는 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>
이렇게 중국어는 정상적으로 표시될 수 있습니다.
한声明문은 하나 이상의 변수, 메서드를 선언할 수 있으며, 이는 이후의 Java 코드에서 사용할 수 있습니다. JSP 파일에서는 이 변수와 메서드를 사용하기 전에 먼저 선언해야 합니다.
JSP 선언 문법 형식:
<%! declaration; [ declaration; ]+ ... %>
또는, 이와 동일한 의미를 가진 XML 문장을 작성할 수도 있습니다. 예를 들어 다음과 같습니다:
<jsp:declaration> 코드 조각 </jsp:declaration>
프로그램 예제:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
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 주석 문법 형식:
<%@ 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 지시어 문법 형식:
<%@ directive attribute="value" %>
이곳에는 세 가지 지시어 태그가 있습니다:
지시어 | 설명 |
---|---|
<%@ page ... %> | 페이지의 의존 속성 정의, 예를 들어 스크립트 언어, error 페이지, 캐시 요구 등 |
<%@ include ... %> | 기타 파일 포함 |
<%@ taglib ... %> | 라벨 라이브러리 정의를 소개합니다. 사용자 정의 태그가 될 수 있습니다. |
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는 9개의 자동 정의된 변수를 지원합니다. 이 9개의 숨겨진 객체는 '江湖人称隐含对象'로 불립니다. 이 9개의 숨겨진 객체의 간단한 소개는 다음 표에 나와 있습니다:
객체 | 설명 |
---|---|
request | HttpServletRequest클래스의 예제 |
response | HttpServletResponse클래스의 예제 |
out | PrintWriter결과를 웹 페이지에 출력하는 데 사용되는 클래스의 예제 |
session | HttpSession클래스의 예제 |
application | ServletContext애플리케이션 컨텍스트와 관련된 클래스의 예제 |
config | ServletConfig클래스의 예제 |
pageContext | PageContextJSP 페이지에 있는 모든 객체와 이름 공간에 대한 접근을 제공하는 클래스의 예제 |
page | Java 클래스에서의 this 키워드와 유사 |
exception | exception 에러가 발생한 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 언어는 다음과 같은 몇 가지 리터럴을 정의했습니다:
부울형 (boolean): true와 false;
정수형 (int): Java와 동일;
소수점형 (float): Java와 동일;
문자열 (string): 단락 표시기로 시작하고 끝;
Null: null.