Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

Everything has an expiration date

05 [JSP (Java Server Pages)] 본문

[WebStudy] Concept

05 [JSP (Java Server Pages)]

Jelly-fish 2023. 12. 6. 17:47

■■■ JSP(Java Server Pages) ■■■



▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩   개   인   필   기   ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩

[JAVA]=================================
ⓐ SE : 스탠다드 에디션
ⓑ EE : 엔터프라이즈 (기업용) 에디션
ⓒ ME : 마이크로 에디션
ⓓ XE : 익스프레스 에디션
=======================================


[엔터프라이즈] → 개인용Ⅹ, 개인용 컴퓨터 한 대에서 돌아가는 프로그램이 아니라
                  여러 컴퓨터에서 돌아가는 프로그램을 구성할 때 사용하는 에디션!!!

Servlet : 자바를 통해 서버의 뒷 처리 로직을 구현하는 것에 특화. 
jsp : 자바를 통해 사용자와 직접 만나는 부분 (html)을 제작하는 것에 특화.

CGI : 유저들이 한글 파일을 열 때마다 새롭게 프로그램을 구동하는 것.
      많은 유저가 여기저기서 한글 파일을 열게 되면 그것에 연관된 프로그램도 구동... 트래픽 증가, 리소스 소모 증가.
      10명이 프로그램 열면 -> 프로그램 10개 돌아감

      
JSP : 22명이 프로그램 연다고 해도, 프로그램은 단 하나만 실행된다!!
      

웹 : 단방향 통신.
      - 랜선을 뽑는다 해도, 웹 사이트에 아무런 영향이 없다. (쌍방향 통신이 아니기 때문!!)



[JSP 컨테이너 : 주체 or 장소를 의미] → JSP 컨테이너 모듈은 아예 없다!
→ Servlet 컨테이너는 존재! 이것을 의미한다!

Web 컨테이너 Spring 컨테이너...
→ 항구의 컨테이너! 그 안에 사람이 들어가있는 형태로 상상하자.


[Servlet 컨테이너]
┌──────────────┐

      ○   ← Servlet(일꾼)
      ┼
      ㅅ
└──────────────┘

서블릿 컨테이너 안에서 물품 정리하고, 서류박스 꺼내고 하는 일꾼이 있는데 이것을 서블릿!!


확장자가 java인 것 → 서블릿...


[논리적으로 객체가 다 연결되어 있는 것!]
[클래스 생성 → 객체 생성!!]

class Test extends 객체(Object)
{

}


○ 서블릿을 상속하거나, 구현(implements) 하는 클래스는 서블릿이라고 할 수 있다.
class Test extends Servlet 
{

}


xml : html을 구조화 시킨다.
csv : 오피스 형식에서 읽어들일 때 특화...
json : 단점 - Json 객체 형태로 처리하는 프로그램이 있어야 수정 가능.

xml단점 : 여는 태그<name>, 닫는태그</name> 처럼, 
          html 문법과같이 구조화된 문법을 사용해야 한다.
          계속해서 태그와 함께 사용해야 한다.



xml의 단점 극복 : jsp

WebINF : 에 나중에 jsp파일 저장할 것! 내가 허용했을 때만 클라이언트가 접근할 수 있도록!!!

▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
【Web.xml : 배치 기술서!!!】
▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤


xml을 체크해제하고 만들어서 없을 때 생성!!

DynamicWebProject 프로젝트명 마우스 우클릭
JAVA EE Tools
Generate



▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩



1. JSP(Java Server Pages) : 웹 프로그램 작성 언어의 한 종류

2. JSP(Java Server Pages)는 동적(Dynamic)인 웹 페이지를
   비교적 간단히 만들 수 있는 방법을 제공하는
   자바를 기반으로 하고 있는 스크립트(Server Side Script) 로
   자바 엔터프라이즈 어플리케이션에서 UI(User Interface) 영역을
   담당하고 있다.

3. JSP(Java Server Pages)는 자바를 서버 환경에서 사용하는 스크립트 방식의 언어로
   단일 스레드로 클라이언트의 요청에 서비스한다.
   요청이 있을 때 마다... 즉, 객체가 생성될 때 마다...
   프로세스를 생성하는 기존의  CGI 와는 달리
   하나의 메모리를 공유하면서 서비스되는 원리를 갖고 있다.
   이러한 원리는 서버측 부하를 줄여주며,
   JSP 내부에는 보여주는 코드만 작성하고
   직접 작업하는 부분은 자바 빈으로 구성하여 둘을 분리할 수 있다.
   이는 서로 영향을 주지 않으면서 수정할 수 있는 장점을 취하며,
   JAVA 가 갖고있는 장점인 재사용성을 높일 수 있게 한다.
  
   클라이언트 <---------------------------> 서버
   HTML, CSS, Javascript <----------------> JSP(JAVA)
   브라우저(IE, CR, FF 등) <--------------> 웹서버(톰캣), 오라클
   요청 <---------------------------------> 응답(HTML 웹 페이지)


4. JSP 실행 구조

   1단계. 웹 클라이언트에서 웹 서버에 웹 프로그램(페이지) 요청.

   2단계. 웹 서버에서 웹 클라이언트가 요청한 JSP 프로그램(페이지) 로드.

   3단계. JSP 페이지에 대한 변환 실행
          (※ 이 과정에서 일반 『.java』인 파일로 변환된다. 『→Servlet』)

   4단계. 『.java』 인 파일로 변환된 Servlet 의 컴파일(.class) 및 실행

   5단계. 실행 결과로 동적 생성된 HTML Document 를 클라이언트 측에 응답.

   6단계. 웹 클라이언트는 응답받은 HTML Document 를
          브라우저에서 웹 페이지 형태로 출력

   
