개발자 미니민의 개발스터디

[JSP] 기본 문법 - JSP 정의 / 구성요소 (디렉티브 directive)

by mini_min

JSP

[JSP] 기본 문법 - JSP 정의 / 구성요소 (디렉티브 directive)

✔️ JSP 란?

: JSP는 HTML 내에 JSP 문법의 코드를 삽입하여 동적인 웹 컨텐츠를 작성하는 언어이다.

서블릿 컨테이너(현재 나는 톰캣) 에 의해 실행되어 실행된 결과(HTML)을 웹 브라우저에 전송한다.

 

📓 특징

- JSP 는 플랫폼 독립적인 동적인 웹 기반 응용 프로그램을 구축하기 위한 서버 측 프로그래밍 기술이다. 즉, JAVA를 이용하여 HTML, XML 또는 기타 문서 유형을 기반으로 동적인 웹 페이지를 작성한다.

- JSP 는 자바 서블릿 API 위에 구축되므로, 서블릿과 마찬가지로 JDBC, JNDI, EJB, JAXP 등 엔터프라이즈 자바 API에 엑세스 할 수 있다.

- JSP 는 실행할 때 HttpServlet 클래스를 상속받은 자바 서블릿 코드로 변환한 다음 컴파일 되어 실행된다. JSP 가 서블릿으로 변환되는 시점은 JSP 를 최초 요청하거나 JSP 파일이 변경되었을 때 변경된 JSP 를 최초 요청하는 경우 서블릿으로 변환되어 컴파일된다.

- JSP 는 OutputStream 을 사용하면 다른 유형의 데이터도 전달할 수 있다.

⭐ JSP 를 배포하고 실행하려면 아파치 톰캣 또는 제티와 같은 서블릿 컨테이너가 있는 호환 가능한 웹 서버가 필요하다.

 

📓 과정

JSP 파일 작성 -> JSP 파일을 서블릿 파일로 변환(.java) -> 서블릿 파일을 컴파일(.class) -> 서블릿에 대한 객체 생성 -> _jspInit() 메소드를 호출하여 초기화

 

📓 JSP Life Cycle

초기화 : 서블릿 인스턴스 생성 후 단 한 번만 호출한다.

서비스 : 클라이언트가 요청할 때 마다 실행한다.

종료 : 컨테이너 종료 또는 어플리케이션 종료시 실행한다.

 

 

✔️ JSP 주석

: JSP는 HTM

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	// scriptlet (java 코드 영역) - java 주석(자바 코드 영역에서만 가능)
	int s = 0;
	for(int i=1; i<=100; i ++){
		s += i;
	}

%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> JSP 주석 </h3>

<!-- HTML 주석 : 클라이언트에게 전송됨 -->
<%-- JSP 주석 : 클라이언트에게 전송되지 않음 --%>

<p> 1~100 까지의 합은? <%=s %> 입니다. </p>


</body>
</html>

 

 

✔️ JSP 구성 요소

: 크게 6가지로 구성된다.

- 디렉티브

- 스크립트 요소

- 내장객체

- 액션태그

- 표현언어

- 사용자 정의 태그, JSTL

 

 

✔️ 디렉티브(directive)

: page 는 JSP 페이지에 대한 설정 정보를 저장한다. 문서 타입, 출력 버퍼의 크기, 에러 페이지 등을 지정

: taglib 는 JSP 페이지에서 사용할 태그 라이브러리 지정

: include 는 JSP 페이지의 특정 영역에 다른 문서를 포함시킨다.

<!--  page의 contentType 속성 : 클라이언트에게 전송하는 문서 타입 -->
<!--  생략시 인코딩은 ISO-8859_1 (한글 깨짐) -->
<%@ page contentType="text/html; charset=UTF-8"%>


<!--  page의 import 속성 : 필요한 자바 클래스를 import 한다. -->
<%@page import="java.util.Arrays"%>
<%@page trimDirectiveWhitespaces="true" %>

<%
	String[] ss = new String[] {"java", "spring", "html", "css", "oracle" };
	
	Arrays.sort(ss);
	
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> page 지시어(directive) </h3>

<p> page 지시어 : JSP 페이지의 설정 정보 지정 </p>

<div>
	<% for(String s : ss) { %>
		<p> <%=s %> </p>
	<% } %>

</div>

</body>
</html>

 

 

- buffer 속성 / autoFlush 속성

<%@ page contentType="text/html; charset=UTF-8"%>
<%@page trimDirectiveWhitespaces="true" %>
<%@page buffer="1kb" autoFlush="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> page 지시어(directive) </h3>

<!-- 
buffer 속성 : 출력할 버퍼의 크기. 기본 8kb
autoFlush 속성 : 버퍼가 꽉찬경우 버퍼를 비울지의 여부. 기본 true 이다.
 -->
 
 <!-- buffer 의 크기를 1kb 주고 autoFlush 를 false 로 설정하면 아래 내용은 4kb 가 넘으므로 오류
  -->

<% for(int i=1; i<=1000; i++) { %>
1234
<% } %>

</body>
</html>

 

 

- errorPage 속성 : 에러가 발생할 때 보여줄 페이지 지정

<%@ page contentType="text/html; charset=UTF-8"%>
<%@page trimDirectiveWhitespaces="true" %>
<%@page errorPage="error.jsp" %>

<%
	String s = "10a";
	int n = Integer.parseInt(s);
%>


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> page 지시어(directive) </h3>
<p> errorPage 속성 : 에러가 발생할 때 보여줄 페이지 지정 </p>

<p><%=n %> </p>


</body>
</html>

 

 

- include 지시어 : JSP 페이지에 다른 페이지의 내용을 포함할 때 사용한다.

<%@ page contentType="text/html; charset=UTF-8"%>
<%@page trimDirectiveWhitespaces="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<h3> include 지시어 </h3>
<pre>
	- JSP 페이지에 다른 페이지의 내용을 포함할 때 사용한다.
	- JSP 파일을 JAVA 파일로 변환할 때 처리하며, 복사/붙여넣기 개념과 유사하다.
</pre>
<hr>

<%@ include file="sub.jsp" %>
<p>
	<%= subject %> 과목 점수는 <%= score %>점 입니다.
</p>

</body>
</html>

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기