JavaWeb(1)

1.簡介

JDBC接口:Java代碼和數(shù)據(jù)庫之間交互的規(guī)則
Servlet接口:服務(wù)器軟件和Java代碼之間交互的規(guī)則
http協(xié)議:瀏覽器和服務(wù)器軟件之間交互的規(guī)則

2.Web開發(fā)常用的概念

Web資源:
存在于Web服務(wù)器, 供外界訪問的資源就是Web資源.
例如: 存在于Web服務(wù)器內(nèi)部的: html,js,圖片, 視頻等資源.
分類:
靜態(tài)資源: 指web頁面中供人們?yōu)g覽的數(shù)據(jù)是始終不變的.
例如: 圖片, 視頻, 音頻, html文件, js文件等.
例如:優(yōu)酷上掛的電影采盒,寫的html頁面蜓堕。
動態(tài)資源: 指web頁面中供人們?yōu)g覽的數(shù)據(jù)是由程序產(chǎn)生的, 不同的時間點訪問web頁面看到的內(nèi)容各不相同.
Javaweb領(lǐng)域的動態(tài)資源: 指通過Java代碼生成html, 例如: JSP/Servlet, ASP, PHP等.
例如:12306買票:不同時刻票數(shù)不同注盈。
常用的Web服務(wù)器:
Tomcat:它是一個免費倦炒,開源的web服務(wù)器,支持servlet規(guī)范和jsp規(guī)范喷众,它不支持JavaEE的13種規(guī)范伦忠, 所屬公司為: Apache公司固以。
//tomcat軟件早期屬于sun公司滤蝠,是sun公司的架構(gòu)師詹姆斯·鄧肯·戴維森開發(fā)的豌熄,后來sun公司為了推動Java語言的發(fā)展,無償將Tomcat捐助給Apache公司物咳。
Weblogic: 大型的收費服務(wù)器锣险, 它完美支持JavaEE的所有規(guī)范,所屬公司:Oracle览闰。
Websphere:大型的收費服務(wù)器芯肤,它完美支持JavaEE的所有規(guī)范,所屬公司: IBM压鉴。

3.Servlet簡介

Servlet 概述:服務(wù)器認(rèn)識Java代碼的規(guī)則

步驟:
1.新建一個類實現(xiàn)Servlet接口
2.重寫接口中的所有方法
3.在web.xml中注冊和映射
eg:  <!--設(shè)置Demo1Servlet的信息-->
    <!--設(shè)置具體的要訪問的: Java代碼-->
    <servlet>
        <servlet-name>Demo1Servlet</servlet-name>
        <servlet-class>com.itheima_01.Demo1Servlet</servlet-class>
    </servlet>
    <!--設(shè)置瀏覽器訪問Java代碼的具體: 路徑-->
    <servlet-mapping>
        <servlet-name>Demo1Servlet</servlet-name>
        <url-pattern>/demo1Servlet</url-pattern>
    </servlet-mapping>
注意: 
        request: 請求, 瀏覽器給服務(wù)器傳輸?shù)臄?shù)據(jù).
        response: 響應(yīng), 服務(wù)器給瀏覽器傳輸?shù)臄?shù)據(jù).
4.Servlet的細(xì)節(jié):

4.1 根據(jù)ip和端口號, 找到對應(yīng)的軟件: tomcat.
4.2 tomcat根據(jù)項目名找到對應(yīng)的項目, 進(jìn)而可以找到web.xml文件.
4.3 再根據(jù)web.xml文件中的資源路徑找到對應(yīng)類的全路徑.
4.4 服務(wù)器將其(第三步)找到的 全路徑的類.

5.Servlet生命周期

5.1構(gòu)造Servlet,然后使用init方法將其初始化
5.2處理來自客戶端的對service()方法的所有調(diào)用.
5.3從服務(wù)中取出Servlet,然后使用destroy()方法銷毀它,最后進(jìn)行垃圾回收并終止它.
規(guī)律:
1) 每次訪問Servlet, 都會調(diào)用service()方法.
2) 第一次訪問, 會調(diào)用構(gòu)造和初始化方法, 只會調(diào)用一次.
3) 當(dāng)前Servlet類被銷毀時才會調(diào)用銷毀方法.

6. servlet和httpServlet的關(guān)系

每次我們都需要新建一個類, 然后去實現(xiàn)Servlet接口, 重寫接口中所有的方法, 最后在配置web.xml文件. 這樣做比較麻煩, 我們就想著, 能不能優(yōu)化這個步驟呢?
新建一個 servlet即可(程序會自動讓該類去繼承HttpServlet, 然后自動配置web.xml文件).

