JSP(JavaServer Pages)는 뭐야? (개념/ 주요 요소/ 동작방식/ 장점 / 서블릿과의 관계/기본요소) _ [KB IT’s YourLife]

Yeonbi_Kim·2024년 7월 29일
post-thumbnail

JSP 기본 개념

  1. 서버 측 스크립팅:
    • JSP는 서버 측에서 실행되는 스크립팅 언어입니다. 클라이언트(웹 브라우저)가 JSP 페이지를 요청하면, 서버는 JSP 페이지를 처리하고 결과를 HTML로 변환한 후 클라이언트에게 전달합니다.
    1. Java와의 통합:
      • JSP는 Java로 작성된 코드를 HTML에 삽입할 수 있게 해줍니다. 이를 통해 동적인 콘텐츠를 생성할 수 있습니다. 예를 들어, 데이터베이스에서 가져온 데이터를 웹 페이지에 표시할 수 있습니다.
    2. 태그 라이브러리:
      • JSP는 HTML과 유사한 문법을 사용하여 작성되며, Java 코드를 삽입하기 위해 <% ... %> 구문을 사용합니다. 또한, JavaBeans, 커스텀 태그 라이브러리(JSTL) 등을 활용하여 복잡한 로직을 구현할 수 있습니다.

JSP의 주요 요소

  1. 지시자(Directive):

    • 페이지, include, taglib 등의 지시자를 사용하여 JSP 페이지의 설정을 정의합니다.
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. 스크립틀릿(Scriptlet):

    • JSP 페이지 내에서 Java 코드를 삽입하기 위해 사용합니다.
    <%
        String message = "Hello, World!";
    %>
  3. 표현식(Expression):

    • JSP 페이지 내에서 Java 표현식을 평가하고 그 결과를 출력하기 위해 사용합니다.
    <%= message %>
  4. 선언문(Declaration):

    • JSP 페이지 내에서 메서드나 변수를 선언하기 위해 사용합니다.
    <%! 
        private String getWelcomeMessage() {
            return "Welcome to JSP!";
        }
    %>

JSP의 동작 방식

  1. 요청 처리:

    • 클라이언트가 JSP 페이지를 요청하면, 웹 서버(예: Apache Tomcat)는 JSP 파일을 서블릿으로 변환합니다.
    • 변환된 서블릿은 Java 코드로 컴파일되고, 이후 서블릿 컨테이너에서 실행됩니다.
  2. 응답 생성:

    • 서블릿은 실행된 결과를 HTML 형식으로 생성하고, 클라이언트에게 응답으로 전달합니다.

JSP의 장점

  • Java 기반: Java의 강력한 기능과 라이브러리를 활용할 수 있습니다.
  • 유연성: HTML, CSS, JavaScript와 쉽게 통합되어 동적 웹 페이지를 만들 수 있습니다.
  • 유지보수 용이성: MVC(Model-View-Controller) 패턴과 함께 사용하여 코드의 재사용성과 유지보수성을 높일 수 있습니다.

JSP와 서블릿의 관계

  • JSP는 서블릿의 상위 수준 추상화로 볼 수 있습니다. JSP는 서블릿과 동일한 역할을 하지만, HTML과의 혼합이 더 용이합니다.
  • JSP는 주로 뷰(View) 역할을 담당하며, 서블릿은 컨트롤러(Controller) 역할을 담당하여 비즈니스 로직을 처리합니다.

이해하기 쉽게 요약하자면, JSP는 Java 기반의 기술로, 서버 측에서 동적인 웹 페이지를 생성하고, 이를 통해 클라이언트에게 동적이고 데이터 중심의 웹 애플리케이션을 제공하는 데 사용됩니다. 예비 개발자로서 JSP를 이해하고 활용하면, 강력한 Java 생태계를 활용하여 다양한 웹 애플리케이션을 개발할 수 있습니다.

JSP 기본 요소

<copyrigrht.jsp>

<%@ page contentType="text/html; charset=UTF-8"%>
<div>
    Copyright (c) ..... All rights reserved.
</div>

설명:

•	<%@ page contentType="text/html; charset=UTF-8"%>: JSP 페이지의 contentType을 설정하는 지시어입니다. 이 설정으로 페이지의 인코딩을 UTF-8로 지정합니다.
•	<div>: 블록 레벨의 콘텐츠를 담는 요소입니다.
•	Copyright (c) ..... All rights reserved.: 저작권 정보를 표시합니다.

<main.jsp>

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>메인 화면 페이지</title>
</head>
<body>
    <h1>include 지시어 태그 실습</h1>
    내용 수정중입니다. 다음줄에 삽입이 됩니다. <br>
    <jsp:include page="copyright.jsp" />
