본문으로 바로가기

JSP의 기초

category 웹/JSP 2018. 9. 19. 21:12

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 파일을 불러 와라 라는 뜻입니다.

Menu.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에서 불러옵니다.

Today.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