Java Web 從入門到"改行"(1)--基礎(chǔ)準(zhǔn)備

1. 背景

首先铐望,說明一下捌刮,這是一篇關(guān)于 Java Web 基礎(chǔ)入門的文章,上學(xué)期開始學(xué)習(xí) Java Web 叹卷,看了不少有關(guān) 「XXX從入門到精通」的書籍撼港,近期,要幫著導(dǎo)師帶幾名本科生骤竹,所以決定總結(jié)一下以前學(xué)的 Java Web 的基礎(chǔ)知識(shí)帝牡,畢竟不能在本科生面前丟面子嘛。

2.Web開發(fā)相關(guān)知識(shí)

2.1 靜態(tài)/動(dòng)態(tài) Web 資源

Web 即表示網(wǎng)頁的意思蒙揣,他用于表示Internet主機(jī)上供外界訪問的資源靶溜,該資源可以被分為兩類:

1.靜態(tài)Web資源:是指是實(shí)際存在的,無需經(jīng)過服務(wù)器的編譯懒震,直接加載到客戶瀏覽器上顯示出來罩息,供人們?yōu)g覽的數(shù)據(jù)始終不變。例如个扰, *.html頁面瓷炮。

靜態(tài)Web請(qǐng)求過程

執(zhí)行流程:

  • 瀏覽器中輸入所要請(qǐng)求的資源的 URL ,發(fā)送 HTTP 請(qǐng)求包锨匆,經(jīng)過 DNS 域名解析返回IP地址崭别,然后進(jìn)過層層 Router 等網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā),到達(dá)服務(wù)器恐锣,服務(wù)對(duì) HTTP 包頭進(jìn)行解析茅主,例如,發(fā)現(xiàn) * .html 的靜態(tài)文件的請(qǐng)求土榴,然后讀取服務(wù)器相關(guān)目錄下的資源文件诀姚,返回 HTTP 響應(yīng)包,瀏覽器接受到 * .html 文件并解析玷禽,生成 Web 視圖赫段。

特點(diǎn):

  • Web 頁面中的內(nèi)容是不能動(dòng)態(tài)更新的,所有用戶任何時(shí)刻看到的頁面內(nèi)容都是一致的矢赁。
  • 靜態(tài) Web 頁面無法連接數(shù)據(jù)庫糯笙,無法和用戶實(shí)現(xiàn)實(shí)時(shí)交互。
  • 靜態(tài) Web 頁面也可以通過添加 JavaScript 實(shí)現(xiàn)一些動(dòng)態(tài)的視覺效果撩银,這些都是在客戶端實(shí)現(xiàn)的给涕,在服務(wù)器端并不發(fā)生改變。

2.動(dòng)態(tài)Web資源:與靜態(tài)頁面不同的是,其顯示的內(nèi)容是在訪問該頁面的時(shí)候動(dòng)態(tài)生成的【改變的內(nèi)容主要來自于數(shù)據(jù)庫中數(shù)據(jù)的改變】够庙,并不是指頁面會(huì)動(dòng)恭应。
目前,比較流行的動(dòng)態(tài)網(wǎng)頁制作技術(shù)有:ASP耘眨、PHP昼榛、JSP

動(dòng)態(tài)Web請(qǐng)求.jpg

執(zhí)行流程:

  • 動(dòng)態(tài)WEB中,程序依然使用客戶端和服務(wù)端剔难,客戶端依然使用瀏覽器(IE胆屿、FireFox等),通過網(wǎng)絡(luò)(Network)連接到服務(wù)器上钥飞,使用HTTP協(xié)議發(fā)起請(qǐng)求(Request)莺掠,現(xiàn)在的所有請(qǐng)求都先經(jīng)過一個(gè)WEB Server Plugin(服務(wù)器插件)來處理,此插件用于區(qū)分是請(qǐng)求的是靜態(tài)資源(.htm或者是.htm)還是動(dòng)態(tài)資源读宙。

