天天看點

WEB開發初階——Tomcat

Tomcat是什麼?

Tomcat是由Apache軟體基金會下屬的Jakarta項目開發的一個Servlet容器,按照Sun Microsystems提供的技術規範,實作了對Servlet和JavaServer Page(JSP)的支援,并提供了作為Web伺服器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat閥等。由于Tomcat本身也内含了一個HTTP伺服器,它也可以被視作一個單獨的Web伺服器。但是,不能将Tomcat和Apache Web伺服器混淆,Apache Web Server[Apache]是一個用C語言實作的HTTP web server;這兩個HTTP web server不是捆綁在一起的。Apache Tomcat包含了一個配置管理工具,也可以通過編輯XML格式的配置檔案來進行配置。

Apache Tomcat差別

Apache是一個web伺服器環境程式,可以作為web伺服器使用。不過隻支援靜态網頁,如(asp,php,cgi,jsp)等動态網頁的就顯得無能為力。

如果想讓伺服器也能處理動态頁面,那麼就需要Tomcat。Tomcat能對JSP、Servlet進行解析

WEB伺服器(Tomcat)會幹哪些事情 (簡單實作)

public class Initializer {

    public static void main(String[] args) throws IOException {

        while (true) {

            try {

                Socket socket = Listener.listen(Config.port);                      1.監聽端口

                String context = Reader.read(socket);                                        2.讀取請求

                Request request = ContextParser.parse(context);             3.解析協定

                Action action = Dispatcher.dispatch(request);                    4.分發請求

                Response response = action.execute(request);                 5.處理請求

                Writer.write(socket, response);                                           6.傳回結果

                Closer.close(socket);

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

}

存在的問題:

1. 配置的加載  使用xml解決

2. web工程與web伺服器分離  /不用再添加新的需求後,編譯工程

   靜态頁面  Tomcat下的defaultAction類處理

   動态請求  target下面 編譯好的.class檔案(實作Action接口 做成jar包)

                   但是,這樣之後伺服器不知道有哪些action,是以通過xml來讓伺服器知道。讀取url 跟 Action對應關系,放入到Map裡面

3.Servlet Dispatch  Servlet的url 比對規則

url_pattern 比對順序
1.全路徑映射 /aaa/bbb.do 1. 精确路徑比對
2.路徑映射   /aaa/* /* 2. 最長路徑比對
3.擴充映射   *。 3. 擴充比對
4.預設映射   / 4. defaultServlet 處理靜态頁面的類

Tomcat的目錄結構

──project name

│    ├──conf                 //存放Tomcat伺服器的各種全局配置檔案

│        ├──server.xml       //Tomcat主要配置檔案 Tomcat元件的初始配置  

│        ├──web.xml          //在Tomcat中配置不同的關系環境

│    ├──logs                 //Tomcat執行時的日志檔案

│        ├──catalina.out

│    ├──webapps              //Tomcat的主要Web釋出目錄,預設情況下把Web應用放于此目錄

│        ├──ROOT

│          ├──WEB-INF        //web應用 info

│            ├──web.xml      //存放Web應用的釋出描述檔案 web.xml

│            ├──classes      //存放各種class檔案,Servlet類檔案也放于此目錄下

│            ├──lib          //存放所需的所有Jar檔案

Web項目 目錄結構

 |──pom.xml

  ├──src

  │  └──main                //SRC MAIN maven約定的項目結構

  │    ├──java               //maven package指令 将工程打包成war包,webapp原樣拷貝 java檔案編譯後放到classes檔案夾下, lib 調用的jar包

  │    ├──resources         

  │    └──webapp            //工程的釋出檔案夾

  │      └──WEB-INF

  │        └──web.xml

Apache Tomcat差別參考文章 http://developer.51cto.com/art/201007/210894.htm