JSP
JSP는 HTML문서에 JSP문법의 코드가 삽입됩니다.
서블릿과는 반대죠.
좀더 편리하고 쉽게 하기 위해 JSP가 개발됐습니다.
JSP 페이지에 있는 HTML코드들은 웹 브라우저로 그대로 전송되지만, JSP 문법 코드는 웹 컨테이너 쪽에서 실행됩니다.
JSP코드를 작성 하면 JSP 페이지 전체를 서블릿 클래스로 바꾸고 인스턴스화를 통해 서블릿 객체를 만들고 초기화 합니다.
그러면 서블릿이 만들어지게 됩니다.
컴파일 인스턴스화 초기화
JSP page------> 서블릿 클래스-------> 서블릿 클래스 파일-------> 서블릿 객체---------> 서블릿
JSP 문법
- <% %>:스크립틀릿
- ${} :익스프레션 언어
- <jsp:forward> or <c:if>
액션: XML 태그 형태 (if, switch, for)
스크립팅 요소 문법
- 스크립틀릿
- 익스프레션
- 선언부
스크립틀릿은 <% %> 형태입니다.
<%
int total=0;
for(int cnt=1; cnt<=100; cnt++)
total+=cnt;
%>
의 형태입니다. total은 다른 스크립틀릿에서도 사용 가능합니다.
익스프레션은 <%= %> 형태입니다.
여기에는 식, 변수 이름 하나, 연산자, 메소드 호출 등이 이루어집니다.
<%=total%>
<%=total+101%>
<%=Math.sqrt(num)%>
선언부는 <%! %>의 형태입니다.
변수 선언, 메서드 선언이 사용됩니다.
이는 변환된 서블릿 클래스의 맴버가 되므로 final ,public,private,protected,static등도 가능합니다.
<%! final static int MAX=10000%>
<%!
private int add(int num1, int num2)
{
int sum=num1+num2;
return sum;
}
%>
단, 선언부 안에 변수는 인스턴스 변수를 선언해서는 안됩니다.
왜냐하면 변환된 서블릿 클래스는 멀티-스레드로 동작합니다.
<%@page contentType="text/html; charset=euc-kr"%>
<HTML>
<HEAD><TITLE>2의 거듭제곱</TITLE></HEAD>
<BODY>
2^1=<%=power(2,1)%><BR>
2^2=<%=power(2,2)%><BR>
2^3=<%=power(2,3)%><BR>
2^4=<%=power(2,4)%><BR>
2^5=<%=power(2,5)%><BR>
</BODY>
</HTML>
<%!
private int power(int base,int exponent){
int result=1;
for(int cnt=0; cnt<exponent; cnt++)
result*=base;
return result;
}
%>
이 코드를 web-apps 폴더에 임의로 만든 디렉토리에 집어넣고
http://localhost:8080/brain/파일이름.jsp 를 이용하면 jsp파일을 설치한겁니다.
정말 간단하지 않나요 ??
<출력 결과>
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
이 출력결과입니다.
지시자 문법
지시자는 다른 문법과 달리 요청을 처리하는 것이 아니라, 웹 컨테이너가 서블릿 클래스로 변환 시 필요 정보들을 기술합니다.
page
include
taglib
등의 지시자가 있습니다.
<%@ %>의 형태로 쓰입니다.
@뒤에 지시자 이름 그 후 애트리뷰트 이름과 값들을 집어넣습니다.
page지시자는 JSP 페이지 전체 적용 정보를 기술 합니다.
간단한 page 지시자의 에트리뷰트들을 봅시다,
이렇게 많은 에트리뷰트가 있습니다.
contentType는 많이 보셨을 겁니다.
<%@page contentType="text/html; charset=euc-kr"%>은 인코딩 방식을 지정합니다.
즉 이는 서블릿으로 변환 시 response.setContentType("text/html; charset=euc-kr");으로 변환 됩니다.
import 에트리뷰트는 다른 패키지들을 임포트 합니다.
예를들어 자바에 GregorianCalendar 패키지를 임포트하여 날짜 시각을 출력할 수 있습니다.
<%@page contentType="text/html; charset=euc-kr"%>
<%@page import="java.util.GregorianCalendar"%>
<HTML>
<HEAD><TITLE>날짜와 시각</TITLE></HEAD>
<BODY>
<%
GregorianCalendar now=new GregorianCalendar();
String date=String.format("%TF",now);
String time=String.format("%TT",now);
%>
오늘의 날짜:<%=date%><BR>
현재의 시각:<%=time%><BR>
</BODY>
</HTML>
<출력 결과>
오늘의 날짜: 2018-09-19
현재의 시각:21:07:40
include 지시자는 다른 파일을 불러와주는 역할을 해줍니다.
%@include file="Today.jsp"%> 와 같이 사용합니다. 즉 이는 Today.jsp 파일을 불러 와라 라는 뜻입니다.
<%@page contentType="text/html; charset=euc-kr"%>
<HTML>
<HEAD><TITLE>오늘의 메뉴</TITLE></HEAD>
<BODY>
<H3>오늘의 메뉴</H3>
-삼계탕<BR>
-돈까스<BR>
-튀김국수<BR><BR>
<%@include file="Today.jsp"%>
</BODY>
</HTML>
Today.jsp는 아래 코드입니다. 이를 Menu.jsp에서 불러옵니다.
<%@page contentType="text/html; charset=euc-kr"%>
<%@page import="java.util.*"%>
<% GregorianCalendar now=new GregorianCalendar();%>
<%=String.format("%TY년 %Tm월 %Td일",now,now,now)%>
tablib 지시자는 액션을 사용할 때 필요합니다.
라이브러리를 설치하여야 이용가능합니다.
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>처럼 이용합니다.
이어서 계속 업데이트 하겠습니다.
'웹 > JSP' 카테고리의 다른 글
서블릿의 라이프 사이클 (0) | 2018.10.24 |
---|---|
JSP의 기초(2) (0) | 2018.10.03 |
서블릿에 대해(2) (0) | 2018.09.12 |
서블릿에 대해 (0) | 2018.09.10 |
간단한 JSP 페이지 작성하기 (0) | 2018.09.05 |