JavaRush /Java Blog /Random-KO /JSP란 무엇입니까? 실제로 가능성을 탐구해보자
Анзор Кармов
레벨 31
Санкт-Петербург

JSP란 무엇입니까? 실제로 가능성을 탐구해보자

Random-KO 그룹에 게시되었습니다
JSP 또는 Java Server Pages는 Java 애플리케이션용 동적 웹 페이지를 생성할 수 있는 Java 기술입니다. 이 기사에서는 JSP가 무엇인지 더 자세히 설명하고, 이 기술의 일부 기능에 대해 논의하고, JSP 페이지의 구조를 살펴보고, Java Server Pages가 무엇인지 실제로 살펴보겠습니다. JSP란 무엇입니까?  실제 가능성 이해 - 1하지만 먼저 JSP의 이점과 중요성에 대해 이야기해 보겠습니다. JSP를 사용하면 개발자는 다음을 수행할 수 있습니다.
  • 웹페이지의 데이터를 Java 코드로 수신합니다.
  • Java 코드에서 웹 페이지로 데이터를 보냅니다.
  • HTML 내부에 직접 Java 코드를 작성합니다(단, 이를 남용해서는 안 됩니다).
JSP 지식의 필요성은 다음과 같은 여러 가지 이유로 매우 높게 평가될 수 있습니다.
  • JSP는 주요 Java 웹 기술 중 하나입니다.
  • JSP는 대부분의 회사와 프로젝트에서 널리 사용됩니다.
  • JSP는 서블릿 컨테이너 내부의 Java 서블릿과 원활하게 통합됩니다.

JSP 정의

다음은 Wikipedia의 정의입니다. JSP(JavaServer Pages)는 웹 개발자가 정적 구성 요소와 동적 구성 요소를 모두 포함하는 콘텐츠를 만들 수 있도록 하는 기술입니다. JSP 페이지에는 두 가지 유형의 텍스트, 즉 HTML, SVG, WML 또는 XML 텍스트 형식 중 하나일 수 있는 정적 소스 데이터와 동적 컨텐츠를 구성하는 JSP 요소가 포함됩니다. 또한 JSP 태그 라이브러리와 EL(Expression Language)을 사용하여 JSP 페이지의 정적 콘텐츠에 Java 코드를 삽입할 수 있습니다. JSP 페이지 코드는 Jasper JSP 페이지 컴파일러를 사용하여 서블릿 Java 코드로 변환된 다음 JVM(Java Virtual Machine) 바이트코드로 컴파일됩니다. JSP 페이지를 실행할 수 있는 서블릿 컨테이너는 플랫폼 독립적인 Java 언어로 작성됩니다. JSP 기술은 웹 애플리케이션 개발을 위한 플랫폼 독립적이고 이식 가능하며 쉽게 확장 가능한 기술입니다.

JSP 페이지 구조

일반적으로 JSP는 동적 부분은 Java를 사용하여 생성되고 정적 부분은 마크업 언어(주로 HTML)를 사용하여 생성되는 동적 웹 페이지를 나타냅니다. 이러한 페이지는 JSP 요소(또는 JSP 태그)가 산재되어 있는 마크업 언어(예: HTML, SVG, WML 및 XML) 중 하나로 작성되고 .jsp 확장자를 가진 텍스트 문서입니다. 이러한 태그에는 서버 코드(데이터)에 대한 호출이 포함되어 있으며 일부 계산도 수행합니다. 이러한 파일은 서버에서 처리되며 그 결과 모든 JSP 태그가 html 태그로 변환되고 출력은 일반 html 페이지입니다. 아래 다이어그램은 JSP 페이지의 구조와 서버와의 상호 작용에 대한 다이어그램을 보여줍니다. JSP란 무엇입니까?  실제 가능성 이해 - 2간단한 JSP 페이지의 예:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
이 예에서는 특수 언어 인 EL(Expression Language) 로 작성된 JSP 표현식이 HTML 코드 내에 "임베디드"되어 있습니다 . 이는 프리젠테이션 계층(웹 페이지)과 애플리케이션 비즈니스 논리 계층(Java 코드) 간의 상호 작용을 위한 중요한 메커니즘을 제공합니다. 예제에서 볼 수 있듯이 JSP 표현식은 달러 기호 - 와 함께 중괄호로 묶입니다 ${...}. 중괄호 안에 있는 모든 내용은 서버에서 평가되며 이 표현식의 결과는 JSP 표현식이 원래 정의된 위치인 html로 제공됩니다. 모든 태그를 처리한 후 페이지는 다음과 같습니다.
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