</body>
</html>

설명:

•	<%@ page contentType="text/html; charset=UTF-8"%>: JSP 페이지의 contentType을 설정하는 지시어입니다. 이 설정으로 페이지의 인코딩을 UTF-8로 지정합니다.
•	<!DOCTYPE html>: HTML5 문서 타입 선언입니다.
•	<html lang="ko">: 문서의 언어를 한국어로 설정합니다.
•	<head>: HTML 문서의 메타데이터를 포함하는 부분입니다.
•	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">: 문서의 인코딩 타입을 지정합니다.
•	<title>메인 화면 페이지</title>: 브라우저의 제목 표시줄이나 탭에 표시될 제목을 지정합니다.
•	<body>: HTML 문서의 본문 내용을 포함합니다.
•	<h1>include 지시어 태그 실습</h1>: 큰 제목을 표시합니다.
•	내용 수정중입니다. 다음줄에 삽입이 됩니다. <br>: 텍스트를 표시하고 줄바꿈을 합니다.
•	<jsp:include page="copyright.jsp" />: 다른 JSP 페이지인 copyright.jsp를 포함합니다.



JSP include 태그 사용 이유 및 유의점

사용 이유:

1.	재사용성: 여러 JSP 페이지에서 공통으로 사용되는 부분(예: 헤더, 푸터, 저작권 정보)을 하나의 파일로 만들어서 재사용할 수 있습니다.
2.	유지보수성: 공통 부분이 수정될 경우 해당 파일만 수정하면 모든 관련 JSP 페이지에 변경 사항이 반영됩니다.
3.	모듈화: 코드의 가독성과 관리가 용이해집니다. 각 부분을 모듈화하여 필요한 곳에 포함시킬 수 있습니다.

유의점:

1.	경로 지정: jsp:include 태그를 사용할 때 상대 경로나 절대 경로를 정확하게 지정해야 합니다.
2.	인코딩: 포함되는 JSP 파일과 포함하는 JSP 파일의 인코딩 설정이 일치해야 합니다.
3.	성능: 많은 파일을 포함하는 경우 서버의 성능에 영향을 줄 수 있으므로 필요한 경우에만 사용해야 합니다.

논리적 흐름:

1.	main.jsp는 웹 애플리케이션의 메인 페이지로서 기본적인 HTML 구조와 함께 공통적으로 포함할 콘텐츠(copyright.jsp)를 가지고 있습니다.
2.	main.jsp에서 jsp:include 태그를 사용하여 copyright.jsp 파일을 포함합니다.
3.	copyright.jsp는 저작권 정보를 담고 있으며, 여러 페이지에서 재사용될 수 있습니다.
4.	사용자가 main.jsp를 요청하면 copyright.jsp가 포함된 형태로 브라우저에 전달됩니다.

IntelliJ 설정 및 사용 방법:

1.	프로젝트 생성:
•	IntelliJ에서 새로운 프로젝트를 생성합니다.
•	프로젝트 유형으로 “Java Enterprise”를 선택하고 “Web Application”을 선택합니다.
•	필요한 라이브러리(JDK, 서버)를 설정합니다.
2.	디렉토리 구조:
•	src/main/webapp/WEB-INF/jsp/ 디렉토리를 생성합니다.
•	main.jsp와 copyright.jsp 파일을 이 디렉토리 안에 생성합니다.
3.	서버 설정:
•	프로젝트 설정에서 “Run/Debug Configurations”를 열고 새로운 “Tomcat Server” 설정을 추가합니다.
•	아티팩트를 배포 설정에 추가하고, 서버를 실행합니다.
4.	JSP 파일 실행:
•	브라우저를 열고 서버가 실행 중인 URL을 입력합니다.
•	예: http://localhost:8080/context-path/main.jsp

이와 같은 방식으로 JSP 페이지를 작성하고 IntelliJ에서 실행할 수 있습니다. jsp:include 태그를 통해 공통 부분을 포함시키는 방법은 유지보수성과 재사용성을 높이는 데 큰 도움이 됩니다.

Maven 기반 웹 애플리케이션 디렉토리 구조

your-project/

├── src/
│ └── main/
│ ├── java/ # 자바 소스 파일
│ ├── resources/ # 리소스 파일 (설정 파일 등)
│ └── webapp/ # 웹 애플리케이션 루트
│ ├── WEB-INF/ # 웹 애플리케이션 구성 파일
│ │ ├── web.xml # 배포 설명자 (Deployment Descriptor)
│ │ └── jsp/ # JSP 파일
│ │ ├── main.jsp # main.jsp 파일
│ │ └── copyright.jsp# copyright.jsp 파일
│ ├── META-INF/ # 메타데이터 파일
│ └── static/ # 정적 파일 (CSS, JS, 이미지 등)

├── pom.xml # Maven POM 파일
└── README.md # README 파일

currentTime.jsp 파일 설명

currentTime.jsp 파일은 JSP를 사용하여 현재 날짜를 웹 페이지에 출력하는 예제입니다. 이 파일은 자바의 Date 클래스를 가져와서 현재 날짜를 출력합니다.

파일 코드

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>스크립틀릿 실습</title>
</head>
<body>
    <h1>현재 날짜 출력 실습</h1>
    <%
        Date d = new Date();
    %>
    현재 날짜 : <%= d %>
</body>
</html>

코드 설명

  1. <%@ page import="java.util.Date" %>

    • 자바의 java.util.Date 클래스를 가져옵니다.
    • Date 클래스는 자바에서 날짜와 시간을 나타내는 클래스입니다. 이 클래스를 가져와서 JSP 페이지 내에서 사용할 수 있도록 합니다.
  2. <%@ page contentType="text/html; charset=UTF-8"%>

    • JSP 페이지의 MIME 타입을 설정합니다. 이 경우, HTML 콘텐츠를 UTF-8 인코딩으로 전달하도록 설정합니다.
  3. HTML 기본 구조

    • <!DOCTYPE html>: HTML5 문서임을 나타내는 선언입니다.
    • <html lang="ko">: HTML 문서의 언어를 한국어로 설정합니다.
    • <head>: 메타데이터와 제목을 포함하는 문서의 머리 부분입니다.
      • <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">: 문서의 콘텐츠 타입과 문자 인코딩을 설정합니다.
      • <title>스크립틀릿 실습</title>: 웹 페이지의 제목을 설정합니다.
    • <body>: 실제 콘텐츠가 포함되는 문서의 본문입니다.
  4. 스크립틀릿 (Scriptlet) 태그

    • <% ... %>: JSP 페이지 내에 자바 코드를 삽입하는 태그입니다.
    • <% Date d = new Date(); %>: 새로운 Date 객체를 생성합니다. 이 객체는 현재 날짜와 시간을 나타냅니다.
  5. 표현식 (Expression) 태그

    • <%= d %>: 자바 객체 d의 값을 출력합니다. 이 표현식 태그는 Date 객체의 toString() 메서드를 호출하여 현재 날짜와 시간을 출력합니다.

자바의 Date 클래스

Date 클래스 설명

  • Date 클래스는 자바에서 날짜와 시간을 나타내기 위해 사용됩니다. 이 클래스는 1970년 1월 1일 00:00:00 GMT를 기준으로 밀리초 단위의 시간 값을 저장합니다.
  • Date 클래스는 대부분의 날짜 및 시간 관련 작업을 수행하기 위한 기본적인 메서드를 제공합니다.

Date 클래스 사용 예제

  • Date 객체 생성:

    Date currentDate = new Date();
    • 현재 날짜와 시간을 나타내는 Date 객체를 생성합니다.
  • Date 객체 출력:

    System.out.println(currentDate);
    • currentDate 객체의 toString() 메서드를 호출하여 날짜와 시간을 출력합니다.

Date 클래스의 주요 메서드

  • getTime(): 1970년 1월 1일 00:00:00 GMT 이후 경과된 시간을 밀리초 단위로 반환합니다.
    long timeInMillis = currentDate.getTime();
  • setTime(long time): 주어진 밀리초 값을 사용하여 Date 객체를 설정합니다.
    currentDate.setTime(timeInMillis);

currentTime.jsp 파일의 사용

  • currentTime.jsp 파일은 웹 애플리케이션에서 현재 날짜와 시간을 동적으로 표시하고자 할 때 사용됩니다.
  • 예를 들어, 사용자가 웹 페이지를 요청할 때마다 현재 날짜와 시간을 표시해야 하는 경우, 이 JSP 파일을 사용할 수 있습니다.

JSP 파일과 자바 Date 클래스의 관계

  • JSP 파일 내에서 자바 코드를 삽입할 수 있는 스크립틀릿 태그를 사용하여 자바의 Date 클래스를 활용할 수 있습니다.
  • JSP 파일은 HTML 콘텐츠와 자바 코드를 혼합하여 동적인 웹 페이지를 생성할 수 있게 해줍니다. 이 예제에서는 Date 객체를 생성하고 현재 날짜와 시간을 HTML 페이지에 출력합니다.

이와 같이, currentTime.jsp 파일은 자바의 Date 클래스를 활용하여 현재 날짜와 시간을 웹 페이지에 동적으로 출력하는 예제입니다. 이를 통해 JSP와 자바 코드를 함께 사용하는 방법을 배울 수 있습니다.

0개의 댓글