JSP 템플릿 적용 - JSP tempeullis jeog-yong

티스토리 뷰

[01] JSP Template 설정 

     - JSP 선어문(Page Directive)는 모든 JSP가 동일해야한다. 그렇지 않으면 SSI사용시 에러가 발생함. 

      -새 jsp 파일을 만들 때 기본 형식을 지정하고 싶을 때 사용한다.

01) JSP Template의 지정 
   [Window --> Preferences --> Web --> JSP Files --> Editor --> Templates] 
   - Name   : JSP_HTML5 
     Context: New JSP 
     Description: 새로운 HTML5 기반 JSP 생성시 기초 소스 

JSP 템플릿 적용 - JSP tempeullis jeog-yong

<%@ page contentType="text/html; charset=UTF-8" %> 
<% request.setCharacterEncoding("utf-8"); %> 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title></title> 
<style type="text/css"> 
*{ 
  font-family: gulim
  font-size: 20px; 

</style> 
</head> 
<body> 

</body> 
</html> 

---------------------------------------------------------------------------------------------- 


<참고>
>>>>> 기초 소스: HTML4 

<%@ page contentType="text/html; charset=UTF-8" %> 
<% request.setCharacterEncoding("utf-8"); %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title></title> 
<style type="text/css"> 
*{ 
  font-family: gulim; 
  font-size: 24px; 

</style> 
</head> 
<body> 

</body> 
</html> 

출처: http://seanb12.tistory.com/49?category=770940 [<<뇨뇽~!~!~!>>]

1/JSP | Servlet

[IntelliJ] JSP file template 추가

_kiki_ 2022. 1. 30. 05:11

IntelliJ IDEA - Preferences... - Editor - File and Code Templates - Files - +  html5 템플릿을 추가함

JSP 템플릿 적용 - JSP tempeullis jeog-yong

HTML5  템플릿 

<%--
  Created by IntelliJ IDEA.
  User: ${USER}
  Date: ${DATE}
  Time: ${TIME}
  To change this template use File | Settings | File Templates.
--%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html> 
	<head> 
    	<meta charset="utf-8">
<title>웹페이지 제목</title>
	</head> 
	<body>

	</body>
</html>

JSP 기본 문법 총 정리 - 템플릿 데이터, JSP 전용 태그, 내장 객체

JSP 구성 요소는 크게 템플릿 데이터와 JSP 전용 태그, JSP 내장 객체 세 가지로 나눌 수 있다.

템플릿 데이터 클라이언트로 출력되는 콘텐츠
HTML, 자바스크립트, 스타일 시트, JSON, XML, 일반 텍스트 등이 여기에 해당한다.
JSP 전용 태그 서블릿 생성 시 특정 자바 코드로 바뀌는 태그
Directives(<%@ %>), Scriptlet Elements(<% %>), Declarations(<%! %>), Expressions(<%= %>), JSP Action(<jsp:...>)
JSP 내장 객체
JSP 기술 사양서에 정의된 필수적인 9개 객체
request, response, pageContext, session, application, config, out, page, exception
JSP에서 별도 선언 없이 사용 가능

템플릿 데이터

JSP 템플릿 적용 - JSP tempeullis jeog-yong
템플릿 데이터의 예

템플릿 데이터는 클라이언트로 출력되는 콘텐츠이다.

템플릿 데이터는 서블릿 코드를 생성할 때 출력문(톰캣의 경우 out.println)으로 바뀐다.

jsp로부터 생성된 자바 서블릿 파일의 소스를 열어보면 템플릿 데이터가 자바 출력문으로 변환된 것을 확인할 수 있다.

JSP 템플릿 적용 - JSP tempeullis jeog-yong

JSP 전용 태그

Directives(지시자)

<%@ 지시자 속성="값" 속성="값" ... %>

JSP 지시자는 지시자, 속성에 따라 자바 코드를 생성한다.

JSP 지시자에는 page, taglib, include가 있다.

page

page 지시자는 JSP 페이지와 관련된 속성을 정의할때 사용하는 태그이다.

page 지시자의 예

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>

cs

속성 설명
language 스크립틀릿, 표현식, 선언부를 작성할때 사용할 프로그래밍 언어를 지정한다.
즉 JSP 페이지에 삽엡되는 코드의 스크립팅 언어를 지정한다.
JSP 2.2에서는 'java'만 허용된다. (모두 소문자로 작성)
language 속성을 생략하면 기본값은 'java'이다.
contentType 출력할 데이터의 MIME 타입과 문자 집합을 지정한다.
MIME 타입이 'text/html'이면 출력할 데이터가 HTML이라는 의미이다.
문자 집합이 'charset=UTF-8'이면 출력할 데이터를 UTF-8로 인코딩한다.
문자 집합을 생략하면 기본값 'ISO-8859-1'을 사용한다.
자바는 문자열을 다룰때 유니코드(UTF-16 BE)를 사용하는데 클라이언트로 문자열을 출력할때 유니코드를 contentType 혹은 pageEncoding에 설정된 문자 집합으로 인코딩하여 출력한다.
pageEncoding 출력할 데이터의 문자 집합을 지정한다.
기본값은 'ISO-8859-1'이다.
contentType 설정값보다 우선시된다.
이 속성을 생략하면 contentType에 설정된 값을 사용한다.

page 지시자는 다음과 같은 자바 코드를 생성한다.

JSP 템플릿 적용 - JSP tempeullis jeog-yong

contentTypepageEncoding 속성에 지정된 값으로 setContentType() 호출 코드가 생성된다.

language 속성은 JSP 엔진에 정보를 제공하는 역할이며 따로 코드를 생성하진 않는다.

taglib

taglib는 태그 라이브러리를 선언할때 사용한다.

taglib 지시자의 예 : JSTL Core 태그 라이브러리 선언

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

cs

속성 설명
uri 사용할 태그 라이브러리 네임스페이스 식별자(URI)
prefix 태그 접두사

Scriptlet Elements(스크립트릿)

<% 자바 코드 %>

JSP에 자바 코드를 작성할 때 스크립트릿 태그 <% %> 안에 작성한다.

스크립트릿 태그 안에 작성한 코드는 서블릿 파일을 만들 때 그대로 복사된다.

JSP 스크립트릿 코드의 예

JSP 템플릿 적용 - JSP tempeullis jeog-yong

생성된 JAVA 코드

JSP 템플릿 적용 - JSP tempeullis jeog-yong

JSP에서 생성된 자바 서블릿 소스에서 _jspService() 안에 그대로 복사된다.

Declarations(선언문)

<%! %>

서블릿 클래스의 멤버(변수, 메소드)를 선언할 때 사용한다.

JSP 선언문의 예

JSP 템플릿 적용 - JSP tempeullis jeog-yong

JSP에서 작성 위치는 상관 없다.

선언문은 _jspService() 메소드 안에 복사되는 것이 아니라 _jspService() 밖의 클래스 블록 안에 복사되기 때문이다.

자바 서블릿 코드의 출력문으로 변환된 선언문의 예

JSP 템플릿 적용 - JSP tempeullis jeog-yong

Expressions(표현식)

<%= %>

문자열을 출력할 때 사용한다.

따라서 표현식 <%= %> 안에는 결과를 반환하는 자바 코드가 와야한다.

표현식은 출력문으로 만들어지며 스크립트릿과 같이 _jspService() 안에 순서대로 복사된다.

JSP 표현식의 예

JSP 템플릿 적용 - JSP tempeullis jeog-yong

자바 서블릿 코드의 출력문으로 변환된 표현식의 예

JSP 템플릿 적용 - JSP tempeullis jeog-yong

위와 같이 JSP 표현식 안의 자바 코드가 out.println() 출력문의 인자값으로 복사된다.

따라서 JSP 표현식 안에는 out.println()의 안자값으로 넣을 수 있는 결과를 반환하는 자바 코드가 와야한다.

JSP Action

JSP에서 기본으로 제공하는 태그들의 집합을 'JSP Action'이라 한다.

다음은 JSP 2.2에서 제공하는 Standard Action들이다.

액션 설명
<jsp:useBean> 자바 인스턴스를 준비한다. 보관소에서 자바 인스턴스를 꺼내거나 자바 인스턴스를 새로 만들어 보관소에 저장하는 코드를 생성한다. 자바 인스턴스를 자바 빈(Java Bean)이라고 부른다.
<jsp:setProperty> 자바 빈의 프로퍼티 값을 설정한다.
자바 객체의 settet()를 호출하는 코드를 생성한다.
<jsp:getProperty> 자바 빈의 프로퍼티 값을 꺼낸다.
자바 객체의 getter()를 호출하는 코두를 생성한다.
<jsp:include> 정적(HTML, 텍스트 파일 등) 또는 동적(서블릿/JSP) 자원을 including하는 자바 코드를 생성한다.
<jsp:forward> 현재 페이지의 실행을 멈추고 다른 정적, 동적 자원으로 forwarding하는 자바 코드를 생성한다.
<jsp:param> jsp:include, jsp:forard, jsp:params의 자식 태그로 사용한다.
ServletRequest 객체에 매개변수를 추가하는 코드를 생성한다.
<jsp:plugin> OBJECT 또는 EMBED HTML 태그를 생성한다.
<jsp:element> 임의의 XML 태그나 HTML 태그를 생성한다.

JSP Implicit Objects(내장 객체)

request, response, pageContext, session, application, config, out, page, exception

JSP에서 자바 코드를 작성할때 별도의 선언 없이 사용할 수 있는 자바 객체이다.

예를 들어 JSP에서 선언 없이 사용할 수 있는 request 객체가 이에 해당한다.

JSP 템플릿 적용 - JSP tempeullis jeog-yong
JSP 템플릿 적용 - JSP tempeullis jeog-yong

JSP로부터 생성된 자바 서블릿 소스의 _jspService()를 보면 해당 객체들의 변수가 선언되어 있는 것을 확인할 수 있다.

_jspService()는 javax.servlet.jsp.HttpJspPage 인터페이스에 선언된 메소드이다.

JSP 기술 사양서에는 JSP로 서블릿을 만들 때 반드시 이 인터페이스를 구현하도록 정의하고 있다.

또한 JSP 작성 시 선언 없이 즉시 사용할 수 있는 9개 객체 request, response, pageContext, session, application, config, out, page, exception 를 정의하고 있다. (exception은 JSP가 예외 처리 페이지로 선언된 경우에만 존재)

스크립트릿 <% %>과 표현식 <%= %>에 작성한 자바 코드는 _jspService로 복사될 때 JSP 내장 객체를 선언한 문장 뒤에 복사된다.

이런 이유로 별도 선언 없이 JSP 내장 객체를 사용할 수 있는 것이다.