서버(Server)
네트워크 통신 개요
👉🏻 Server-client Model: 서버는 특정한 서비스를 제공하는 컴퓨터, 클라이언트는 서비스를 이용하는 사용자를 말함
웹 서비스를 제공받고 싶으면 웹 서버
이메일을 보내고 싶으면 메일 서버
파일 전송, 업로드, 다운로드 관련 일을 하고 싶으면 FTP(File Transfer Protocol) 서버
...
👉🏻 내가 원하는 기능에 대한 서버에 요청해야 함
웹 통신 개요
👉🏻 웹 서버는 웹 관련이기는 하지만 정적 데이터만 전송 가능하므로 웹 서버만으로는 우리가 원하는 페이지를 만들 수 없음
ex) 네이버 홈페이지 로그인 시 유저마다 이름, 메일 수, 이메일 주소 등이 모두 다름 => 동적 데이터
Web Server
사용자에게 HTML 페이지나 jpg, png 같은 이미지를 HTTP 프로토콜을 통해 정적인 요소들을 화면에 보여 주는 역할
ex: Apache, Windows IIS, NGINS 등
Web Application Server(WAS)
사용자가 요청한 서비스 결과를 가공해서 동적인 페이지를 사용자에게 보여 주는 역할
ex: tomcat(우리가 쓸 것: 아파치 톰캣), wildfly, jeus 등
👉🏻 아파치 톰캣: 정적 요소는 아파치, 동적 요소는 톰캣이 2way로 처리함
구분 | 장점 | 단점 |
Web Server | - 빠른 속도(요청에 대한 결과 페이지만 전송) - 구현 쉬움(HTML 같은 단순 문서만으로 구성) |
- 한정적 서비스(만들어진 정보만 보여 줌) - 추가, 수정, 삭제 어려움(변경 시 직접 수정) |
WAS | - 서비스 다양성(여러 데이터 활용) - 추가, 수정, 삭제가 쉬움(변경 시 자동 변경) |
- 느린 속도(데이터 처리 후 결과 전송) - 구현 어려움(서비스 소스를 직접 작성) |
Apache tomcat 설치
👉🏻 Web Server와 WAS의 기능을 모두 가지고 있음
1. 공식 홈페이지 접속: https://tomcat.apache.org/
2. Tomcat 8(8.5.82) - Core - zip 버전 다운로드
3. 압축 해제 후 경로 옮기기 (C드라이브 - dev 폴더)
4. C드라이브에 Web-worckspace 폴더 생성
5. workspace 폴더 지정해서 eclipse 열기
6. eclipse 기본 설정
6-1) Java EE
이제는 우측 상단 커피콩 모양 Java EE(웹사이트 제작)를 이용해 줘야 함
6-2) 탭 설정
이클립스의 기본 탭들을 필요한 것들로만 채워 줌
Servers: 아파치 톰캣 파일을 구동시켜 주는 탭
Project Explorer, Console, Problems, Nevigator(Project Explorer와 같지만 파일 구조 형태로 보여 줌)
=> 이 설정이 workspace .matadata 폴더에 들어가 있음
6-3) 인코딩 설정(UTF-8) 7가지
(JDBC 설정과 동일) Preferences - Gerenal - workspace - Text file encoding - Other : UTF-8
(JDBC 설정과 동일) Preferences - Gerenal - Editors - Text Editors - Spelling - Other : UTF-8
Preferences - Web - Css Files - Encoding : ISO 10646/Unicode(UTF-8)
Preferences - Web - HTML Files - Encoding : ISO 10646/Unicode(UTF-8)
Preferences - Web - JSP Files - Encoding : ISO 10646/Unicode(UTF-8)
Preferences - JSON - JSON Files - Encoding : ISO 10646/Unicode(UTF-8)
Preferences - XML - XML Files - Encoding : ISO 10646/Unicode(UTF-8)
6-4) 서버를 돌릴 수 있는 세팅 추가
- 서버 실행 환경 잡기(구동하고자 하는 서버 환경 제공)Preferences - Server - Runtime Environments - Add - Apache Tomcat v8.5 - Next - 이름, 경로 지정 후 Finish - Apply and Close(Name은 마음대로 바꿔도 상관없음, 경로는 아파치 톰캣 폴더 옮겨 준 apache-tomcat-8.5.82 폴더 선택)
👉🏻 서버 환경을 여러 개 추가해 놔도 상관은 없음~!
- 서버 추가Server 탭에서 New - Server - Tomcat v8.5 Server - Server's host name 절대 수정 금지! - Next - Finish
Navigator에도 생겼는데 서버의 환경설정이 담겨 있음
즉, 건드리지 마시오!
*서버 돌리다가 서버에 문제가 생긴 것 같으면 그냥 서버 지우고 새로 Add 하세요
- 기타 설정 잡기
- 등록한 서버 더블 클릭 하여 Overview 접속 - Ports - HTTP/1.1 Port Number이 8080 👉🏻 8888로 변경 (8080은 이미 오라클이 선점하고 있는 상태, 포트 번호 동일하면 오류남)
- Overview 접속 - Server Options - Serve module without publishing 체크 박스 설정 (.jar 파일들 다 가지고 있을 거냐라는 뜻)
- 저장!
동적 웹프로젝트 만들기
추가하고 프로젝트 이름 설정한 뒤 반드시 Next 버튼!
(바로 Finish 하면 큰일남)
*추후 배포 시에는 다음 페이지의 content directory(최상위 폴더)를 배포하므로 .class 파일을 이 경로에 넣어 줘야 함!*
java 코드는 src 폴더에 작성할 거고,
컴파일된 .class 파일은 Defalut output folder에 지정된 경로로 넣어 줄 거야~
context root: 프로젝트 1개 == 웹 사이트 1개 == 내가 제작한 웹사이트를 대변할 메인 이름
context directory(매우 중요): 내 웹사이트 구동에 필요한 모든 파일을 모두 담아 둔 최상위 폴더
web.xml: 환경설정 해 주는 파일
*ㅇㅋ 만들게! 체크박스 설정 후 Finish*
web.xml 파일
👉🏻 배포 서술자(DD, Deployment Descriptor) 라고 해서 해당 웹 애플리케이션의 기본적인 설정을 위해 작성하는 파일
👉🏻 해당 웹 애플리케이션을 구동하는 서버가 start(구동) 시 제일 먼저 읽혀지는 파일이기 때문에 설정값을 지정하는 파일이 됨
👉🏻 개발자가 web.xml 파일을 수정하지 않고도 개발 및 운영이 가능하나
프로젝트의 규모가 커지고 다양한 Filter, Servlet 등을 사용하게 되면 직접 수정해야 하는 경우가 생길 수도 있음
<?xml version="1.0" encoding="UTF-8"?> <!-- 안녕 나는 xml 파일 형식이야~! -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<!-- xml 문법에 맞는지 유효성 검사해 주는 태그 -->
<display-name>1_Servlet</display-name> <!-- 내 프로젝트 이름 -->
<welcome-file-list> <!-- 니가 메인 페이지 띄웠을 때, 메인 페이지 이름은 적어도 얘네들 중 하나로 설정해 줘야 돼! -->
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
welcome-file
👉🏻 처음에 url로 해당 이 웹 애플리케이션 루트(== 메인 == Context Root)로 요청 시 제일 먼저 보여지게 되는 메인 페이지를 지정해 놓은 것
✔️ http://localhost:8888/1_Servlet
👉🏻 각자 본인 컴퓨터에 구축해 놓은 서버의 IP 주소를 요청: localhost == 127.0.0.1
👉🏻 서버의 포트 번호 : 설정해 놓은 8888
👉🏻 서버 내의 구동 중인 Context Root: 1_Servlet
(한 서버에 여러 개의 프로젝트가 올라갈 수 있음 - 프로젝트 구분 용도)
단, 해당 파일은 WebContent / 폴더 안에 바로 위치해 있어야만 함!
HTML File 생성
👉🏻 WebContent에 HTML File 생성
정리
👉🏻 1) 새로 워크스페이스 만들어서 이클립스로 열기
👉🏻 2) 워크스페이스 셋팅하기 (워크스페이스 : 작업환경)
2_1) 웹 애플리케이션을 하기 위해 java EE 환경으로 설정
2_2) 보여질 UI 탭들 셋팅하기 [Window] - [Show View]
(탭 : Project Explorer, Navigator, Console, Problems, Servers)
2_3) 인코딩 설정 및 서버 Runtime Environments 셋팅 [Window] - [Preferences]
2_3_1) 인코딩 설정 : 영어, 숫자, 한글 등 모든 문자셋을 사용할 수 있도록 UTF-8 로 셋팅
(General - Workspace)
(General - Editors - Text Editors - Spelling)
(Web - CSS Files, HTML Files, JSP Files)
(XML - XML Files)
(JSON - JSON Files)
2_3_2) 서버 Runtime 잡기 : 이클립스에서 서버를 실행할 수 있도록 연동하는 과정
(Server - Runtime Environments)
- Add 클릭 - 설치한 아파치 톰캣과 동일한 버전 선택 - Next
- Name 수정 가능 (안하면 기본값) - Browse 클릭 - 설치한 아파치 톰캣 폴더 선택 - Finish
👉🏻 3) 서버 생성하기
3_1) [New] - [Server]
3_2) 창에 기본적으로 2_3_2 번 과정에서 셋팅해놓은 Runtime 이 잡혀있을 것
(Server name 변경 가능)
3_3) Finish
3_4) 생성된 서버 수정하기 (만들어진 서버 더블 클릭)
3_4_1) 포트번호 재설정 (현재 기본값으로 잡혀진 8080 포트와 오라클 기본 포트가 동일하므로 충돌 발생)
8080 을 8888 로 바꿔준다
3_4_2) 왼쪽 하단 Server Options 에 Server modules without publishing 체크
=> 다음 단계에서 지정할 output folder 에 제대로 컴파일 된 파일들이 가게끔! 무조건 체크할것!
👉🏻 4) Dynamic Web Project 만들기 (동적인 웹 애플리케이션)
4_1) 프로젝트명 신중하게 작성할 것 - Next
4_2) default output folder 경로 재설정 : WebContent\WEB-INF\classes - Next
=> output folder 로 지정된 classes 폴더에는 컴파일된 클래스 파일들이 들어가는 폴더이다.
실제로 프로젝트 배포 시 WebContent 폴더가 배포된다. (즉, 이 안에 컴파일된 클래스 파일들이 있어야 된다는 것)
기본 경로 (build\classes) 로 지정해 놓으면 해당 그 폴더가 WebContent 안에 만들어지지 않는다. 주의!
4_3) Context root : 이 애플리케이션만의 고유한 이름으로 지어줄 것 (기본값으로 프로젝트명 / 보통은 재정의해서 지음)
=> 하나의 서버로 여러개의 애플리케이션을 구동시킬 수 있음.
고유한 이름을 따라서 해당 애플리케이션에 접근하는 경로로 사용 가능하고, 각 애플리케이션을 구분지을 수 있다.
Content directory : 실제로 배포되는 폴더 (즉, 서버에 올라가는 폴더) 의 최상위 폴더명을 지정하는 것
=> default output folder 의 WebContent 폴더로 지정할것!
Generate web.xml deployment descriptor 무조건 체크할것 (기본적으로 체크 안되어있음)
=> web.xml 문서에 기본적인 해당 애플리케이션에 대한 전체 설정 정보를 가지고 있는 파일 (서버 실행과 동시에 메인페이지를 지정해줌)
굳이 파일을 수정할 일이 없다면 안만들어도 되지만 (내부적으로 server 가 가지고 있는 web.xml 파일이 존재하긴 한다.)
그래도 혹시나 수정을 한다거나 작업할 일이 있을 경우를 대비하여 무조건 생성하자!
4_4) Finish
👉🏻 5) 새로이 만들어진 Project 확인해보기
5_1) [프로젝트] - [WebContent] - [WEB-INF] - classes 폴더 잘 만들어졌는지 확인하기
5_2) [프로젝트] - [WebContent] - [WEB-INF] - web.xml 문서 잘 만들어졌는지 확인하기
5_3) index.html 파일 만들기
👉🏻 6) 생성해놓은 서버에 애플리케이션 올리기
=> 서버 오른쪽 버튼 - Add and Remove - 올리고자 하는 애플리케이션 선택 후 오른쪽으로 옮기고 - Finish
👉🏻 7) 서버 Start 후 웹 애플리케이션 요청해서 index 잘 열리는지 확인해보기