[TOC]
1. J2ee
J2EE是Java2平臺企業(yè)版(Java 2 Platform,Enterprise Edition),它的核心是一組技術(shù)規(guī)范與指南,提供基于組件的方式來設(shè)計(jì)、開發(fā)、組裝和部署企業(yè)應(yīng)用。J2EE使用多層分布式的應(yīng)用模型,適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)。
1.1 J2EE的四層模型
J2EE使用多層的分布式應(yīng)用模型,應(yīng)用邏輯按功能劃分為組件,各個應(yīng)用組件根據(jù)他們所在的層分布在不同的機(jī)器上。
J2EE 典型的四層結(jié)構(gòu):

- 運(yùn)行在客戶端機(jī)器上的客戶層組件
- 運(yùn)行在J2EE服務(wù)器上的Web層組件
- 運(yùn)行在J2EE服務(wù)器上的業(yè)務(wù)邏輯層組件
- 運(yùn)行在EIS服務(wù)器上的企業(yè)信息系統(tǒng)(Enterprise information system)層軟件

1.2 J2EE組件
2EE平臺由一整套服務(wù)(Services)、應(yīng)用程序接口(APIs)和協(xié)議構(gòu)成,它對開發(fā)基于Web的多層應(yīng)用提供了功能支持,下面對J2EE中的13種技術(shù)規(guī)范進(jìn)行簡單的描述(限于篇幅,這里只能進(jìn)行簡單的描述):
- Servlet:web服務(wù)器小程序。
- JSP: 服務(wù)器頁面
- JDBC:數(shù)據(jù)庫交互模塊。
- XML:XML交互模塊。
- EJB:企業(yè)級Java Bean
- RMI:遠(yuǎn)程調(diào)用。
- JNDI:目錄服務(wù)
- JMS: 消息服務(wù)。
- JTA:事務(wù)管理。
- JavaMail:發(fā)送/接受Email。
- JAF: 安全框架
- CORBA:CORBA集成。
- JTS:CORBA事務(wù)監(jiān)控。
2. tomcat
Apache Tomcat是由Apache Software Foundation(ASF)開發(fā)的一個開源Java WEB應(yīng)用服務(wù)器。
2.1 Tomcat與其他web模塊的關(guān)系
2.1.1 Tomcat與Java SE
Tomcat是用Java語言編寫的,需要運(yùn)行在Java虛擬機(jī)上,所以一般需要先安裝JDK,以提供運(yùn)行環(huán)境。
2.1.2 Tomcat與Java EE
- J2EE是一組技術(shù)規(guī)范與指南,具體實(shí)現(xiàn)由軟件廠商決定。
- Tomcat實(shí)現(xiàn)了幾個Java EE規(guī)范,包括
Java Servlet、Java Server Pages(JSP),Java Expression Language和Java WebSocket等,這些是都下載Tomcat安裝包默認(rèn)提供的
2.1.3 Tomcat與Servlet/編程開發(fā)
Tomcat實(shí)現(xiàn)的幾個Java EE規(guī)范,其中最重要的是Servlet,因?yàn)閷?shí)現(xiàn)了Servlet規(guī)范,所以Tomcat也是一個Servlet容器,可以運(yùn)行我們自己編寫的Servlet應(yīng)用程序處理動態(tài)請求。
平時用的Struts2、SpringMVC框架就是基于Servlet,所以我們可以在這些框架的基礎(chǔ)上進(jìn)行快速開發(fā),然后部署到Tomcat中運(yùn)行。

2.1.4 Tomcat與WEB/HTTP請求
Tomcat的(HTTP類型)Connector組件實(shí)現(xiàn)了HTTP請求的解析,Tomcat通過Connector組件接收HTTP請求并解析,然后把解析后的信息交給Servlet處理:
- 對于靜態(tài)資源(html/js/jpg等)請求,Tomcat提供默認(rèn)的Servlet來處理并響應(yīng);
- 對于動態(tài)請求,可以映射到自己編寫的Servlet應(yīng)用程序來處理。
2.1.5 Tomcat與Nginx/Apache的應(yīng)用架構(gòu)
Nginx、Apache都是目前主流的Web服務(wù)器,也可以作為反向代理服務(wù)器;它們在處理大量并發(fā)的請求連接、連接會話管理和靜態(tài)內(nèi)容請求等方面相比Tomcat更具優(yōu)勢。
如果是靜態(tài)請求,則轉(zhuǎn)發(fā)到另外的Nginx WEB服務(wù)器上,返回靜態(tài)內(nèi)容;如果是動態(tài)請求,則轉(zhuǎn)發(fā)到后面的Tomcat應(yīng)用服務(wù)器,處理動態(tài)請求的業(yè)務(wù)邏輯。
2.2 tomcat服務(wù)器目錄結(jié)構(gòu)

2.2.1 /bin
存放各種平臺下用于啟動和停止Tomcat的命令文件

2.2.2 /conf
存放Tomcat服務(wù)器的各種配置文件

- server.xml 可以設(shè)置端口號、設(shè)置域名或IP、默認(rèn)加載的項(xiàng)目、請求編碼
- web.xml 可以設(shè)置tomcat支持的文件類型
- context.xml 可以用來配置數(shù)據(jù)源之類的
- tomcat-users.xml 用來配置管理tomcat的用戶與權(quán)限
修改端口號
<!-- 修改 /conf/server.xml -->
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
2.2.3 /lib
存放Tomcat服務(wù)器所需的各種JAR文件
2.2.4 /logs
存放Tomcat的日志文件
2.2.5 /temp
Tomcat運(yùn)行時用于存放臨時文件
2.2.6 /webapps
當(dāng)發(fā)布Web應(yīng)用時,默認(rèn)會將Web應(yīng)用的文件發(fā)布到此目錄下,當(dāng)然,你也可以把應(yīng)用程序放置在磁盤的任意位置,在配置文件中映射好就行。
2.2.7 /work
Tomcat把由JSP生成的servlet放于此目錄下
2.3 Tomcat使用流程
- 在 /webapps 創(chuàng)建項(xiàng)目目錄
- 編寫index.jsp
- 創(chuàng)建WEB-INF目錄(包含classes目錄和lib目錄,web.xml)
- 測試運(yùn)行
3. WEB-INF目錄結(jié)構(gòu)
WEB-INF 是 Java 的WEB應(yīng)用的安全目錄。所謂安全就是客戶端無法訪問,只有服務(wù)器可以訪問的目錄。
| 組織結(jié)構(gòu) | 描述 |
|---|---|
| /WEB-INF | WEB應(yīng)用的安全目錄,用于存放配置文件 |
| /WEB-INF/web.xml | web.xml是“部署描述符文件”,是該Web項(xiàng)目核心配置文件 |
| /WEB-INF/classes | 存放編譯后的classes文件 |
| /WEB-INF/lib | 用于存放web應(yīng)用依賴的jar文件 |
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="<http://xmlns.jcp.org/xml/ns/javaee>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://xmlns.jcp.org/xml/ns/javaee>
<http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd>"
version="4.0"
metadata-complete="true">
<!-- 默認(rèn)首頁-->
<welcome-file-list>
<welcome-file>haha.jsp</welcome-file>
</welcome-file-list>
</web-app>