728x90
*JSP 개발 환경
1. Java SE Development Kit 16(JDK 16)
2. IDE: Eclipse
3. Server: Tomcat9

1. JDK 설치

  • JDK: [Java VM, 핵심 API], 개발 툴(컴파일러,...) 제공
  • JRE: Java VM, 핵심 API
    1. 오라클-JDK: 추가적 기능이 더해진 버전(상용 목적으로 사용할 때 유료)
    2. 오픈-JDK: 순수한 자바 규격만을 구현한 버전(목적에 상관없이 무료)

 

🔸환경 변수 설정

  • 환경 변수 JAVA_HOME 생성
    •  C:\java\jdk16
  • 기존 변수 Path 수정
    •  C:\java\jdk16\bin

 

 

 

 

 

 

 


2. Eclipse 설치와 기본 사용법

 

  • Eclipse IDE
    • 통합 소프트웨어 개발 환경
    • Java로 작성된 프로그램이지만 Java 외에도 다양한 언어를 지원하는 IDE
    • 무료 오픈 소스 소프트웨어로 플러그인을 추가하여 기능을 확장할 수 있음
    • 오픈 소스 커뮤니티 eclipse.org의 프로젝트
  • 이클립스 설치 후, 실행 시 작업 공간(workspace) 지정
  • 작업 공간(workspace): 개발물이 저장되는 디렉터리

 

 

 

 

 

 

 


3. Tomcat 설치

  • Apache Tomcat
    • Apache Software Foundation의 오픈 소스 웹 컨테이너
    • Java 서블릿과 JSP 규약을 구현하고 있음
    • 기본적인 웹 서버 기능 포함
  • Windows 설치 방법에 따라 Tomcat 실행 방법이 달라짐
    1. zip 파일 다운로드
    2. 윈도우 서비스 인스톨러 다운로드
      • 설치 파일은 관리자 모드로 실행해서 설치

 

 

 

🔸압축 파일로 설치한 경우

  • CATALINA_HOME 환경 변수 설정
  • Tomcat 시작
    • [설치폴더]\bin\startup.bat를 실행
    • Tomcat 작동 확인 방법
      • Tomcat의 기본 포트: 8080
      •  웹 브라우저에서 Tomcat에 요청을 보내 응답을 확인(http://localhost:8080)
  • Tomcat 종료
    • [설치폴더]\bin\shutdown.bat를 실행

 

 

 

 

 

 

 


4. 웹 프로젝트 만들기

- 이클립스를 이용한 웹 프로그램 개발 순서

  1.  톰캣(웹 컨테이너) 등록하기: Tomcat을 Server로 등록
  2. 동적 웹 프로젝트(Dynamic Web Project)를 생성
  3. 서블릿 또는 JSP페이지를 작성하고 이를 실행하여 테스트 함
  4. 실제 서비스를 위해 웹 프로젝트를 war 파일 형태로 톰캣에 배포

 

 

 

- WAR 파일로 배포하기

  • 웹 프로젝트를 웹 컨테이너에 배포함
  • URL로 접근할 수 있도록 웹 애플리케이션(HTML, JSP, 서블릿, Java 소스 등의 묶음)을 톰캣에 등록하는 일
    • http://localhost:8080/프로젝트명/xxx.jsp  <- 브라우저에서 이와 같은 주소로 접속

 

 

 

- WAR(Web Application aRchive) 파일

  • 웹 프로젝트를 압축한 파일
  • 웹 애플리케이션을 웹 서버로 내보내기 위해 WAR 파일을 사용함
    • HTML, JSP, 서블릿, 리소스와 소스 파일 등
    • 웹 서비스 제공을 위한 폴더 구조를 가짐
  • Eclipse와 서블릿 표준 규약에서 웹 프로젝트의 디렉터리 구조가 다름
    • 예) java 소스의 클래스 파일 저장 경로
      • Eclipse: [웹프로젝트폴더]\bin\classes\
      • 톰캣: [웹프로젝트폴더]\WEB-INF-\classes\

 

 

 

 

 

728x90

'KNOU > JSP프로그래밍' 카테고리의 다른 글

[JSP프로그래밍] 1. 웹과 자바  (0) 2022.10.17
728x90

 

1. 웹 관련 용어

 

✅ 웹

 

🔸웹의 의미

  • 팀 버너스 리가 제안한 인터넷 기반의 정보 공유 서비스
    • = World Wide Web, WWW, W3
    • 인터넷 상에 분산되어 존재하는 다양한 정보를 통일된 방법으로 찾아볼 수 있게 하는 정보 서비스
  • 인터넷 기반의 전 세계적인 정보 공유 공간
    • 분산된 웹 서버에 존재하는 하이퍼텍스트(hypertext) 문서들이 서로 연결된 시스템

 

🔸하이퍼텍스트

  • 웹 상에 존재하는 문서 형태로서 텍스트 외에 이미지, 동영상 등의 멀티미디어 요소를 포함 → 구조화된 문서
  • 하이퍼링크(hyperlink)를 통해 다른 하이퍼텍스트와 연결됨 = 문서와 문서가 연결된 구조
  • 웹 브라우저를 이용해 하이퍼텍스트를 볼 수 있음
  • HTML로 표현되며 HTTP 프로토콜을 사용하여 전송됨

 