如果WEB Server Plugin發(fā)現(xiàn)客戶端請(qǐng)求的是靜態(tài)資源(.htm或者是.htm),則將請(qǐng)求直接轉(zhuǎn)交給WEB服務(wù)器楔绞,之后WEB服務(wù)器從文件系統(tǒng)中取出內(nèi)容结闸,發(fā)送回客戶端瀏覽器進(jìn)行解析執(zhí)行。

如果WEB Server Plugin發(fā)現(xiàn)客戶端請(qǐng)求的是動(dòng)態(tài)資源(例如:.jsp酒朵、.asp/.aspx桦锄、.php等),則先將請(qǐng)求轉(zhuǎn)交給WEB Container(WEB容器)蔫耽,在WEB Container中連接數(shù)據(jù)庫结耀,從數(shù)據(jù)庫中取出數(shù)據(jù)等一系列操作后動(dòng)態(tài)拼湊頁面的展示內(nèi)容,拼湊頁面的展示內(nèi)容后匙铡,把所有的展示內(nèi)容交給WEB服務(wù)器图甜,之后通過WEB服務(wù)器將內(nèi)容發(fā)送回客戶端瀏覽器進(jìn)行解析執(zhí)行。

注意:
所謂靜態(tài)頁面鳖眼,是基于訪問頁面時(shí)網(wǎng)頁的內(nèi)容有無變化而言的黑毅,與頁面的視覺效果無關(guān),因?yàn)閯?dòng)態(tài)的視覺效果主要是通過JavaScript钦讳、jquery等技術(shù)實(shí)現(xiàn)的矿瘦。

2.2 Web 服務(wù)器

  • Web服務(wù)器是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,是可以向發(fā)出請(qǐng)求的瀏覽器提供文檔的程序愿卒。當(dāng)Web瀏覽器(客戶端)連到服務(wù)器上并請(qǐng)求文件時(shí)缚去,服務(wù)器將處理該請(qǐng)求并將文件反饋到該瀏覽器上,附帶的信息會(huì)告訴瀏覽器如何查看該文件(即文件類型)琼开。
  • 服務(wù)器是一種被動(dòng)程序:只有當(dāng)Internet上運(yùn)行在其他計(jì)算機(jī)中的瀏覽器發(fā)出請(qǐng)求時(shí)易结,服務(wù)器才會(huì)響應(yīng)。

2.2.1 常見的 Web 服務(wù)器:

  • Tomact
    TomcatTomcat是一個(gè)實(shí)現(xiàn)了JAVA EE標(biāo)準(zhǔn)的最小的WEB服務(wù)器,是Apache 軟件基金會(huì)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目衬衬,由Apache买猖、Sun 和其他一些公司及個(gè)人共同開發(fā)而成。因?yàn)門omcat 技術(shù)先進(jìn)滋尉、性能穩(wěn)定玉控,而且開源免費(fèi),因而深受Java 愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可狮惜,成為目前比較流行的Web 應(yīng)用服務(wù)器高诺。學(xué)習(xí)JavaWeb開發(fā)一般都使用Tomcat服務(wù)器,該服務(wù)器支持全部JSP以及Servlet規(guī)范碾篡。
    Mac 系統(tǒng)下是自帶 Java 環(huán)境虱而,安裝Tomact服務(wù)器后,可以通過終端开泽,進(jìn)入系統(tǒng)中 Tomact 所在的路徑:
iTerm2

如圖所示牡拇,即可在本機(jī)開啟 Tomact 服務(wù)器,打開瀏覽器穆律,輸入 127.0.0.1:8080 惠呼,即可顯示一下頁面:

Tomact7
  • ** IIS **

Microsoft的Web服務(wù)器產(chǎn)品為Internet Information Services (IIS),IIS 是允許在公共Intranet或Internet上發(fā)布信息的Web服務(wù)器峦耘。ⅡS是目前最流行的Web服務(wù)器產(chǎn)品之一剔蹋,很多著名的網(wǎng)站都是建立在ⅡS的平 臺(tái)上。IIS提供了一個(gè)圖形界面的管理工具辅髓,稱為Internet信息服務(wù)管理器泣崩,可用于監(jiān)視配置和控制Internet服務(wù)。

