[Network/Http]02. Web, Tomcat
- Web Browser
HTTP 프로토콜로 요청하는 Client용 Application.
Server에서 Response받은 Html이란 자원을 Parsing하여 UI로 Display하는 Applicaition
- Web Server
HTTP 프로토콜로 요청받은 Server용 Application.
Client로부터 요청받은 Resource(Text, Movie, Photo 등)를 관리하여
Client에게 전송하는 Application.
=>Web이 부흥하는 이유 : Web Server, Web Browser가 구비되어 있으므로 따로
Application을 개발할 필요가 없다.(비용하락)
Server에서 관리할 Resource(HTML)의 개발 생산성을 높힌다.
* Servlet
Web을 지원하는 Java Bean.
IO Package를 이용하여 Client Browser가 인식하도록
HTML로 변경해주는 것을 표준화 하였다.
Servlet이란 Bean을 지원하는 Driver는 Tomcat_Home/lib/Servlet.jar에 있으며
ClassPath로 설정해둔다.
* JSP
Servlet을 확장한 Java Bean.
* Servlet Container
Servlet과 그것을 실행시키는 App을 합한것.
* WAS(Web Application Server)
Web Server + Servlet JSP Container가 합한것.
* Tomcat
다른 WAS의 경우 JRE와 병합하여 작동하나 Tomcat은 JRE 연결하여 작동한다.
때문에 가벼운 특징이 있다.
=> Tomcat을 설치하는 이유는 Servlet, JSP의 기술을 실행하는 공개 소스로서
각 Tomcat버전마다 각각의 Servlet과 JSP의 버전에 사용이 가능하기 때문.
* 다형성
Tomcat Download에 따르면 버전을 선택하는 테이블이 있다.
현재 Servlet과 JSP의 버전중 현재 많이 사용되는 버전은 각 2.5와 2.1있고
앞으로 많이 쓰일 버전은 3.0과 2.2가 있다. 이에 상응하는 Tomcat은
7.0버전대가 있다.
Servlet과 JSP의 Spec을 알면
그에 따른 모든 Server Tool에 대하여 다양한 사용이 가능하다.
* 포트 충돌
Oracle과 Tomcat을 같이 사용하다보면 서로간에 포트에서 충돌이 날 경우가 있다.
Tomcat의 포트 변경은 나중에 찾아보도록 하고
Oracle서버의 포트를 변경하기 위해선 아래의 절차에 따르도록 한다.
Window 환경.
cmd 실행 -> sqlplus 입력 -> system계정 접속(아이디 : system, 비밀번호 : system)
-> EXEC DBMS_XDB.SETHTTPPORT(5000);
이로서 Oracle 서버의 포트는 5000으로 변경이 되었다.
이를 확인하기 위해 http://localhost:5000/apex에 접속이 된다면 적용이 된 것이다.
* Tomcat 설치
설치 마법사나 운영체제에 무관하게 그리고 터미널 사용법에 미숙해도
설치가 가능하다.(개인적으로 OS X 사용중)
Tomcat Download에 접속해서(7.0 버전을 사용하기로 했다.)
Binary Distributions -> Core에 zip을 다운받고 원하는 경로에 압축을 해제한다.
(개인적으로 /Users/yangseung-gil/Documents 에 지정함.
지금부터 /Users/yangseung-gil/Documents/apache-tomcat-7.0.67를
[Tomcat_Home]이라 부르겠다.)
그렇게 되면 설치는 끝난다.
- Web Application의 구조
(Web Application을 다른 명칭으로
Servlet Directory, Web Application, Servlet Context라 부른다.
지금부터 Web Application을 WA라 부르겠다.)
* Root/ ~.jsp, ~.html : WA에서 Client Browser로 전송할 Reource.
* /WEB-INF/web.xml : Web Application의 환경 파일(Deployment Descriptor).
Servlet과 WA을 구성하는 다른 Component를 서술한다.
Package로 분류된 Java File들을 등록하여
URL 경로 이동에 원활하게 해주는 기능이 있다.
[Tomcat_Home]/conf에 있는 web.xml에서
Overriding하고 있다.
이 web.xml은 Tomcat의 환경파일이며
독립적 구조를 가지고있다.
* /WEB-INF/classes : WA에서 사용하는 모든 Java File(.java, .class ,관련 자원)이
들어있다.
Package로 관리하고 있다.
표준화된 ClassPath의 Root이다.
* /WEB-INF/lib/ : JDBC와 같은 JavaBean(.jar)을 모아두는 Library.
JavaBean에 독립적인 개발을 위해 JavaBean을 보관한다.
=> 이 모든 파일들을 한번에 압축하여 .war로 압축된다.
* 아무런 Tool없이 Web Application 생성하는 과정
Root/WEB-INF/classes 까지의 Directory생성
WEB-INF Directoy에 WA 환경 파일 생성과 기본 설정.
web.xml의 기본 구성요소는 아래와 같다.
1 2 3 4 5 6 7 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0"> <!-- ........ --> </web-app> | cs |
뜻은 차후 작성할 것이다.
Tomcat 환경파일에 등록
eclipse의 plug-in을 통해 생성된 server 프로젝트에서
server.xml을 열고, 최하단에 작성한다.
1 | <Context path="/edu" docBase="c:/edu" debug="0" reloadable="true" /> | cs |
각 속성들의 의미를 파악해본다.
Context : 가상의 Host에서 작동하는 하나의 WA를 말한다.
각각 작성된 Context에 가지는 경로나 정보등을 설정한다.
docBase : 해당 WA에 대한 Document Base, Context root 혹은 파일 경로명을 말한다.
절대경로나 Context가 정의된 상대경로명을 지정할 수도 있다.
path : Context path 혹은 해당 WA의 경로를 말한다.
Client가 요청하는 URI의 시작 부분이 path에 지정된 경로와 같으면
해당 WA의 요청이 처리된다.
한 Host에서 path는 각자마다 유일해야된다.
null string(""을 말함)을 입력할 경우 이 Context는 Host에 대한
default WA으로 정의된 것이다.
default WA는 다른 Context들과 무관한 모든 요청을 처리할 것이다.
reloadable : WA에 있는 Byte code(.class)의 변경을 감지하여 WA에 변경사항을
반영할지 설정하는 역할을 한다. 개발중에는 유용하나 실제 운영중인
WA에 대해 true로 설정해두면 개발중에 큰 피해가 올 수 있으며
runtime overhead가 발생하므로 false로 해두는 것이 좋다.
debug : 해당 WA에 대하여 debuging Log의 출력 정도를 말한다.
높을수록 자세히 나온다.
Root Directoy에 jsp, html 복사.
shut-down후 다시 start-up하여(서버를 재실행한다는 뜻)
http://IP:Port/edu/~.jsp, http://IP:Port/edu/~.html확인
Web Application 환경 파일에 servlet등록(아래 내용 의미 파악)
(Servlet Element에는 Servlet 이름과 해당 Class를 등록하고
이를 Mapping Element에서 URL에 보낼 패턴을 설정한다.)
1 2 3 4 5 6 7 8 9 | <servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/FirstServlet</url-pattern> </servlet-mapping> | cs |
해석 : FirstServlet이란 byte code를 FirstServlet이란 이름으로 명명하여
FirstServlet라는 url경로를 지정한다.
* http://IP:Port/edu/에 index 구조 설정
Tomcat 환경 파일에 아래 내용을 true로 변경
1 2 3 4 | <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> | cs |
'잔잔바리 > Http' 카테고리의 다른 글
[Network/Http]03. Servlet, HTTP Protocol (0) | 2016.07.04 |
---|---|
[Network/Http]01. CS관계와 자원위치. (0) | 2016.06.22 |