web13 servlet servletcontext

小技巧

  • 快速向下復(fù)制不能用--把Intel快捷鍵先修改為其它按鍵涉波,然-后再禁止酷师,保存。這樣你的eclipse中的Ctrl+alt+down就可用了
  • <load-on-startup>3</load-on-startup>優(yōu)先級(jí)寫中間數(shù),防止別人會(huì)有更優(yōu)先數(shù)字(web.xml中會(huì)讓servlet在tomcat啟動(dòng)時(shí)創(chuàng)建)
  • 代碼模板: java-templates
package ${enclosing_package};
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ${primary_type_name} extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("hello haohao...");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
  • web地址正反斜杠均可
  • 獲取地址兩種方式狸棍,相對(duì)于web工程和相對(duì)于src(classes)的
    context.getrealpath(相對(duì)于web工程【copy到tomcat下的】路徑)
    LoginServlet.class.getClassLoader().getResource(相對(duì)于src相對(duì)路徑).getPath();
    在tomcat下同樣有編譯的class文件而此時(shí)
圖片.png

https://sfault-image.b0.upaiyun.com/442/411/442411861-57aea419db988
  • 環(huán)境不一致就buildpath中重新導(dǎo)入system
    遇到緩存問題,刪包重新加載
  1. Servlet
  • Servlet 運(yùn)行在服務(wù)端的Java小程序味悄,是sun公司提供一套規(guī)范(接口)隔缀,用來處理客戶端請(qǐng)求、響應(yīng)給瀏覽器的動(dòng)態(tài)資源傍菇。但servlet的實(shí)質(zhì)就是java代碼猾瘸,通過java的API 動(dòng)態(tài)的向客戶端輸出內(nèi)容
圖片.png
  • Servlet的API(生命周期)
(1)Servlet接口中的方法
1)init(ServletConfig config)
何時(shí)執(zhí)行:servlet對(duì)象創(chuàng)建的時(shí)候執(zhí)行
ServletConfig : 代表的是該servlet對(duì)象的配置信息

2)service(ServletRequest request,ServletResponse response)
何時(shí)執(zhí)行:每次請(qǐng)求都會(huì)執(zhí)行
ServletRequest :代表請(qǐng)求 認(rèn)為ServletRequest 內(nèi)部封裝的是                                        http請(qǐng)求的信息
ServletResponse :代表響應(yīng) 認(rèn)為要封裝的是響應(yīng)的信息

3)destroy()
何時(shí)執(zhí)行:servlet銷毀的時(shí)候執(zhí)行


(2)HttpServlet類的方法
1)init()
2)doGet(HttpServletRequest request,HttpServletResponse response)最終執(zhí)行的是service方法
3)doPost(HttpServletRequest request,HttpServletResponse response)
4)destroy()

(3)Servlet的生命周期(面試題)
1)Servlet何時(shí)創(chuàng)建
默認(rèn)第一次訪問servlet時(shí)創(chuàng)建該對(duì)象

2)Servlet何時(shí)銷毀
服務(wù)器關(guān)閉servlet就銷毀了

3)每次訪問必然執(zhí)行的方法
service(ServletRequest req, ServletResponse res)方法
圖片.png
  • 其中url-pattern的配置方式:完全匹配 訪問的資源與配置的資源完全相同才能訪問到
