Java Web開發(fā)基礎(chǔ)

Java Web開發(fā)基礎(chǔ)

Java是一門面向?qū)ο缶幊陶Z言,入門簡單,廣泛應(yīng)用于企業(yè)級程序開發(fā)。本博客專注于Java web后端開發(fā),此為開篇。

平臺規(guī)范

1. Java平臺簡介

* Java 是一門強(qiáng)類型語言
* JavaSE 包含java.lang和java.io中的類,它是構(gòu)建Java應(yīng)用的基礎(chǔ)
* JVM 又稱Java虛擬機(jī),是Java源碼編譯后的運(yùn)行環(huán)境,JVM還負(fù)責(zé)管理內(nèi)存,從而簡化了Java應(yīng)用程序的開發(fā)
* JDK Java開發(fā)工具包 包含了編譯器、文檔生成器、調(diào)試相關(guān)的類等
* JRE Java運(yùn)行時(shí)環(huán)境,包含了JVM但是不包括JDK中的開發(fā)工具,不過JDK中包含了一個(gè)JRE

2. J2EE規(guī)范(現(xiàn)稱JavaEE規(guī)范)

Sun公司于1999/12/12發(fā)布了J2EE,版本號為1.2。最初版本規(guī)范包括:
* Servlets 2.2
* JDBC Extension API 2.0
* Java Naming and Directory Interface(JNDI) 1.0
* JavaServer Pages(JSP) 1.2
* Enterprise JavaBeans(EJB) 1.1
* Java Message Service(JMS) 1.0
* Java Transaction API(JTA) 1.0
* JavaMail API 1.1
* JavaBeans Activation Framework(JAF) 1.0

3. 最新平臺特性

1. JavaSE7
* 增加了對動態(tài)語言的和64位壓縮指針的支持,改善了64位JVM的性能
* 泛型實(shí)例化的簡寫
Map <String, Object> map = new HashMap<String, Object>();   //JavaSE7之前的寫法
Map <String, Object> map = new HashMap<>();     //JavaEE7新增特性
* 新增try-with-resource語法

2.JavaSE8
* lambda表達(dá)式
* 新的時(shí)間API

3.JavaEE7
* Java API for WebSockets1.0
* Java API for JSON Processing1.0
* 其他略

Web應(yīng)用程序結(jié)構(gòu)

1. Servlet 過濾器 監(jiān)聽器 JSP

基礎(chǔ)知識 (略)

2. 目錄結(jié)構(gòu)

WebApp Root
    -- META-INF
        MANIFEST.MF
        Container Resources
    -- WEB-INF
        -- classes
            -- META-INF
                Application Resources
            Java.class Files and Resources
        -- i18n
            Internationalization Files
        -- lib
            Bundled JAR Files
        -- tags
            JSP Tag Files
        -- tld
            JSP Tag Library Descriptors
        Other Web-Accessible Files

3. 部署描述符和類加載器架構(gòu)

  • 部署描述符

用于描述Web應(yīng)用程序的元數(shù)據(jù),為JavaEE WebApp 在服務(wù)器的部署和運(yùn)行提供指令。傳統(tǒng)上,所有元數(shù)據(jù)都來自于部署描述符文件/WEB-INF/web.xml,通常該文件包含Servlet、監(jiān)聽器和過濾器的定義,以及HTTP會話、JSP和應(yīng)用程序的配置選項(xiàng)。Java EE 6中的Servlet 3.0添加了使用注解和Java Configuration API配置Web應(yīng)用的能力,默認(rèn)情況下Servlet3.0及更高版本的環(huán)境將掃描Web應(yīng)用程序和Web片段中的Java EE應(yīng)用程序注解,用于配置WebApp。

  • 類加載器架構(gòu)(雙親優(yōu)先類加載委托模式 VS 子女優(yōu)先類加載委托模式)

典型的應(yīng)用程序中,JavaSE平臺中的java.* 類將由特定的根類加載器加載,并且不能被覆蓋,這種方式很安全,避免了惡意代碼的執(zhí)行。之后是擴(kuò)展類加載器,加載JRE安裝目錄中的擴(kuò)展JAR。最后應(yīng)用程序ClassLoader將加載應(yīng)用程序中的所有其他類。上述方式稱為雙親優(yōu)先類加載委托模式,該模式并不完全適用于JavaEE Web環(huán)境中的應(yīng)用。

運(yùn)行Web程序的服務(wù)器通常相當(dāng)復(fù)雜,許多供應(yīng)商都有自己的實(shí)現(xiàn)。服務(wù)器可能與個(gè)人應(yīng)用程序使用了相同的第三方庫,但他們的版本可能相互沖突。另外,不同應(yīng)用程序之間也可能使用同一個(gè)第三方庫的沖突版本。為了解決這些問題,就需要使用子女優(yōu)先類加載委托模式。

選擇Web容器

1. Apache Tomcat

Apache Tomcat是目前最常見和最流行的Web容器,常用于本地的開發(fā)調(diào)試,它也是Java EE Servlet規(guī)范最初的參考實(shí)現(xiàn)。但是作為一個(gè)輕量級的web容器,缺少了完整JavaEE標(biāo)準(zhǔn)組件的實(shí)現(xiàn)。例如,Java Persistence API、Bean Validation和Java Message Service等。
下表列出了常見Tomcat版本和它實(shí)現(xiàn)的規(guī)范

Tomcat版本 JavaEE版本 Servlet JSP EL WebSocket 所需最小JavaSE版本
5.5.x 1.4 2.4 2.0 - - 1.4
6.0.x 5 2.5 2.1 2.1 - 5.0
7.0.x 6 3.0 2.2 2.2 - 6
8.0.x 7 3.1 2.3 2.3 1.0 7

2. GlassFish

GlassFish服務(wù)器是開源的,且完整實(shí)現(xiàn)了Java EE標(biāo)準(zhǔn)的應(yīng)用服務(wù)器。并且目前是Java EE規(guī)范的參考實(shí)現(xiàn)。

3.JBoss

另一款非常流行的JavaEE服務(wù)器,完整實(shí)現(xiàn)了Java EE標(biāo)準(zhǔn),由RedHat研發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • 轉(zhuǎn)自陳明乾的博客,可能有一定更新。 轉(zhuǎn)原文聲明:原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時(shí)請務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、...
    C86guli閱讀 4,865評論 6 72
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • 今天招了一個(gè)全托的學(xué)生,收了600塊錢。另外還有兩個(gè)報(bào)暑期美術(shù)班的。全托的小男孩是縣里的,父母在這干活。孩子長的黑...
    傘下姑娘閱讀 210評論 0 0
  • 對于iOS中淺拷貝和淺拷貝,大家只是模糊的知道前者是復(fù)制了一份對象的地址,也就是同一個(gè)對象增加了一個(gè)指向它的指針,...
    DDingDreams閱讀 424評論 0 2

友情鏈接更多精彩內(nèi)容