서블릿 컨테이너 설치 및 실행

JSP 코드는 Java 서블릿 코드로 변환되므로 JSP가 어떻게 작동하는지 설명할 수 있는 일종의 서블릿 컨테이너를 어딘가에 가져와야 합니다. 그렇지 않으면 컨테이너가 없으면 JSP가 작동하지 않습니다. 하지만 먼저 서블릿 컨테이너의 정의를 살펴보겠습니다. 서블릿 컨테이너는 서블릿에 대한 시스템 지원을 제공하고 사양에 정의된 규칙에 따라 수명 주기를 보장하는 서버인 프로그램입니다. 완전한 독립 웹 서버로 작동하거나, 다른 웹 서버의 페이지 제공자로 작동하거나, Java EE 애플리케이션 서버에 통합될 수 있습니다. 가장 널리 사용되는 서블릿 컨테이너 중 하나는 Apache Tomcat입니다. JSP란 무엇입니까?  실제 가능성 이해 - 3Tomcat은 완전한 Java EE 애플리케이션 서버가 아니라는 점은 언급할 가치가 있습니다. 그러나 서블릿과 JSP 페이지의 필수 요구 사항을 충족하려면 Tomcat 서버만으로도 충분합니다. 설치를 시작해 보겠습니다. 공식 페이지 에서 Tomcat을 다운로드할 수 있습니다 . Windows OS의 경우 다음과 같이 Tomcat을 설치할 수 있습니다.
  1. 32비트/64비트 Windows 서비스 설치 프로그램을 다운로드합니다.

  2. 파일을 실행해 보겠습니다.

  3. 다음으로 일반적인 설치 절차를 따르십시오.

    1. 해당 설치 프로그램 창에서 예제 확인란을 선택하는 것을 잊지 마세요.

      JSP란 무엇입니까?  실제 가능성 이해 - 4
    2. 사전 설치된 JRE의 경로를 지정합니다.

      JSP란 무엇입니까?  실제 가능성 이해 - 5
  4. 설치 후 Tomcat을 실행하고 브라우저를 엽니다. http://localhost:8080/ 으로 이동합니다 .

Tomcat 시작 페이지가 보이면 설치가 성공적으로 완료되었으며 서버가 실행 중이라는 의미입니다. Tomcat을 수동으로 시작하고 중지하려면 bin 디렉터리에 있는 두 개의 실행 파일 중 하나를 실행하면 됩니다. Tomcat이 설치된 디렉토리 내부에 있습니다. JSP란 무엇입니까?  실제 가능성 이해 - 6

데모 애플리케이션. 숨겨진 개체

