Network/Http

[Network/Http]02. Web, Tomcat

양승길 2016. 6. 22. 16:49

[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



'Network > Http' 카테고리의 다른 글

[Network/Http]03. Servlet, HTTP Protocol  (0) 2016.07.04
[Network/Http]01. CS관계와 자원위치.  (0) 2016.06.22