etc

[JSP]JSP-개념,특징,동작 과정,내장객체,문법

다당근 2021. 10. 22. 19:25

 

 

 

목차

     

    JSP

    jsp란 Java Server Pages의 약자로, Java 언어를 기반으로 하는 Server Side 스크립트 언어이다. HTML 코드에 Java코드를 넣어 동적인 웹 페이지를 생성하는 웹 프로그래밍이다.

    여기서 Server Side 란, 네트워크의 한 방식으로 클라이언트-서버 구조에서 서버 쪽에서 행해지는 처리를 말한다.

     

    JSP에서는 정적인 HTML 과 동적 컨텐츠를 혼합하여 사용할 수 있다. 동적 컨텐츠는 누가, 언제, 어떻게 서버에 요청했는지에 따라 결과값을 다르게 보여주는 형식이다. 정적 컨텐츠만 사용한다면 어느 사용자에게든지 동일하게 결과값을 보여주게 되지만, 동적 컨텐츠를 사용하면 사용자마다 다른 정보를 보여줄 수 있다. 개인마다 마이페이지의 정보가 다르게 보이는 것이 그 예이다.

     

    특징

    1. Java의 기능을 그대로 사용할 수 있다.
    2. 플랫폼에 독립적이다.
    3. OOP의 캡슐화로 중요한 정보를 은닉할 수 있고 코드를 숨길 수 있어 보안이 우수하다.
    4. 사용자 정의 태그(JSTL) 을 사용하여 보다 효율적으로 웹 사이트를 구성할 수 있다.
    5. 수정된 경우 재배포할 필요 없이 Tomcat(WAS)이 처리해준다.

     

    동작 과정

    1. 웹 클라이언트에서 JSP 파일을 요청한다.
    2. 웹 서버는 사용자의 요청을 JSP 컨테이너로 넘긴다.
    3. JSP 파일에 대해 Servlet객체가 메모리에 존재하지 않으면 JSP 파일을 파싱하고 JSP파일을 자바파일(.java) 로 변경, 자바 코드를 서블릿 클래스로 컴파일한다.
    4. 컴파일된 서블릿 파일을 클라이언트에 응답한다.

     

    내장 객체

    JSP Implicit Objects 는 개발자가 선언하지 않아도 사용할 수 있는 JSP Container 에서 제공하는 Java 객체들을 말한다.

     

    • out : JSP페이지의 출력할 내용을 가지고 있는 출력 스트림.
    • request :  웹 브라우저의 요청 정보 저장
    • response : 웹 브라우저의 응답 정보 저장
    • config : JSP페이지 설정 정보 저장
    • application : 웹 어플리케이션 Context의 정보 저장
    • session : 웹 브라우저 내에서 정보를 유지하기 위해 세선 정보 저장
    • pageContext : JSP페이지에 대한 정보 저장
    • exception : JSP페이지에서 예외가 발생한 경우 사용

    자세한 것은 이 블로그에서 확인할 수 있다.

    https://prinha.tistory.com/entry/JSP-%EB%82%B4%EC%9E%A5%EA%B0%9D%EC%B2%B4Implicit-Object%EC%99%80-%EC%98%81%EC%97%ADScope

     

    [JSP] 내장객체(Implicit Object)와 영역(Scope)

    JSP 내장객체 (Implicit Object)란? 웹 컨테이너가 객체 생성 없이 바로 사용할 수 있게 제공하는 객체 1. request 객체 - javax.servlet.http.HttpServletRequest  - 웹 브라우저의 요청 정보를 저장하고 있는..

    prinha.tistory.com

     

    문법

    JSP 는 HTML문서 사이에 JSP문법코드가 삽입된 형태로, 스크립트릿(Scriptlet), 선언문(Declaration), 표현식(Expression) 의 3가지 스크립트 요소를 제공한다.

     

    1. 스크립트릿(Scriptlet)

    <% %>

    JSP문법의 가장 기본 태그이다.

    주로 프로그래밍의 로직을 짤 때 사용하며, 스크립트릿에서 변수를 선언하게 되면 지역변수가 된다.

    다음과 같이 사용할 수 있다.

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <% 
      int sum = 0;
      for(int i=0; i<5; i++){
      	sum += i;
      }
    %>
    
    1부터 5까지의 합 = <%=sum%>
    	
    </body>
    </html>

     

    2. 선언문(Declarations)

    <%! %>

    필요한 멤버변수나 메서드 등을 선언할때 사용한다.

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    제 이름은 <%=getName()%> 입니다.
    
    <%!
      String name = "홍길동";
      public String getName(){
      	return name;
      }
    %>
    	
    </body>
    </html>

     

    3. 표현식(Expression)

    <%= %>

    웹 브라우저에 출력하기 위해 사용한다.

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    현재 시간은 <%=now%> 입니다.
    
    <%
    	Date now = new Date();
    %>
    	
    </body>
    </html>

     

    JSP 액션 태그

    JSP 문서 내에서 특정 동작을 하도록 지시하는 태그이다.
    • <jsp:include> : 다른 페이지를 현재 페이지에 포함시킬 때 사용
    • <jsp:setProperty> : 자바 빈 데이터를 입력하기 위해 사용
    • <jsp:getProperty> : 자바 빈 데이터를 가져오기 위해 사용
    • <jsp:forward> : 현재 페이지에서 다른 페이지로 넘어가기 위해 사용
    • <jsp:element>, <jsp:attribute> : 동적으로 XML요소 정의

     

    예시

    다음과 같이 사용할 수 있다.

    <jsp:forward page="home.jsp"/>