실제 JSP 기능 중 일부를 살펴보겠습니다. 그 중 하나는 소위 숨겨진 객체( Implicit Objects )에 대한 액세스입니다. EL(Expression Language)을 사용하여 액세스할 수 있는 개체입니다. 이러한 개체의 예로는 HTTP 헤더 또는 URL 매개변수가 있습니다. URL 매개변수가 무엇인지 공개(또는 기억을 새로 고치기)해 보겠습니다. 아래 예는 매개변수가 있는 URL을 보여줍니다. 매개변수는 굵게 표시됩니다: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom 매개변수는 항상 물음표(?)로 시작됩니다. 그 뒤에는 매개변수 이름이 오고 그 뒤에 등호가 옵니다. 매개변수 값이 결정됩니다. 여러 개 또는 하나의 매개변수가 있을 수 있습니다. 둘 이상이 있는 경우 각 이름-값 쌍은 앰퍼샌드 문자(&)로 구분됩니다. 위의 예에서는 여러 매개변수와 해당 값이 정의되었습니다.
매개변수 이름 매개변수 값
매개변수1 값1
매개변수2 값2
1
이름
URL 매개변수를 포함하여 JSP에서 숨겨진 개체에 액세스하는 방법을 살펴보겠습니다. 이렇게 하려면 Tomcat을 실행하고 http://localhost:8080/ 페이지에서 브라우저를 엽니다. 그런 다음 예제 페이지로 이동합니다. 그런 JSP란 무엇입니까?  실제 가능성 이해 - 7다음 JSP 예제 링크를 따릅니다. JSP란 무엇입니까?  실제 가능성 이해 - 8예제 페이지에서 Implicit Objects -> Execute 링크를 따릅니다. JSP란 무엇입니까?  실제 가능성 이해 - 9페이지에서는 숨겨진 개체를 사용하는 예를 볼 수 있습니다. 다음은 자세한 설명이 포함된 페이지의 스크린샷입니다. 페이지의 해당 필드를 사용하여 JSP란 무엇입니까?  실제 가능성 이해 - 10매개변수 값을 변경해 본 foo다음 주소 표시줄에서도 이 매개변수 값이 변경되었는지 확인하세요. 제시된 페이지는 기능이 많지는 않지만, 나중에 특정한 숨은 개체에 접근해야 할 때 참고할 수 있는 좋은 참고 자료가 됩니다. 이 페이지에는 접근할 수 있는 숨겨진 개체 목록이 포함되어 있습니다. 그리고 아래 표에는 특정 개체에 액세스하는 방법이 나와 있습니다.

JSP 함수

이제 이전 페이지로 돌아가서 "숨겨진 개체" 페이지의 소스 코드를 살펴보겠습니다. JSP란 무엇입니까?  실제 가능성 이해 - 11여기 있습니다:
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<html>
  <head>
    <title>JSP 2.0 Expression Language - Implicit Objects</title>
  </head>
  <body>
    <h1>JSP 2.0 Expression Language - Implicit Objects</h1>
    <hr>
    This example illustrates some of the implicit objects available
    in the Expression Language.  The following implicit objects are
    available (not all illustrated here):
    <ul>
      <li>pageContext - the PageContext object</li>
      <li>pageScope - a Map that maps page-scoped attribute names to
          their values</li>
      <li>requestScope - a Map that maps request-scoped attribute names
          to their values</li>
      <li>sessionScope - a Map that maps session-scoped attribute names
          to their values</li>
      <li>applicationScope - a Map that maps application-scoped attribute
          names to their values</li>
      <li>param - a Map that maps parameter names to a single String
          parameter value</li>
      <li>paramValues - a Map that maps parameter names to a String[] of
          all values for that parameter</li>
      <li>header - a Map that maps header names to a single String
          header value</li>
      <li>headerValues - a Map that maps header names to a String[] of
          all values for that header</li>
      <li>initParam - a Map that maps context initialization parameter
          names to their String parameter value</li>
      <li>cookie - a Map that maps cookie names to a single Cookie object.</li>
    </ul>

    <blockquote>
      <u><b>Change Parameter</b></u>
      <form action="implicit-objects.jsp" method="GET">
          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
          <input type="submit">
      </form>
      <br>
      <code>
        <table border="1">
          <thead>
            <td><b>EL Expression</b></td>
            <td><b>Result</b></td>
          </thead>
          <tr>
            <td>\${param.foo}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${param["foo"]}</td>
            <td>${fn:escapeXml(param["foo"])} </td>
          </tr>
          <tr>
            <td>\${header["host"]}</td>
            <td>${fn:escapeXml(header["host"])} </td>
          </tr>
          <tr>
            <td>\${header["accept"]}</td>
            <td>${fn:escapeXml(header["accept"])} </td>
          </tr>
          <tr>
            <td>\${header["user-agent"]}</td>
            <td>${fn:escapeXml(header["user-agent"])} </td>
          </tr>
        </table>
      </code>
    </blockquote>
  </body>