IIS

  IIS是一種Web服務(wù)組件洛口,其中包括Web服務(wù)器矫付、FTP服務(wù)器、NNTP服務(wù)器和SMTP服務(wù)器绍弟,分別用于網(wǎng)頁瀏覽技即、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面樟遣,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域網(wǎng))上發(fā)布信息成了一件很容易的事而叼。它提供ISAPI(Intranet Server API)作為擴(kuò)展Web服務(wù)器功能的編程接口;同時(shí)豹悬,它還提供一個(gè)Internet數(shù)據(jù)庫連接器葵陵,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的查詢和更新。

3 . JSP 簡介

JSP 技術(shù)是由原 SUN 公司提出瞻佛,他基于 Java Servlet 技術(shù)來實(shí)現(xiàn)開發(fā)的動(dòng)態(tài)脱篙、高性能的 Web 應(yīng)用程序娇钱,JSP 的網(wǎng)頁實(shí)質(zhì)就是在 Html 的基礎(chǔ)上按照指定的語法格式添加 Java 代碼片段與 JSP 的特殊標(biāo)記,然后以 .jsp 為后綴保存绊困。 JSP 實(shí)質(zhì)上也是一個(gè)HTML頁面文搂,只不過他包含用于產(chǎn)生動(dòng)態(tài)網(wǎng)頁內(nèi)容的 Java 代碼,這些 Java 代碼可以是 Java Bean秤朗、SQL語句等煤蹭。

3.1 JSP 的執(zhí)行流程:

** JSP執(zhí)行的大體流程:** 首先,客戶端向 Web服務(wù)器發(fā)出請(qǐng)求取视,然后 JSP引擎負(fù)責(zé)將頁面轉(zhuǎn)化為 servlet硝皂,此 Servlet 經(jīng)過虛擬機(jī)的編譯后生成類文件,然后再將類文件加載進(jìn)內(nèi)存中執(zhí)行作谭,最后礁鲁,由服務(wù)器將處理的結(jié)果返回給客戶端鸳君。

JSP 頁面會(huì)被編譯成 Servlet 代碼出革,所以從執(zhí)行效率上來說谓着,肯定沒有 Servle t快,但并不是每次都需要編譯怨酝,當(dāng)?shù)谝淮尉幾g完成之后傀缩,JSP 引擎會(huì)緩存已經(jīng)編譯后的類文件,所以农猬,當(dāng)重復(fù)調(diào)用的時(shí)候,就不需要重復(fù)的編譯了售淡。

下面我從一個(gè) Java Web 項(xiàng)目中找出了一個(gè)簡單 JSP 源代碼斤葱,先熟悉一下JSP 頁面的基本組成:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="net.sf.json.JSONArray"%>
<%@include file="is_login.jsp" %>
<head>

</head>
<body>
    <table width="80%" border="0" cellpadding="4" cellspacing="1"
        bgcolor="#464646" class="newfont03" align="center">
        
        <tr bgcolor="#EEEEEE">
            <td>編號(hào)</td>
            <td>新聞標(biāo)題</td>
            <td>發(fā)布日期</td>
            <td colspan="2">新聞管理</td>
            
            
        </tr>
        <%
        
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        
            if(request.getAttribute("json")!=null){
            JSONArray json = JSONArray.fromObject(request.getAttribute("json"));
            
            for (int i = 0; i < json.size(); i++) {
        %>
        <tr bgcolor="#FFFFFF">
            <td><%=json.getJSONObject(i).getInt("news_id")%></td>
            <td><%=json.getJSONObject(i).getString("news_title")%></td>
            
            <td><%=json.getJSONObject(i).getString("news_date")%></td>
            <td><a href="http://localhost:8080/iframework22/deleteNews.u?id=<%=json.getJSONObject(i).getInt("news_id")%>">刪除新聞</a></td>
            <td><a href="xiugai.jsp?id=<%=json.getJSONObject(i).getInt("news_id")%>&content=<%=json.getJSONObject(i).getString("news_content")%>&title=<%=json.getJSONObject(i).getString("news_title")%>" >更新新聞</a></td>   
            
        </tr>
        <%
            }
            }
            else{
            %>
            <%="出錯(cuò)了" %>
         <%  }
        %> 
    </table>