🔸W3C

  • World Wide Web Consortium의 약자
  • 국제 웹 표준화 기구 => HTML, HTTP, XML 등의 웹 관련 기술 관리

 

 

 

 

 

✅ 웹 문서

 

1. 정적 웹 문서

출처: 방송통신대학교

  • 정적인 텍스트로 문서의 내용이 바뀌지 않음
  • 클라이언트가 서버에게 정적 웹 문서를 요청하면, 서버는 해당 문서를 찾아서 전달함
  • 정적 웹 문서를 요청하면 항상 동일한 결과가 전달됨

 

 

 

2. 동적 웹 문서

출처: 방송통신대학교

  • 동적 웹 문서를 사용하여 최종 결과가 동적으로 만들어짐 => 클라이언트 측 처리와 서버 측 처리 방식이 있음
  • JSP는 동적 웹 문서를 작성하는 기술

 

 

 

 

 

 

 

 


2. 웹 애플리케이션의 실행과 구성 요소

 

  • 웹 애플리케이션: 웹에서 실행되는 응용 프로그램
  • 웹 애플리케이션의 구분
    1. 클라이언트 측 실행 / 서버 측 실행
    2. 컴파일 방식 / 비컴파일 방식

 

 

 

🔸웹 서비스 제공과 구성 요소

출처: 방송통신대학교

  • 웹 클라이언트(브라우저): 웹 브라우저는 웹 서버에 요청을 보내고 응답 결과를 출력
  • 웹 서버: 클라이언트의 요청을 처리하도록 프로세스를 관리하고 요청을 처리한 결과를 클라이언트에게 보냄
  • 웹 애플리케이션 서버(WAS, 웹 컨테이너): 웹 애플리케이션의 실행 환경으로 JSP 프로그램을 실행시키고 결과를 웹 서버에 전달
  • 데이터베이스: 웹 서비스 수행에 필요한 데이터를 저장하고 제공

 

 

 

 

 

✅ 웹 애플리케이션과 실행 위치

클라이언트 측 실행 서버 측 실행
- 웹 문서에 동적 요소를 포함 시켜 클라이언트에게 전송
- 웹 브라우저가 해석하여 페이지를 생성
- 애플릿, Javascript, 플래시 
- 단점: 보안의 문제
- 서버에서 실행되어 응답 문서를 동적으로 생성
- 웹 애플리케이션 서버가 수행한 결과가 브라우저에 전송됨
- 서블릿, JSP, ASP, PHP, CGI 방식
- 단점: 서버의 부담

 

 

 

 

 

✅ 웹 애플리케이션의 구현 방식

컴파일 방식 비컴파일 방식
- 컴파일 과정을 통해 실행 파일이나 바이트 코드가 만들어져 사용됨
- Java, 서블릿, JSP
- Perl, C, C++을 이용한 *CGI 방식
- 매 요청마다 스크립트를 해석하여 실행하는 방식
- Javascript는 클라이언트에서 실행되는 스크립트 언어

 

 

 

🔸CGI(Common Gateway Interface)

출처: 방송통신대학교

  • 동적으로 웹 페이지를 생성하기 위한 방식 중 하나
    • 고급 언어 프로그램을 실행시켜 HTML 코드를 생성한 후 전달함

출처: 방송통신대학교

  • 웹 서버가 응용 프로그램을 직접 호출
    • 클라이언트의 요청이 있으면 해당 프로그램을 실행시키기 위해 개별 프로세스를 생성함 → 동일한 CGI를 요청해도 요청의 개수만큼 프로세스를 생성하므로 웹 서버에 부하를 줌

 

 

 

🔸WAS(Web Application Server)

출처: 방송통신대학교

  • 서버의 성능을 개선하기 위해 웹 서버의 기능을 분리
  • 웹 서비스의 처리를 위해 동적 페이지를 만들거나 비지니스 로직을 처리(동적 웹 서비스를 담당하는 서버)
  • 웹 애플리케이션을 실행하고 관리하는 별도의 전담 프로그램
    • 모든 요청에 대해 매번 프로세스를 생성하지 않고, 하나의 자바 가상 기계 내에서 수행함
    • 요청을 처리하기 위해 스레드를 생성
  • 웹 페이지 생성 외에도 많은 기능을 수행: API제공, 부하 균형(로드 밸런싱), 고장 조치 등

 

 

 

🔸웹 서버

출처: 방송통신대학교

  • 클라이언트로부터 요청을 받고 결과를 전달하는 기능
    • 예) Apache HTTP Server, IIS, NginX
  • HTTP 프로토콜을 사용하여 클라이언트와 통신함
    • HTTP는 클라이언트와 웹 서버 간에 웹 문서를 전송하기 위한 통신 규약이며 웹 서버를 HTTP 서버라고 함
  • 구체적인 기능
    • 클라이언트가 요청한 웹 문서를 찾아 전달
    • 클라이언트 요청에 대한 기본적 사용자 인증을 처리
    • 문제가 있으면 정해진 코드 값으로 응답
    • 프로그램 실행 요청이 있으면 처리 후 그 결과를 전달

 

 

 

 

 

 

 