關(guān)系:
    Servlet接口:      
        //定義了服務(wù)器和Java代碼交互的規(guī)則
    
    GenericServlet類:    
        //一般的servlet, 只是實現(xiàn)了方法, 注意: 不針對任何協(xié)議.
    
    HTTPServlet類:
        //針對HTTP協(xié)議做的實現(xiàn).
        //HTTP有8種不同的請求方式, 其中g(shù)et和post是最常見的請求方式.

    自定義的Servlet:  
        //例如:Demo1Servlet類
        //只需要重寫: doGet()方法和doPost()方法即可.

    service()方法和 doGet(),doPost()方法的聯(lián)系?
        1. 在service()方法中, 獲取請求的方式.
        2. 判斷:
            如果是get請求方式, 調(diào)用doGet()方法.
            如果是post請求方式, 調(diào)用doPost()方法.
7. 給瀏覽器響應(yīng)中文內(nèi)容
doGet()方法:
    作用: 處理get方式的請求
    
    哪些請求方式屬于get方式?
        1. <form>表單, method="get"
        2. 超鏈接<a>
        3. 通過地址欄直接訪問.

doPost()方法:
    作用: 處理post方式的請求
    
    哪些請求方式屬于post方式?
        表單<form>, method="post"
        
配置服務(wù)器編解碼一致://response.setContentType("text/html;charset=utf-8");
8. URL-Pattern的書寫方式

我們目前寫的<url-pattern>是全路徑方式訪問, 可以寫多個.
//全路徑訪問方式: http://ip:端口號/項目名/文件名
例如:

        <servlet-mapping>
            <servlet-name>Demo3</servlet-name>
            <url-pattern>/demo3</url-pattern>
            <url-pattern>/demo3/aaa</url-pattern>
            <url-pattern>/demo3/aaa/bbb</url-pattern>
            <url-pattern>/demo3/aaa/bbb/ccc</url-pattern>
        </servlet-mapping>

可以優(yōu)化為: 通過 通配符匹配, 要求前半部分一樣.

    格式: 
        // <url-pattern>/名字/*</url-pattern>
    特點: 
        前半部分(*之前的部分)一樣, 
        后半部分(*之后的部分)可以隨便寫(因為 * 代表所有)

也可以優(yōu)化為: 通過 擴展名匹配, 要求后綴名一樣.

    格式:
        <url-pattern>*.do</url-pattern>
        //后綴名可以自定義.

優(yōu)先級如下:
全路徑 > 通配符 > 擴展名
總結(jié):
如果級別相同, 取相似度最高的.

9. 獲取參數(shù)

用戶在瀏覽器可能通過<form>標(biāo)簽提交到服務(wù)器一些數(shù)據(jù), 怎么知道用戶提交的是什么標(biāo)簽, 什么值呢?
這就需要用到: 獲取參數(shù).

HTTPServletRequest類中的方法:
    String getPrrameter(String name);   //根據(jù)表單項name的屬性值, 獲取非多選框的值.
    String[] getParameterValues(String name);  //根據(jù)表單項name的屬性值, 獲取多選框的值.
    Map getParameterMap();  //由服務(wù)器創(chuàng)建的map, 表單項的name屬性值作為key, 用戶填寫或者選擇的值作為值.



面試題:

1. Writer,    字節(jié)緩沖流,      字符緩沖流的默認(rèn)緩沖區(qū)的大小分別是多少?
    2KB       8kb(8192字節(jié))    16KB(8192字符)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末崖咨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子油吭,更是在濱河造成了極大的恐慌掩幢,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件上鞠,死亡現(xiàn)場離奇詭異,居然都是意外死亡芯丧,警方通過查閱死者的電腦和手機芍阎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缨恒,“玉大人谴咸,你說我怎么就攤上這事∑叮” “怎么了岭佳?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長萧锉。 經(jīng)常有香客問我珊随,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任叶洞,我火速辦了婚禮鲫凶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衩辟。我一直安慰自己螟炫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布艺晴。 她就那樣靜靜地躺著昼钻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪封寞。 梳的紋絲不亂的頭發(fā)上然评,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音钥星,去河邊找鬼沾瓦。 笑死,一個胖子當(dāng)著我的面吹牛谦炒,可吹牛的內(nèi)容都是我干的贯莺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼宁改,長吁一口氣:“原來是場噩夢啊……” “哼缕探!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起还蹲,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤爹耗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谜喊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潭兽,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年斗遏,在試婚紗的時候發(fā)現(xiàn)自己被綠了山卦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡诵次,死狀恐怖账蓉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逾一,我是刑警寧澤铸本,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站遵堵,受9級特大地震影響箱玷,放射性物質(zhì)發(fā)生泄漏怨规。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一汪茧、第九天 我趴在偏房一處隱蔽的房頂上張望椅亚。 院中可真熱鬧,春花似錦舱污、人聲如沸呀舔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媚赖。三九已至,卻和暖如春珠插,著一層夾襖步出監(jiān)牢的瞬間惧磺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工捻撑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留磨隘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓顾患,卻偏偏與公主長得像番捂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子江解,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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