</body>
</html>

從中我們可以看到,JSP 代碼并不是直接寫在 HTML 中的揖闸,而是寫在 <% %> 中間的揍堕,與普通的 HTML 頁面代碼不同的是 JSP 引入了一些標(biāo)簽,引入了相應(yīng)的類庫汤纸。

Java Web 的入門基礎(chǔ)就寫到這里吧衩茸,下次有空開始寫 JSP 的基礎(chǔ)語法以及簡單的實(shí)例。

感悟:
發(fā)現(xiàn)寫文章好累人啊贮泞,御魔了一晚上才寫了這么點(diǎn)楞慈,每次想說的總是很宏達(dá),可是一下筆就陷入無盡的細(xì)節(jié)中啃擦,自己的寫作表達(dá)能力仍需努力澳依丁!現(xiàn)在是真佩服那些能夠堅(jiān)持寫完一個(gè)系列的博主令蛉。所以聚霜,遇到用心寫的文章,也許文章并不完美,但不要吝嗇你的喜歡蝎宇、評(píng)論奧弟劲,因?yàn)檎悄阆矚g、評(píng)論鞭策他們走向優(yōu)秀姥芥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末兔乞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子撇眯,更是在濱河造成了極大的恐慌报嵌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熊榛,死亡現(xiàn)場離奇詭異锚国,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)玄坦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門血筑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人煎楣,你說我怎么就攤上這事豺总。” “怎么了择懂?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵喻喳,是天一觀的道長。 經(jīng)常有香客問我困曙,道長表伦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任慷丽,我火速辦了婚禮蹦哼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘要糊。我一直安慰自己纲熏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布锄俄。 她就那樣靜靜地躺著局劲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪珊膜。 梳的紋絲不亂的頭發(fā)上容握,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音车柠,去河邊找鬼剔氏。 笑死塑猖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谈跛。 我是一名探鬼主播羊苟,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼感憾!你這毒婦竟也來了蜡励?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤阻桅,失蹤者是張志新(化名)和其女友劉穎凉倚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嫂沉,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稽寒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了趟章。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杏糙。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蚓土,靈堂內(nèi)的尸體忽然破棺而出宏侍,到底是詐尸還是另有隱情,我是刑警寧澤蜀漆,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布谅河,位于F島的核電站,受9級(jí)特大地震影響确丢,放射性物質(zhì)發(fā)生泄漏旧蛾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一蠕嫁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毯盈,春花似錦剃毒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脑奠,卻和暖如春基公,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宋欺。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工轰豆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胰伍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓酸休,卻偏偏與公主長得像骂租,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子斑司,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自陳明乾的博客渗饮,可能有一定更新。 轉(zhuǎn)原文聲明:原創(chuàng)作品宿刮,允許轉(zhuǎn)載互站,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、...
    C86guli閱讀 4,687評(píng)論 6 72
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法僵缺,類相關(guān)的語法胡桃,內(nèi)部類的語法,繼承相關(guān)的語法谤饭,異常的語法标捺,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)揉抵,斷路器亡容,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 1、你會(huì)比別人年輕 玫瑰養(yǎng)生酒具有美容養(yǎng)顏的效果冤今,長喝此酒皮膚變得更嫩闺兢,淡化色素,使皮膚變得更加白皙和光滑戏罢,看上去...
    小岑布依之子閱讀 1,063評(píng)論 0 0
  • 年初讀蕭公權(quán)的自傳《求學(xué)諫往錄》屋谭,深為先生的一句治學(xué)箴言所折服,即“放眼看書”龟糕。蕭先生的所謂“放眼看書”桐磁,自有它特...
    三皮騎士閱讀 338評(píng)論 0 0