3. JSP와 웹 컨테이너

 

✅ 서블릿

출처: 방송통신대학교

  • Server + Applet = Servelt
    • 웹 페이지를 동적으로 생성하기 위한 서버 측 Java 클래스
    • Java 언어에 기초한 웹 프로그램 개발 기술
  • Java 언어로 서블릿 클래스를 만들고, 컴파일된 바이트 코드를 서버에 탑재하여 웹 서비스를 제공 → 소스를 수정하면 다시 컴파일하여 서버에 탑재해야 함

 

 

 

 

 

✅ JSP(JavaServer Pages)

JSP의 처리과정

  • 서블릿 대신에 사용할 수 있는 스크립트 형식의 언어 => HTML 페이지 내에 삽입됨
  • JSP 페이지는 서블릿으로 변환됨
    • 웹 애플리케이션 서버가 자동으로 JSP페이지를 변환하고 컴파일하여 웹 서비스를 제공
  • Java EE를 구성하는 기술 중 하나 (예:JSTL)
  • 특징
    • 스크립트 언어로 HTML 페이지에 삽입됨
    • Java 언어의 특성을 활용
    • 표현 언어, 표현식, 액션 태그 등의 스크립트적 요소를 제공
    • 다양한 개발 환경이 오픈 소스로 제공됨
    • JSP는 오픈 소스 형태로 운영되므로 다양한 기술이 지원됨
    • JSP 기술은 플랫폼에 독립적(.NET 기술은 개발과 운용 환경에 제약이 있음)

 

 

 

 

 

✅ 웹 컨테이너(=WAS)

  • 웹 컴포넌트를 저장하고 서블릿의 생명주기를 관리 => 클라이언트의 서블릿 요청을 실행시키는 역할
  • 서블릿 컨테이너라고도 함
    • Java로 구현된 서블릿 엔진(서블릿 실행 환경)
    • JSP를 서블릿으로 변환하는 기능을 포함
  • Tomcat, WildFly, WebLogic, WebSphere, JBoss 등

 

 

 

 

 

🔸웹 서버에서 서블릿이 실행되기 위한 환경

  • 웹 서버
  • 자바 실행 환경(JDK)
  • 서블릿 컨테이너(예: Tomcat)

 

 

 

 

 

🔸JSP 컨테이너

  • JSP 페이지를 서블릿 프로그램으로 변환
  • 대부분의 서블릿 컨테이너는 JSP컨테이너 기능을 포함
  • JSP 컨테이너 자체가 서블릿으로 구현되어 있으며 서블릿 컨테이너에 의해 실행됨

 

 

 

 

 

 

 


4. HTTP 프로토콜

 

✅ HTTP 프로토콜

  • 웹 서버와 클라이언트가 통신하는 규약으로 TCP 프로토콜에 기초한 애플리케이션 계층 프로토콜
  • Connection oriented & Stateless 특성
    • 요청을 위해 접속을 해야 함
    • 서버가 응답한 후에 서버는 클라이언트의 상태를 유지하지 않음
    • 웹 서버의 부담이 줄어드나 상태 관리를 위해 쿠키 세션 등이 필요
  • HTTP 요청과 응답 절차
    • 연결 설정 → 요청 메세지 전송 → 응답 메세지 전송 → 연결 끊기

 

 

 

 

 

 

✅HTTP 요청 메세지 구조

 

1. 시작 라인: 요청 방식, URI, 버전 번호

  • GET: 웹 서버에게 요청 대상에 대해 처리 방식을 지정
  • /index.html: 서버에 존재하는 파일의 URI
  • HTTP/1.1:HTTP의 버전

 

2. 요청 헤더

  • 한 라인에 하나씩 헤더 정보를 기술
  • 각 라인은 "헤더필드이름:값" 형식으로 구성됨
  • 요청 헤더의 끝에 공백 라인을 둠

예) 요청 헤더

3. 요청 메세지 몸체

  • POST 요청 방식에서만 의미있음
  • HTML 폼에서 작성한 데이터를 POST 방식으로 전송할 때 사용

 

 

 

 

 

✅ HTTP 응답 메세지 구조

  • 시작 라인, 응답 헤더, 응답 몸체로 구성
    • 시작 라인 구성: HTTP 버전, 서버의 응답 코드, 설명

출처: 방송통신대학교

🔸서버의 응답 코드와 설명

200 OK 클라이언트 요청이 성공적으로 끝남
400 Bad Request 잘못된 요청
401 Unauthorized 인증 오류
403 Forbidden 사용자 허가 모드 오류
404 Not Found 요청한 문서가 존재하지 않음
405 Method Not Allowed 요청한 방식을 지원하지 않음
500 Internal Sever Error 서버에서의 실행 오류
503 Server Unavailable 일시적으로 요청을 처리할 수 없음

 

 

 

 

 

728x90

'KNOU > JSP프로그래밍' 카테고리의 다른 글

[JSP프로그래밍] 2. 개발 환경 설정하기  (0) 2022.10.30

+ Recent posts