티스토리 뷰

반응형

JSP (Java Server Pages)

  • JSP는 웹 프로그램 작성 언어이다.
  • JSP는 동적인 페이지를 간단히 만들 수 있는 방법을 제공하는 Java 언어 기반의 Server Side Script 언어이다. (서버 환경에서 사용)

 

동적 웹 페이지 VS. 정적 웹 페이지

  • 정적 웹 페이지는 서버에 저장되어 있는 HTML, CSS를 그대로 보여준다. 반면에 동적 웹 페이지는 상황에 따라 서버에 저장되어 있는 HTML에 데이터를 추가하거나 가공해서 보여준다.
  • 동적 웹 페이지는 데이터의 추가나 변경이 필요할 때 HTML 자체를 수정해야 하기 때문에 그때마다 서버에 요청해야 한다.
  • 동적 웹 페이지는 SEO에 취약하다.
  • 동적 웹 페이지로는 CSR, SSR 방식이 있다.

 

 

 

 

 

 

 

JSP 특징

  • 스크립트 언어이기 때문에 Java 기능 사용 가능
  • Tomcat(WAS)이 만들어놓은 객체(predefined values)를 사용한다.
  • 사용자 정의 태그를 사용하여 보다 효율적으로 웹 사이트를 구성할 수 있다.
  • HTML 코드에 Java 코드를 넣어 동적인 웹 페이지를 생성할 수 있도록 해준다. 즉, 사용자가 입력한 내용에 맞도록 동적 웹 페이지를 생성하는 것이다.
  • JSP 파일은 직접 실행되지 못하며 JSP 코드에 해당되는 Servlet을 생성해서 Servlet이 실행되는 방식이다.
  • Servlet과 다르게 JSP는 수정된 경우 재배포할 필요 없이 Tomcat(WAS)이 알아서 처리해준다.

 

스크립트 언어
소스 코드를 컴파일하지 않아도 실행할 수 있는 프로그래밍 언어를 말한다.
C, Java 같은 경우 컴파일러를 통해 기계어 코드로 변환해야 사용자가 실행할 수 있는 반면 스크립트 언어는 별도의 컴파일 없이 내장된 번역기에 의해 번역되므로 바로 실행할 수 있다.

  • server-side-script: 실행 결과를 확인하기 위해 웹 서버를 거쳐야 하는 스크립트 (ex. ASP, PHP, JSP, PYTHON, PERL, RUBY 등)
  • client-side-script: 내장된 번역기(각 브라우저)에 의해 실행되는 스크립트로 서버를 거치지 않고 사용자 쪽에서 처리되는 스크립트 (ex. JavaScript, VBScript, JScript 등)

 

 

JSP 실행 순서

1. 클라이언트에서 서버에 페이지(프로그램) 요청
2. 웹 서버는 Tomcat(WAS)에 요청 정보 전달
3. Web Container에 의해 JSP로 작성된 코드가 Servlet 코드로 변환 (Java 파일 생성)
4. Servlet 코드를 컴파일해서 실행 가능한 Bytecode로 변환 (class 파일 생성)
5. Servlet 클래스를 로딩하고 인스턴스 생성
6. Servlet이 실행되어 요청을 처리하고 응답 정보를 생성
7. 실행 결과로 동적 생성된 HTML Document를 클라이언트 측에 응답
8. 클라이언트는 응답 받은 HTML Document를 브라우저에서 웹 페이지 형태로 출력

*이미 생성된 Servlet이 있다면 2, 3단계는 생략된다.

 

 

기본적으로 서버가 작동할 때 JAVA > JSTL > HTML > Javascript 순서로 동작

 

 

 

JSP 구성 요소

지시어(Directive)

서버에서 JSP 페이지를 처리하는 방법에 대한 정의이다.

<%@ 지시어 %>

 

page 지시어

페이지에 대한 기본 정보 입력 (생성 문서 타입, 에러 페이지, 출력 버퍼 크기 등)

language: 스크립트 코드에서 사용되는 프로그래밍 언어 지정
contentType: 생성 문서 타입
import: 사용할 자바 클래스 지정
session: 세션 사용 여부 지정
buffer: 출력할 버퍼의 크기 지정
autoFlush: 출력 버퍼가 다 채워졌을 경우 자동으로 버퍼에 있는 데이터를 비우게 만들지의 여부 지정
info: 페이지에 대한 설명
errorPage: 실행 도중 에러 발생 시 보여줄 페이지 지정
pageEncoding: 페이지 자체의 캐릭터 인코딩 지정

 

예제

<%@ page language="java" errorPage="/error.jsp" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %>
...

 

tablib 지시어

태그 라이브러리. 사용자가 직접 설정한 태그 모음.

 

include 지시어

다른 문서를 포함하는 기능. 여러 JSP 페이지에서 반복적으로 사용하는 내용을 별도의 파일에 저장해 두었다가 JSP 파일에 삽입할 수 있도록 해준다. 생산성 향상에 도움이 된다.

 

예제

<%@ include file="/common/common.jsp" %>
...

 

 

스크립트 요소

스크립트릿 태그

Scriptlet(스크립트 릿)은 JSP에 Java 코드를 기술할 수 있도록 해준다.

<% 자바코드 %>

 

Scriptlet 내부에서 선언된 변수는 지역 변수 성격을 가진다. 자바에서 메서드 내부에 선언된 변수라고 생각하면 된다.

 

표현식(Expression) 태그

HTML 문서 결괏값에 포함하고자 할 때 사용한다.
브라우저에 보여지게 할 수 있다.

<%= %>

 

 

예제

<a href="<%=SETTING_INFO_INDEX %>">

 

선언부(Delaration) 태그

Scriptlet이나 표현식에서 사용할 수 있는 함수 작성 시 사용한다.

<%! %>

 

 

 

주석

HTML 주석

클라이언트에 전달됨

<!-- -->

 

JSP 주석

클라이언트에 전달되지 않음

<%-- --%>

 

 

예제

<script type="text/javascript">
  CKEDITOR.replace('edit-content', {
    height: '280px',  <%-- 텍스트 입력창 높이 설정 --%>
    startupFocus: false
  });
</script>

 

Scriptlet에서의 주석

Java 주석과 동일하다.

//
/* */
/* **/

 

 

 

표현 언어(Expression Language)

페이지 내부에서 사용되는 간단한 스크립트 언어

 

 

 

기본 객체(Implicit Object, 내장 객체)

request

요청 파라미터 읽어오기

response

응답 결과 전송하기

session

세션 처리하기, 공용 저장 공간

application

웹 애플리케이션 전체 공용 공간

page

페이지에 대한 정보 입력

 

 

 

액션 태그와 커스텀 태그

액션 태그

특정 문서를 현재 위치에 포함시킨다.

<jsp:include page="">

 

커스텀 태그

개발자가 직접 개발하여 중복되는 코드를 모듈화한다. 복잡한 소스를 간단하게 해준다.

반응형
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31