[신세계I&C KDT][Servlet/JSP] #31 프로젝트 생성 방법 (0520)

박현아·2024년 5월 21일
0

신세계아이앤씨 KDT

목록 보기
35/42

Servlet/JSP

1. 자바 개발 플랫폼

1) Java SE (Java Standard Edition)

  • 자바 spec
  • JDK 설치로 SE 환경이 구축됨
  • rt.jar
  • 개발할 수 있는 프로그램 형태 : 로컬로 실행되는 프로그램

2) Java EE (Java Enterprise Edition)

  • Servlet/JSP spec (인터페이스 개념,
  • Tomcat 서버 설치로 EE 환경이 구축됨
  • servlet-api.jar와 jsp-api.jar
  • 개발할 수 있는 프로그램 형태 : 웹브라우저를 이용하는 웹사이트 개발

3) Java ME (Java Micro Edition)

  • 소규모 디바이스에서 동작하는 프로그램 개발
  • 예> 핸드폰, 셋톱박스,...

2. 환경 설정

1) JDK 11

2) eclipse

  • Eclipse IDE for Enterprise Java and Web Developers 다운로드
  • JDK 11을 지원하는 이클립스를 사용해야됨 (2022-06)
  • eclipse-jee-2022-06-R-win32-x86_64.zip

3) Tomcat 서버

  • Tomcat 9 버전 사용
  • http://jakarta.apache.org
  • servlet-api.jar와 jsp-api.jar 지원됨
  • 패키지명이 javax.servlet 형식으로 시작됨 (Tomcat 10은 jakarta.servlet)
  • apache-tomcat-9.0.89.zip

3. eclipse와 Tomcat 9 연동

1) eclipse 실행

(1) 인코딩 설정 (UTF-8) 4개 확인

general > worspace
web > css, html, jsp

(2) JDK 11로 설정하기 ★

preference > Java > Compiler > 11 로 변경
preference > Java > installed JRE > 기존 jre 삭제하고 > Add 클릭 > Standard VM 선택 > JRE Home 에 C:\Program Files\Java\jdk-11 설정 > Finish > Apply and Close

2) eclipse Tomcat 9 설정해서 연동

  • 하단에 servers > Tomcat 9 선택 > new Server > Tomcat 9 선택
  • Severs 탭에 추가된 tomcat 더블클릭하고 Overview 탭 선택 3가지 설정을 변경한다

(1) server location 에서 Server Path 변경

  • 두 번째 라디오버튼으로 변경 ( Use Tomcat installation )

(2) server location 에서 Deploy Path 변경

  • C:\servlet_study\apache-tomcat-9.0.89\webapps 설정

(3) tomcat의 port 번호 변경

  • 8080 에서 8090로 변경
    ( 변경하는 이유는 Oracle DB에 tomcat이 내장되어 있고 내부적으로 8080 사용함. 충돌 방지하기 위해서 8090로 변경)

cf) deploy path (배포 경로)

  • 우리가 만든 웹 어플리케이션을 Tomcat 서버가 클라이언트에게 서비스를 제공한다.
    이때 우리는 우리가 만든 웹 어플리케이션을 Tomcat 서버가 서비스 할 수 있는 특별한 디렉토리에 저장해야 된다. 이 작업을 하기 위한 저장 경로를 배포 경로라로 부른다.
  • tomcat의 기본 배포 경로는 C:\servlet_study\apache-tomcat-9.0.89\webapps
  • tomcat의 기본 port는 8080

3) Tomcat 9 삭제 방법

preference > Server > Runtime Enviroments > 설정된 tomcat 삭제

4. 프로젝트 생성

파일 > New > Dynamic Web Project 선택
project name : HelloTest

web Module 화면

1) Context Root

  • URL에서 사용
    http://localhost:8090/context명/자원 (html,css,js,image,jsp,서블릿)
  • context명은 논리적인 이름으로 실제 tomcat이 webapps(배포 경로)에 저장하고 있는 어플리케이션을 선택하는 역할을 한다
    내부적으로 다음과 같이 key/value로 구성됨
context명   웹어플리케이션 (webapps에 저장된 물리적인 디렉터리)
______________________________
  key            value
	  
예> a              x
	b              y
  • context명 언제든지 변경 가능하고 대소문자 구별됨 (일반적으로 소문자로 사용)
    단 반드시 / 로 시작해야 됨

2) Content Directory

  • 개발자가 만든 소스가 저장되는 디렉토리
  • 이클립스의 workspace에 저장됨
    예> eclipse의 project explorer 화면
	 HelloTest
	   ..
	   java Resources
	     src/main/java ( *.java 가 저장됨, 서블릿)
	     ..
	   src
	     main
	        java       ( *.java 가 저장됨 )
		webapp (*****)
		    META-INF
		      MANIFEST.MF
		    WEB-INF
		       lib
		       web.xml
		    
		    hello.html (정적)
		    test.css
		    test.js
		    test.png
		    world.jsp (동적)

