JSP페이지는 HTML문서 사이에 JSP코드가 삽입되는 특징을 가집니다.
웹 컨테이너는 JSP페이지를 서블릿클래스의 코드로 변환시키고, 그 소스들을 컴파일을 합니다.
그리고그 결과를 가지고 서블릿객체를 만들고, 이 객체를 초기화하여 서블릿을 만들게 됩니다.
즉, 웹 브라우저에서 실행되는 것은 바로 서블릿 입니다.
이제 JSP에 대해 본격적으로 알아보죠
JSP는 크게 3가지 형태로 코드를 작성합니다.
1. <% ... %>
2. ${ ... }
3. <jsp:forward>등 과 같은 xml형태 [액션태그(Action tag)]
JSP는 JSP페이지를 구성하기 위한 다양한 구성 요소들을 제공합니다.
그 중 여기서는 지시자(Directive), 스크립팅 요소(scripting elements)에세 대해서 알아보려고 합니다.
먼저 스크립팅요소 입니다.
스크립팅 요소에는 3가지의 문법이 있습니다.
1. 스크립틀릿(scriptlet)
2. 익스프레션(expression)
3. 선언부(declaration)
스크립틀릿은 <% 로 시작해서 %>로 끝나고, 이 사이에 자바 코드들을 작성 할 수가 있습니다.
익스프레션은 <%= 로 시작해서 %>로 끝나고, 이 사이에는 자바 식들을 작성 할 수가 있습니다.
여기 적힐 식들은 상수나 변수 이름 하나로 작성 할 수도 있고, 연산자를 포함하는 식이 적힐 수 도 있고, 리턴값을 가지는 메소드가 올 수도 있습니다.
선언부는 <%! 로 시작해서 %>f로 끝이나고, 이 사이에 메소드를 선언할 수있습니다.
역시 눈으로 직접 확인해야 빠르죠 ㅎ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>1부터 100까지의 합 구하기</title> </head> <body> <% int total = 0; for(int cnt = 1; cnt <= 100; cnt++){ total += cnt; } %> <p>1부터 100까지의 합은 <%=total%> 입니다.</p> <p>25와 40의 합은 <%=add(25, 40)%> 입니다.</p> </body> </html> <%--두 수를 더하는 메소드를 만들었습니다. --%> <%! private int add(int num1, int num2){ int result = 0; result = num1 + num2; return result; } %> | cs |
* 21라인은 주석입니다.
어느 부분이 스크립틀릿인지 익스프레션인지 선언분인지 눈에 들어오시나요?
저는 1부터 100까지 더하는 부분을 스크립틀릿안에 작성하고
그 결과를 익스프레션을 이용해 출력하도록 하였습니다. ( 10라인 ~ 16라인)
그리고 두 수를 더하는 메소드를 선언부안에 작성하였고 (22라인 ~ 28라인)
17라인에서 익스프레션을 이용해 리턴값을 받아 출력하였습니다.
실행도 잘 되네요^^
이번엔 지시자(Directive)에 대해 알아봅시다.
지시자는 JSP페이지의 여러가지의 정보를 기술하기 위해서 사용하는 문법입니다.
그리고 가급적이면 JSP페이지의 첫줄에 작성하시는 것을 추천드립니다.
JSP페이지에서는 3가지의 지시자를 제공합니다
1. page directive
2. include directive
3. taglib directive
저는 여기서 page directive를 설명하고 include directive에 대해서는 다음포스팅에서, 그리고 taglib directive는 나중에 따로 포스팅을 하도록 하겠습니다.
모든 지시자는 <%@ 로 시작하여 %>로 끝이 납니다.
먼저 page 지시자입니다.
page 지시자는 jsp페이지 전체에 적용되는 정보를 입력하기 위해 사용합니다.
이 page 지시자에는 여러가지 애트리뷰트를 제공하고 있는데요
여기서는 contentType 애트리뷰트와 import 애트리뷰트에 대해 알아보겠습니다.
다른 여러가지 애트리뷰트는 더 공부해나가면서 틈틈히 적용하면서 공부해보겠습니다.
여러분이 이클립스를 실행하고 jsp페이지를 만들면 기본 템프릿이 작성되어서 나타나죠?
거기서 첫 줄에 <%@page ~ 로 시작하는 부분이 바로 지시자 입니다.
제가 위에서 스크립팅요소를 설명하기 위해 작성한 예제코드를 보시면 page지시자에 3가지 속성이 기술 되어있네요.
language, pageEncoding
이 두가지 애트리뷰트도 이참에 알고 가도록 하죠.
먼저 contentType애트리뷰트부터 살펴 봅시다.
이 애트리뷰트는 JSP페이지가 생성하는 문서의 종류와 웹 브라우저로 전송할 때에 사용할 인코딩방식을 지정하기 위해 사용합니다.
contentType속성을 설정하지 않을 경우 기본값은 text/html 입니다.
1 | <%@ page contentType="text/html; charset=UTF-8"%> |
charset부분을 생략하면 기본값인 ISO-8859-1을 사용합니다.
하지만 한글을 사용하는 우리들은 UTF-8을 꼭 적어 줍시다!!!
(euc-kr을 적어도 상관없지만 다국어를 지운하는 페이지가 많이 있기 때문에 UTF-8을 권장합니다)
이번에는 import애트리뷰트 입니다.
import라는 단어는 익숙하시지 않나요?
자바에서 사용하는 import문과 같은 역할을 하는 지시자 입니다.
1 | <%@ page import="java.util.Calendar"%> | cs |
사용은 위와 같이 import하고자하는 클래스를 적어주시면 됩니다.
예제를 봅시다~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Calendar"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Directive Demo</title> </head> <body> <% Calendar cal = Calendar.getInstance(); %> <%= cal.get(Calendar.YEAR)%>년 <%= cal.get(Calendar.MONTH) + 1%>월 <%= cal.get(Calendar.DATE)%>일 </body> </html> | cs |
오늘의 날짜를 출력하는 예제를 만들었습니다.
import애트리뷰트는 여러개 사용이 가능합니다.
1 | <%@ page import="java.util.Calendar, java.util.Date"%> |
혹은
1 2 | <%@ page import="java.util.Calendar"%> <%@ page import="java.util.Date"%> | cs |
이런식으로 말이죠 ^^
다음 포스팅은 include 지시자와 주석을 적는 방법을 알아보겠습니다.
'프로그래밍 > JSP' 카테고리의 다른 글
[JSP] 09. 내장변수(Implicit Variable) - request (0) | 2015.05.22 |
---|---|
[JSP] 08. includ지시자와 주석 (0) | 2015.05.20 |
[JSP] 06. Servlet - 개인정보입력페이지 만들어보기(get, post 알고가기) (0) | 2015.04.29 |
[JSP] 05. Servlet (0) | 2015.04.26 |
[JSP] 04. JSP 맛보기!! (0) | 2015.04.22 |