圖片.png
  • 目錄匹配 格式:/虛擬的目錄../* *代表任意只要前面路徑符合下面不論些什么都會(huì)鏈接到這里
圖片.png
  • 擴(kuò)展名匹配 格式:*.擴(kuò)展名
圖片.png

注意:第二種與第三種不要混用 /aaa/bbb/*.abcd(錯(cuò)誤的)

2.服務(wù)器啟動(dòng)實(shí)例化Servlet配置
Servlet的何時(shí)創(chuàng)建:默認(rèn)第一次訪問時(shí)創(chuàng)建
為什么是默認(rèn)?
當(dāng)在servlet的配置時(shí) 加上一個(gè)配置 <load-on-startup> servlet對(duì)象在服務(wù)器啟動(dòng)  時(shí)就創(chuàng)建
3.缺省Servlet
可以將url-pattern配置一個(gè)/丢习,代表該servlet是缺省的servlet
什么是缺省的servlet牵触?
當(dāng)你訪問資源地址所有的servlet都不匹配時(shí) , 缺省的servlet負(fù)責(zé)處理

其實(shí)咐低,web應(yīng)用中所有的資源的響應(yīng)都是servlet負(fù)責(zé)揽思,包括靜態(tài)資源
  • 4.歡迎頁(yè)面(先是工程下web.xml,如果沒有則會(huì)找到service的全局web.xml)
圖片.png

2.ServletContext對(duì)象

  • ServletContext代表是一個(gè)web應(yīng)用的環(huán)境(上下文)對(duì)象,ServletContext對(duì)象 內(nèi)部封裝是該web應(yīng)用的信息见擦,ServletContext對(duì)象一個(gè)web應(yīng)用只有一個(gè)可用來存取數(shù)據(jù)
  • 一個(gè)web應(yīng)用有多個(gè)servlet對(duì)象
  • ServletContext對(duì)象的生命周期钉汗?
    創(chuàng)建:該web應(yīng)用被加載(服務(wù)器啟動(dòng)或發(fā)布web應(yīng)用(前提,服務(wù)器啟動(dòng)狀 態(tài)))
    銷毀:web應(yīng)用被卸載(服務(wù)器關(guān)閉鲤屡,移除該web應(yīng)用)
  • 獲得ServletContext對(duì)象
    1)ServletContext servletContext = config.getServletContext();
    2)ServletContext servletContext = this.getServletContext();
  • ServletContext的作用
    web.xml中配置初始化參數(shù)
圖片.png

通過context對(duì)象獲得參數(shù)

圖片.png
  • 獲得web應(yīng)用中任何資源的絕對(duì)路徑
    方法:String path = context.getRealPath(相對(duì)于該web應(yīng)用的相對(duì)地址);
  • ServletContext是一個(gè)域?qū)ο螅捍鎯?chǔ)數(shù)據(jù)的區(qū)域就是域?qū)ο?/li>
  • ServletContext域?qū)ο蟮淖饔梅秶赫麄€(gè)web應(yīng)(所有的web資源都可以隨意向 servletcontext域中存取數(shù)據(jù)损痰,數(shù)據(jù)可以共享)
  • 域?qū)ο蟮耐ㄓ玫姆椒ǎ?br> setAtrribute(String name,Object obj);
    getAttribute(String name);
    removeAttribute(String name);
  • 簡(jiǎn)單登錄-網(wǎng)站登錄sql檢測(cè)
    navicat創(chuàng)建的數(shù)據(jù)庫(kù)(圖形化界面較簡(jiǎn)單)
public class ServletText extends HttpServlet {
    @Override
    public void init() throws ServletException {
        super.init();
//      登錄計(jì)數(shù)
        int num = 0;
        getServletContext().setAttribute("num", num);
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.獲取名字密碼
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username + "00000-");
        // 2.傳給數(shù)據(jù)庫(kù)解析
        User user = null;
        try {
            QueryRunner qr = new QueryRunner(C3p0Utiles.getCombpdatasource());
            String sql = "select * from user where username=? and password=?";
            user = qr.query(sql, new BeanHandler<User>(User.class), username, password);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new RuntimeException(e);
        }
        // 3.在界面顯示結(jié)果

        if (user != null) {
            ServletContext cont = this.getServletContext();
            Integer num = (Integer) cont.getAttribute("num");
//          登錄計(jì)數(shù)
            num++;
            response.getWriter().write(user.toString() + num);
            cont.setAttribute("num", num);
        } else {
            response.getWriter().write("sorry to that wrong");

        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酒来,隨后出現(xiàn)的幾起案子卢未,更是在濱河造成了極大的恐慌,老刑警劉巖堰汉,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件买乃,死亡現(xiàn)場(chǎng)離奇詭異审孽,居然都是意外死亡解幽,警方通過查閱死者的電腦和手機(jī)鸳址,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來就乓,“玉大人汉匙,你說我怎么就攤上這事拱烁。” “怎么了盹兢?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵邻梆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我绎秒,道長(zhǎng)浦妄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任见芹,我火速辦了婚禮剂娄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玄呛。我一直安慰自己阅懦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布徘铝。 她就那樣靜靜地躺著耳胎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惕它。 梳的紋絲不亂的頭發(fā)上怕午,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音淹魄,去河邊找鬼郁惜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛甲锡,可吹牛的內(nèi)容都是我干的兆蕉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼缤沦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼虎韵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疚俱,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤劝术,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后呆奕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衬吆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年梁钾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逊抡。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姆泻,死狀恐怖零酪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拇勃,我是刑警寧澤四苇,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站方咆,受9級(jí)特大地震影響月腋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓣赂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一榆骚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煌集,春花似錦妓肢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至卷拘,卻和暖如春喊废,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恭金。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工操禀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人横腿。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓颓屑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耿焊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子揪惦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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

  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司罗侯,掛了不少器腋,但最終還是拿到小米、百度钩杰、阿里纫塌、京東、新浪讲弄、CVTE措左、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,212評(píng)論 11 349
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,805評(píng)論 0 11
  • Servlet學(xué)習(xí)的大綱 servlet概念及相關(guān)接口簡(jiǎn)介 servet 執(zhí)行過程 servlet映射路徑 缺省s...
    奮斗的老王閱讀 1,185評(píng)論 1 51
  • 本文包括:1、Listener簡(jiǎn)介2避除、Servlet監(jiān)聽器3怎披、監(jiān)聽三個(gè)域?qū)ο髣?chuàng)建和銷毀的事件監(jiān)聽器4胸嘁、監(jiān)聽三個(gè)域?qū)?..
    廖少少閱讀 6,038評(píng)論 6 28
  • 自從上班之后性宏,越發(fā)感慨沒有時(shí)間。 上班回家之后状飞,往往已經(jīng)11點(diǎn)了毫胜。洗澡洗漱之后,時(shí)間就拖到了12點(diǎn)昔瞧。 第二天又要6...
    鹿小愛閱讀 602評(píng)論 2 9