cf) 3가지 컴포넌트
1. 정적 ( src/main/webapp 폴더에 저장 )

  • html ( *.html )
  • JS
  • CSS
  • images
  1. 동적
  • jsp ( *.jsp ) <== html과 동일한 폴더에 저장. 즉 WEB-INF와 동일한 레벨
    html 처럼 비슷한 태그로 구성되었으나 자바 코드를 포함할 수 있음
  • 서블릿 (*.java)
    : src/main/java 에 저장. 반드시 패키지로 작성해야 된다 ★
    ==> 최종적인 실행 결과는 html로 만들어져야 된다 ★

3) web.xml

  • 배치 지시자 (deployment descriptor)
  • 개발자가 만든 웹 어플리케이션의 전반적인 설정 정보 담당
    ( 예> filter 등록, 서블릿 맵핑, ... )
  • web.xml 대신에 어노테이션을 이용할 수도 있음
  • Spring Framework에서 설정 정보를 web.xml로 사용함

5. Tomcat 서버에 배포하는 디렉터리 구조 ★

webapps (배포경로의 홈 디렉터리)
폴더 (HelloTest) <================== '웹 어플리케이션' 이라고 부른다
      WEB-INF
	  		classes
		    	- *.class 저장
	        lib
		  		- 나중에 mybatis.jar, mysql-connector.jar 같은 외부 라이브러러 저장용
            web.xml 
 
	  *.html
	  *.js
	  *.css
	  *.png

6. 클라이언트에서 웹브라우저에 요청하는 URL 문법 ★

1) 정적 컴포넌트 요청 (디렉터리 X)

http://서버IP번호:port번호/context명/자원

예> http://localhost:8090/xxx/hello.html // 논리적인 context명인 '/xxx'
http://localhost:8090/HelloTest/hello.html // 물리적인 web application인 HelloTest

http://localhost:8090/xxx/test.css
http://localhost:8090/xxx/test.js
http://localhost:8090/xxx/tomcat.svg

2) 정적 컴포넌트 요청 (디렉터리 O) : 일반적인 구조

http://서버IP번호:port번호/context명/디렉터리/자원

http://localhost:8090/xxx/html/hello.html
http://localhost:8090/xxx/css/test.css
http://localhost:8090/xxx/js/test.js
http://localhost:8090/xxx/images/tomcat.svg

3) 동적 컴포넌트인 JSP 요청 (디렉터리 X)

http://서버IP번호:port번호/context명/자원

예> http://localhost:8090/xxx/world.jsp

4) 동적 컴포넌트인 JSP 요청 (디렉터리 O)

http://서버IP번호:port번호/context명/디렉터리/자원

예> http://localhost:8090/xxx/jsp/happy.jsp

cf) html 동작 정리

	1- 요청 : http://localhost:8090/xxx/hello.html
브라우저 	------------------------->   tomcat 서버 (8090)
                                      HelloTest (웹어플리케이션) <== 컨텍스트명:/xxx
					        			WEB-INF
										hello.html

										2- hello.html 찾기
						   				없으면 404 에러 발생
						   			있으면 찾은 hello.html 다운
						   		html은 서버에서 실행되지 않음. 그래서 정적(static)임
            <------------------------
	   		 3- 응답 : hello.html 다운
4- 다운 받고
 html 랜더링

cf) JSP 동작 정리 (외우기)

	1- 요청 : http://localhost:8090/xxx/world.jsp
브라우저    ------------------------->   tomcat 서버 (8090)
                                       HelloTest (웹 어플리케이션) <== 논리적인 이름 컨텍스트명:/xxx
					        			WEB-INF
										world.jsp
                                        
                                        2- world.jsp 찾기
                                        없으면 404 에러, 있으면 jsp를 변환한다
                                        (world_jsp.java 생성) -> 톰캣 역할
                                        
                                        3- world_jsp.java 컴파일 
                                        world_jsp.class 생성
                                        
                                        4- world_jsp.class 실행
                                        (실행되기 때문에 동적 컴포넌트)
                                        -> 실행 결과는 정적 파일인 html로 나온다
           <-----------------------    
            5- 응답 : html 다운로드

6- 다운받고 
html 랜더링

cf) JSP 동작 3단계
1- 변환단계
world.jsp ---> world_jsp.java
2- 컴파일 단계
world_jsp.java ---> world_jsp.class
3- 실행단계
world_jsp.class ---> html

7. 서블릿 (Servlet) 작성

1) 저장 위치

2) 문법

import javax.servlet.http.HttpServlet;

(1) extends HttpServlet

(2) 서비스 메서드 재정의

  • 기본이 get 방식인 doGet()을 재정의하자

(3) 서비스 메서드인 doGet() 안에서 html 작성해서 응답 처리

(4) 서블릿 맵핑 ★

: 서블릿을 요청하는 url을 별칭을 설정하는 방법

  • web.xml 이용 (★ Spring에서 사용하는 방식)
  • 어노테이션 이용 (@WebServlet("/별칭"))

cf) 서블릿 맵핑 OLD 방식

0개의 댓글