[JSP] 기본 문법 - JSP 정의 / 구성요소 (디렉티브 directive)
by mini_min[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>
'JSP' 카테고리의 다른 글
[JSP] submit 여러 가지 방법 (0) | 2022.09.28 |
---|---|
[JSP] 파라미터 인코딩 - POST 방식 (0) | 2022.09.28 |
[JSP] 파라미터 인코딩 - GET 방식 (0) | 2022.09.28 |
[JSP] 생년월일로 띠 구하기 (1) | 2022.09.28 |
[JSP] GET방식 & POST방식 차이점 (0) | 2022.09.27 |
블로그의 정보
개발자 미니민의 개발로그
mini_min