5. 이클립스 JSP 개발 환경 구축

   1) 프로젝트(new) 생성 시 『Dynamic Web Project』 선택
   2) 프로젝트 명 입력 시 식별자 작성 규칙을 준수
      원래 규칙에 따르면 『JspTest001.jsp』와 같이 명명해야 하지만,
      클라이언트 측에서 (대소문자 구분없이) 좀 더 편하게 사용할 수 있도록
      일단 지금은(당분간은) 『jsptest001.jsp』와 같이 명명한다.

   3) Target Runtime 지정 → 톰캣 설치 디렉터리 연결
   4) 프로젝트 생성 후에는 Server 탭에서 톰캣 서버 등록
      (단, 서버를 새로 등록했을 경우 서버 관련 설정을 재구성)
   5) 톰캣 서버에 프로젝트 등록 → add and remove
   6) 톰캣 서버 시작(재시작)
      ※ 이 시점에서...
         포트번호 설정 및 확인 필요
         (오라클이 웹 상에서 port 8080 을 사용하기 때문에 충돌 방지)
         『Project Explorer』의 『Server』 디렉터리 노드를 확장하면
         『server.xml』 파일이 존재하며, 이 파일을 열어 63 ~ 65 정도 라인의 내용을 수정한다.
          
          <Connector URIEncoding="UTF-8" ... port="3306" />
                     -------------------     ----------
                       ↑ 추가 삽입            ↑ 수정 (기본 8080)

      ※ xml 파일을 수정한 후에는 반드시 서버를 재시작 해야 한다.        check~!!!

   7) JSP 페이지 작성(확장자 『.jsp』)
      → WebContent 디렉터리 하위에 작성
      ※ 페이지 작성 전에 Encoding 방식을 체크 및 설정한다. (UTF-8)
      ※ JSP 기본 페이지의 템플릿을 HTML5 기반으로 수정하여 설정한다. (기본 HTML 4.0)

   8) 톰캣 서버가 실행되고 있는 상태에서
      웹 브라우저의 URL 주소 창에 다음과 같은 주소를 요청한다. (클라이언트 입장)
      
      http://서버주소:포트번호/프로젝트이름/파일이름.jsp

      http://localhost:3306/WebApp04/jsptest001.jsp
             ---------
             127.0.0.1

      ※ 원격 접속인 경우는 localhost(127.0.0.1) 대신
         목적지 서버의 IP Address 를 작성해야 한다.



○ JSP 구성 요소
  
   1. 디렉티브(지시어)
      - 페이지에 대한 설정 정보 지정, 클래스 속성을 변경,
      <%@ %>

      ·page
        페이지에 대한 기본 정보 입력
        (생성하는 문서의 타입, 출력 버퍼의 크기, 에러 페이지 등)
         현재 문서를 나타내는 객체
         page 디렉티브는 JSP 페이지와 관련된 속성을 정의하고
         이 속성들은 웹 컨테이너에 정보를 제공한다.
         또한, 한 페이지에 page 디렉티브는 여러 번 등장할 수 있고
         위치도 관계가 없다. 하지만 보통 페이지 상단에 기술한다.

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


      ·taglib
        태그 라이브러리(tag library)
        사용자가 만든 태그 모음(사용자가 직접 기능 설정)
    

      ·include
        다른 문서를 포함하는 기능
        여러 JSP 페이지에서 공통적으로 포함하는 내용이 있을 때
        이러한 내용을 매번 반복해서 입력하지 않고
        별도의  파일에 저장해 두었다가 JSP 파일에 삽입하도록 하는 것 → 생산성 향상
        include 디렉티브 처리 과정은
        정적으로 include 지시자를 사용한 JSP 페이지가 컴파일 되는 과정에서
        include 되는 JSP 페이지 소스 내용을 그대로 포함해서 컴파일 한다.
        즉, 복사&붙여넣기 방식으로 두 개의 파일을 하나로 구성한 후
        같이 변환되고 컴파일 된다.     

   2. 스크립트 요소
      - 스크립트 릿(Scriptlet)... 스크립 릿... 스크립틀릿...
        JSP 에 자바 코드를 기술
        <%  %>

       JSP 문서 내에 JAVA 코드를 기술하는 부분이기 때문에
       오로지 자바 코드만 올 수 있다.
       스크립트 릿에 선언된 변수는 지역 변수의 성격을 가지게 되며
       (서블릿 안에 있는 service() 메소드 안에 선언된 변수이므로...)
       자바에서 메소드 내에 선언된 변수라고 할 수 있다.

      - 표현식(Expression)
        HTML 문서 결과값에 포함시키고자 할 때 사용
        <%=  %>
        (즉, 브라우저에 등장시킬 수 있는 영역)
        
      - 선언부(Declaration)
        스크립트릿이나 표현식에서 사용할 수 있는 함수 작성 시 사용.
        <%!  %>

        스크립트 릿이나 표현식에서 사용할 수 있는 변수나 메소드를 정의하는
        부분이기 때문에 선언부에서 선언된 변수는 서블릿으로 변환되는 과정에서
        멤버 변수의 입장을 취하게 되며 전역 변수의 성격을 가진다.
        또한, 『_jspInit()』, 『_jspDestroy()』 와 같은 생명주기 운영을 위해
        메소드를 재정의할 수 있다.