</html>
HTML에 익숙하다면 페이지의 소스 코드가 매우 명확할 것입니다. 다음 줄에 주의하세요.
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
여기에는 html 태그 <tr><td>. 태그 뒤에는 <td>중괄호로 묶인 JSP 태그가 옵니다 ${ }. 그러나 URL 매개변수의 값이 어떻게 출력되는지 확인하세요 foo.
${fn:escapeXml(param["foo"])}
값은 JSP 함수를 사용하여 출력됩니다 fn:escapeXml(). JSP 함수는 재사용할 수 있는 일부 기능을 캡슐화합니다. 이 경우에는 XML 이스케이프입니다. JSP 기술은 선택할 수 있는 광범위한 기능뿐만 아니라 자신만의 기능을 생성할 수 있는 기능도 제공합니다. JSP에서 함수를 사용하려면 해당 함수가 정의된 적절한 라이브러리를 JSP 파일로 가져와야 합니다.

태그 라이브러리

위의 다른 소스 코드 줄(두 번째 줄)을 살펴보겠습니다.
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
이것이 태그 라이브러리를 가져오는 방법입니다. 구문은 직관적입니다. 우리는 여러 가지를 정의합니다:
  • taglib(태그 라이브러리 - 태그 라이브러리);
  • url, 이 라이브러리가 위치한 곳;
  • fn이 라이브러리에 정의된 함수를 호출할 수 있는 접두사(이 경우 )입니다.
위의 예에서는 함수 가져오기를 살펴보았습니다. 특히 이 예에서는 JSTL(JSP Standard Tag Library) 라이브러리를 가져왔습니다. JSTL은 Tomcat을 포함하여 모든 서블릿 및 JSP 구현과 함께 제공되는 다양한 라이브러리 세트를 포함하는 표준 태그 라이브러리입니다. 또 다른 인기 있는 태그 라이브러리는 다음과 같이 가져올 수 있는 core입니다.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
와 마찬가지로 fn표기법은 c선택 사항이며 일반적으로 허용됩니다. 이 명칭은 이러한 라이브러리가 사용되는 거의 모든 곳에서 찾을 수 있습니다. 다음은 핵심 라이브러리의 함수 예입니다.
<c:out value = "${'<div>'}"/>
이 함수는 단순히 태그를 출력합니다 <div>. 이 함수는 이미 XML 이스케이프를 수행합니다. 이 기능은 보안 관점에서 중요한데, 를 통해 변수의 값을 직접 출력함으로써 ${variable}스크립트 주입의 문을 열 수 있기 때문입니다.

JSP 편집

이제 새로운 지식으로 무장하여 Tomcat 내부의 데모 애플리케이션을 변경해 보겠습니다. 이를 위해 이 서블릿 컨테이너가 설치된 폴더 내에서 이 페이지의 소스 코드를 찾습니다. 이 파일은 다음 주소에서 찾을 수 있습니다: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el 그런 다음 텍스트 편집기에서 implicit-objects.jsp 파일을 엽니다. 핵심 라이브러리 가져오기를 추가합니다. , 그런 다음 이를 사용하여 텍스트를 출력해 보겠습니다. JSP란 무엇입니까?  실제 가능성 이해 - 12이제 숨겨진 개체 페이지를 새로 고치고 변경된 내용을 살펴보겠습니다. JSP란 무엇입니까?  실제 가능성 이해 - 13

결과

그래서 우리는 JSP와 같은 기술을 표면적으로 살펴보았습니다. 우리는상의 했어:
  • JSP가 무엇인가요?
  • JSP 페이지 구조;
  • Tomcat 서블릿 컨테이너 설치 및 실행 절차
  • Tomcat 서버 배포 패키지에 포함된 숨겨진 개체에 액세스하기 위한 데모 애플리케이션;
  • JSP 함수 및 태그 라이브러리.

무엇 향후 계획?

자료를 보호하려면 다음을 수행할 수 있습니다.
  1. 이 기사에 설명된 모든 내용을 반복하십시오.
  2. Tomcat 서버에 포함된 다른 데모 애플리케이션을 고려해보세요.
  3. 자신만의 애플리케이션을 작성하고 이를 서블릿 컨테이너에 배포합니다. IntelliJ Idea Enterprise에서 간단한 웹 프로젝트 만들기 문서를 지침으로 사용할 수 있습니다 . 사진과 함께 단계별로.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION