3 분 소요

JSP 기본


1. What is JSP ?!


1-1 JSP의 개념


JSP란 ‘Java Server Pages’ 의 줄임말로서 Java언어를 기반으로 하는 Server Side 스크립트 언어이다.

HTML 코드 안에 JAVA코드를 작성하여 동적웹페이지(Servelt)을 생성해주는 웹 어플리케이션 도구이다.

Servlet은 동적웹페이지를 생성하기 위해서 필수적인 도구이나 문제는 구조 자체가 너무 복잡하고 이런이유로 사용법이 어렵고 작성하는데 시간이 많이 소요된다는 단점이 존재했다.

JSP는 이런 단점들을 해결해줄 수 있는 해결사인 것이다.

JSP는 HTML코드의 기본적인 틀 안에서 작성된다.

하지만 파일 확장자는 .JSP / .HTML 로 차이가 있고, JSP안에 내장된 여러 요소들을 통해 다양한 기능을 사용할 수 있다.

JSP파일을 실행 한다는 의미는 Servelt을 만들어서 해당 Servlet을 실행한다고 볼 수 있다.

1-2 JSP 동작 원리


대략적인 동작 구조를 그림으로 그리자면 이렇다.

JSP동작원리

순서는 다음과 같다.

  1. 클라언트가 서버에게 JSP 파일을 요청한다.
  2. 서버는 WAS에게 요청한다.
  3. WAS는 해당 JSP파일의 Servlet이 컨테이너에 존재하는지 여부를 확인한다.
  4. 없다면 JSP파일을 실행시킨다.
  5. JSP파일은 HTML에 작성된 코드를 Java코드로 작성된 .java 형식의 서블릿 파일로 만든다.
  6. 이하는 서블릿이 동작하는 원리와 같다.

이렇듯 jsp는 간단하게 말해 HTML코드로 Servlet을 만드는 도구인 것이다.

결국 WAS에 객체를 전달하고 동적 웹페이지를 만드는 것은 Servlet의 몫이다.

2. JSP의 구성요소


JSP에는 많은 요소들로 이루어져 있으며, 모든 요소들은 좀 더 편리하게 동적 웹페이지를 만들 수 있도록 도움을 준다.

요소들은 크게 6가지로 나눌 수 있다.

  • 스크립트(Script) 요소
  • 지시어(directive)
  • 내장객체
  • 액션태그
  • 표현언어
  • 사용자 정의 태그

이중에서 가장 기본적인 스크립트요소, 지시어, 내장객체까지 3가지만 간략하게 서술해보겠다.

2-1 스크립트(Script)요소


이름 작성법 특징
스크립트릿 <% ··· %> JSP 페이지 내부에 HTML코드가 아닌 JAVA코드를 작성한다.
선언 <%! ··· %> 멤버변수나 메소드를 선언하기 위해 작성한다.
표현식 <%= ··· %> 값을 불러온다.

스크립트는 가장 기본이 되는 요소이다.

각 요소별로 조금 자세히 알아보자.

  • 스크립트릿

    실제로 대부분의 JAVA 코드가 작성 되는 부분이다.

    스크립트 립안에는 Java코드만이 작성 가능하며, 다른 요소들은 올 수 없다.

    ex) <% out.print (“오류남”); <!% 변수%> %>와 같이 작성하면 오류가 발생한다.

    html 태그는 태그간 중첩이 가능하지만 JSP는 안 된다는 점에 유의하여 작성해야한다.

    스크립트릿안에 HTML 코드를 작성하고 싶다면 내장객체인 out을 이용해 out.print(“HTML코드”) 이런식으로 작성하면 된다.

  • 선언

    Java의 전역변수와 비슷한 멤버변수를 선언할 수 있다.

    선언부에 메소드를 선언할 수 있다.

    멤버변수는 java에서 클래스안에 static으로 선언된 필드와 비슷하다고 보면 된다.

  • 표현식

    변수의 값 또는 메소드의 호출 값을 출력한다.

    결과는 String 타입으로 출력되며 세미클론을 넣지 말아야한다.

    out.print 메소드와 비슷한 역할이지만 표현식은 하나의 요소에 대한 값만을 출력할 수 있다.

대략적인 사용법을 코드로 보자.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%!public int sum(int a, int b) {
		int x = a + b;
		return x;
	}
	String x = "표현식 사용";%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	for (int i = 0; i < 5; i++) {
		out.print(i + "<br>");
	}
	out.print("스크립트릿" + "<br>");
	out.print("메소드사용 <br> 함수사용 : " + sum(3, 4) + "<br>");
	%>
	<%=x%>
</body>
</html>

출력 화면은 다음과 같다.

스크립트릿예시


2-2 지시어(Directives)


지시어는 JSP에 대한 설정 또는 페이지에 다른 문서를 포함 할 때 사용한다.

컨테이너에게 해당 jsp 페이지를 어떻게 처리해야할지 전달하는 디테일한 설정과 정보을 담고 있다.

구성은 다음과 같다.

이름 작성법 특징
page지시어 <%@ page ··· %> JSP 를 처리하기 위해 필요한 속성을 부여할 수 있다.
include지시어 <%@ include ··· %> 해당 페이지에 다른HTML이나 JSP페이지를 삽입할 수 있다.
taglib <%@ taglib ··· %> 커스텀 태그 라이브러리를 사용할 수 있다.

각 요소별로 간략하게만 알아보자

  • Page 지시어

    보통 소스 코드 가장 상단에 작성해주는 지시어이다.

    사용할 수 있는 여러 속성들이 있으며 여기에 서술하기보단 잘 정리한 블로그 링크를 남겨두겠다.

    이클립스에서 JSP파일을 생성하면 가장 상단에 있는

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

    이 코드가 대표적인 page지시어이며 3개의 속성이 사용된 예이다.

  • include 지시어

    해당 JSP페이지에 HTML이나 다른 JSP페이지를 추가해줄 때 쓴다.

    속성은 file속성 단 하나 뿐이며 URL주소를 속성 값으로 가진다.

    footer 나 블로그 상단 메뉴, 사이드 바등 공통되는 것들을 사용할 때에 좋다.

    사용할 수 있는 include에는 제한은 없다.

    서블릿 컴파일 과정은 단 한번만 이뤄진다.

    include된 파일에서 또 include 하는 중첩 사용도 가능하다.

  • taglib 지시어

    taglib지시어는 JSTL (JSP Standard Tag Library)이나 커스텀 태그 등 태그 라이브러리를

    JSP에서 사용할 때 접두사를 지정하기 위해 사용한다.

    taglib 지시어는 uri속성과 prefix속성의 두 가지 속성으로 이루어져있다.

2-3 내장객체(Implicit Object)


JSP컨테이너로 인해 따로 객체를 생성한다거나 선언하지 않고 바로 사용할 수 있는 사전 정의된 java 객체이다.

하나하나 설명하고 예를 들기엔 너무 피곤하고 기본 글치고 너무길어지니 대략적인 표로만 정리하겠당.

이름 특징
request 클라이언트에서 서버로 보내지는 요청이 담긴 객체(ex.request.getParameter())
response 서버에서 클라이언트로 보내지는 응답이 담긴 객체
out 출력을 클라이언트로 보내는 객체 (ex. out.print())
session 서버측 웹컨테이너에 사용자의 상태를 관리하는 객체
application 어플리케이션 전반적인 정보를 관리하는 객체
config 페이지와 관련된 서블릿 설정 객체
pageContext 현재 페이지의 내용을 저장하는 객체
page 페이지에 대한 실제 클래스를 저장하고 있는 객체
Exception 이전 페이지의 에러를 저장하고 있는 객체(예외처리시 자주 쓰인다.)

댓글남기기