JSP 內(nèi)置對象(上)

本文包括:

  1. out(常用)

  2. request(重點)

  3. response(重點)

  4. get與post(難點)

  5. 請求重定向與請求轉(zhuǎn)發(fā)(難點)

JSP內(nèi)置對象簡介

  1. JSP內(nèi)置對象是Web容器創(chuàng)建的一組對象称诗,【不使用new關(guān)鍵字】就可以使用的內(nèi)置對象萍悴。

    • 例如:

  2. JSP九大內(nèi)置對象:

    • out、request寓免、response癣诱、session、application(五大常用對象)

    • Page袜香、pageContext狡刘、exception、config(四個不太常用對象)

1困鸥、out(常用)

1.1嗅蔬、什么是緩沖區(qū)?

  • 緩沖區(qū):Buffer疾就,所謂緩沖區(qū)就是內(nèi)存的一塊區(qū)域用來保存臨時數(shù)據(jù)澜术。

  • 比如:IO輸出最原始的就是一個字節(jié)一個字節(jié)輸出,就像一粒一粒吃一樣猬腰,效率太差鸟废。緩沖區(qū)可以先將多個字節(jié)讀出來,再一次性的輸出姑荷,提高效率盒延。

1.2、out對象

  1. out對象是JspWriter類的實例鼠冕,是向客戶端(這里指瀏覽器)輸出內(nèi)容的常用對象添寺。

  2. 常用方法:

2、request(重點)

2.1懈费、request對象

  • 介紹與方法

2.2计露、示例:String[] getParameterValues(String name)

  • 方法比較:

    • String getParameter(String name)//獲取單個參數(shù)值

    • String[] getParameterValues(String name)//獲取多個參數(shù)值(獲得提交參數(shù)具有相同名稱的集合),如獲取checkbox的值

  • 比如這個注冊表單:

  • 數(shù)據(jù)提交到request.jsp頁面:

  • 運行結(jié)果:

2.3、示例:setAttribute()\getAttribute()

  • 方法比較:

    • setAttribute()設(shè)置屬性時是以鍵值對的形式

    • getAttribute()獲取屬性只需要輸入鍵的值票罐,就可以獲得屬性的值叉趣。

  • 示例:

2.4、示例:其他參數(shù)

  • 方法:

    • 請求體的MIME類型:<%=request.getContentType() %>

    • 協(xié)議類型及版本號:<%=request.getProtocol() %>

    • 服務(wù)器主機名:<%=request.getServerName() %>

    • 服務(wù)器端口號:<%=request.getServerPort() %>

    • 請求文件的長度:<%=request.getContentLength() %>

    • 請求客戶端的IP地址:<%=request.getRemoteAddr() %>

    • 請求的真實路徑:<%=request.getRealPath("request.jsp") %>

    • 請求的上下文路徑:<%=request.getContextPath() %>

  • 運行結(jié)果

2.5该押、解決url傳中文參數(shù)出現(xiàn)亂碼問題:

  • 表單post方式:

  • 解決措施:

      request.setCharacterEncoding(“utf-8”);//解決post請求傳遞中文參數(shù)的亂碼問題疗杉,設(shè)置的編碼要與發(fā)送請求的頁面的編碼設(shè)置的一致。但是無法解決URL鏈接傳遞中文參數(shù)的亂碼問題蚕礼。
    
  • URL傳值(get)方式:

  • 解決措施:
    URL傳中文參數(shù)不能用setCharacterEncoding("utf-8")解決乡数,可通過修改TOMCAT的conf文件夾下server.xml解決,在connector標(biāo)簽添加屬性URIEncoding="utf-8"闻牡。

    tomcat > conf> server.xml

      <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" URIEncoding="utf-8"
      />
    

3净赴、response(重點)

3.1、response對象

  • response對象具有頁面作用域罩润,即訪問一個頁面時玖翅,該頁面的response對象只對本次訪問有效,其他頁面的response對象對當(dāng)前頁面無效割以。

  • 常用方法

    • String setCharacterEncoding()//設(shè)置響應(yīng)字符編碼格式

    • String getCharacterEncoding()//獲取響應(yīng)字符編碼格式

    • void setContentType(String type)//設(shè)置響應(yīng)MIME類型

    • sendRedirect(java.lang.String location)//請求重定向

    • PrintWriter getWriter()//獲取打印輸出對象

    注意:PrintWriter對象的輸出先于內(nèi)置out對象
    解決方法:
    out.println();
    out.flush();//清空緩沖區(qū)并將緩沖區(qū)內(nèi)容輸出到瀏覽器金度,這樣就可以先輸出out,再輸出PrintWriter(即按照代碼順序執(zhí)行)
    PrintWriter outer=response.getWriter();
    outer.println();

4严沥、get與post(難點)

表單有兩種提交方式:get與post猜极。

  • 定義方式如下所示:

      <form action="dologin.jsp" name="loginForm" method="提交方式***"></form>
    
  • 特點:

    • get:以【明文】方式,通過URL提交數(shù)據(jù)消玄,數(shù)據(jù)在URL中可以看到跟伏。提交數(shù)據(jù)最多不超過【2KB】。安全性較低翩瓜,但效率比post方式高受扳。適合提交數(shù)據(jù)量不大,且安全要求不高的數(shù)據(jù):比如:搜索兔跌、查詢等功能勘高。

    • post:將用戶提交的信息封裝在HTML HEADER內(nèi),數(shù)據(jù)在URL中【不能看到】適合提交數(shù)據(jù)量大坟桅,安全性高的用戶信息华望。如:注冊、修改仅乓、上傳等功能赖舟。

區(qū)別:

  1. post隱式提交,get顯示提交

  2. post安全方灾,get不安全

  3. get提交數(shù)據(jù)的長度有限(255字符之內(nèi))建蹄,post無限

什么情況下是GET提交,什么情況下又是POST提交呢裕偿?

  1. GET提交:
    1)洞慎、默認(rèn)的表單提交方法

    2)、以“<A(括回)”鏈接的方法提交數(shù)據(jù)

    3)嘿棘、直接在地址欄的URL中追加數(shù)據(jù)

    4)劲腿、js中使用location.href='xxxxx';

  2. POST提交:

    1)、顯示指定表單的method為POST鸟妙,絕大多數(shù)的表單都采用POST提交焦人,只有向Baidu、Google這樣的搜索引擎才采用GET方法提交

編碼格式轉(zhuǎn)換

  • post請求編碼格式轉(zhuǎn)換:

      request.setCharacterEncoding("utf-8");
    
  • get請求編碼格式轉(zhuǎn)換:

      String s=request.getParament(“stu”);
       String str=new String(s.getBytes(“iso8859-1”),“utf-8”);
    

5重父、請求重定向與請求轉(zhuǎn)發(fā)(難點)

  1. 請求重定向:

     response.sendRedirect("xx.jsp");//重定向
    

    【客戶端行為】:即客戶端會訪問兩次花椭,第一次訪問后會立即跳轉(zhuǎn)到第二個重定向頁面上,【從本質(zhì)上講等于兩次請求】房午,而前一次的請求封裝的request對象不會保存矿辽,地址欄的URL地址會改變

  2. 請求轉(zhuǎn)發(fā):

     request.getRequestDispatcher("xx.jsp").forward(request,response);//請求轉(zhuǎn)發(fā)
    

    forward(request,response)用于保存內(nèi)置對象request和response郭厌。
    【服務(wù)器行為】:服務(wù)器會代替客戶端去訪問轉(zhuǎn)發(fā)頁面袋倔,【從本質(zhì)是一次請求】,轉(zhuǎn)發(fā)后請求對象會保存折柠,地址欄的URL地址不會改變宾娜。

  3. 區(qū)別

    • 請求重定向從本質(zhì)上講等于兩次請求,而請求轉(zhuǎn)發(fā)從本質(zhì)上將等于一次請求扇售。

    • 轉(zhuǎn)發(fā)是在服務(wù)器端發(fā)揮作用前塔,通過forward方法將提交信息在多個頁面間進(jìn)行傳遞。

    • 轉(zhuǎn)發(fā)是在服務(wù)器內(nèi)部控制權(quán)的轉(zhuǎn)移承冰,客戶端瀏覽器的地址欄不會顯示出轉(zhuǎn)向后的地址嘱根,即地址欄URL不變。

    • 重定向是通過瀏覽器重新請求地址巷懈,在地址欄中可以顯示轉(zhuǎn)向后的地址该抒,即地址欄URL會變。

  4. 形象解釋:

本文參考:http://www.imooc.com/learn/166

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顶燕,一起剝皮案震驚了整個濱河市凑保,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涌攻,老刑警劉巖欧引,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恳谎,居然都是意外死亡芝此,警方通過查閱死者的電腦和手機憋肖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婚苹,“玉大人岸更,你說我怎么就攤上這事〔采” “怎么了怎炊?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長廓译。 經(jīng)常有香客問我评肆,道長,這世上最難降的妖魔是什么非区? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任瓜挽,我火速辦了婚禮,結(jié)果婚禮上征绸,老公的妹妹穿的比我還像新娘秸抚。我一直安慰自己,他們只是感情好歹垫,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布剥汤。 她就那樣靜靜地躺著,像睡著了一般排惨。 火紅的嫁衣襯著肌膚如雪吭敢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天暮芭,我揣著相機與錄音鹿驼,去河邊找鬼。 笑死辕宏,一個胖子當(dāng)著我的面吹牛畜晰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瑞筐,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼凄鼻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了聚假?” 一聲冷哼從身側(cè)響起块蚌,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膘格,沒想到半個月后峭范,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瘪贱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年纱控,在試婚紗的時候發(fā)現(xiàn)自己被綠了辆毡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡甜害,死狀恐怖舶掖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唾那,我是刑警寧澤访锻,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布褪尝,位于F島的核電站闹获,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏河哑。R本人自食惡果不足惜避诽,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望璃谨。 院中可真熱鬧沙庐,春花似錦、人聲如沸佳吞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽底扳。三九已至铸抑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衷模,已是汗流浹背鹊汛。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阱冶,地道東北人刁憋。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像木蹬,于是被迫代替她去往敵國和親至耻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理镊叁,服務(wù)發(fā)現(xiàn)有梆,斷路器,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • (一)JSP內(nèi)置對象: 1.1 簡介: JSP內(nèi)置對象是Web容器創(chuàng)建的一組對象意系,不使用new關(guān)鍵字就可以使用的內(nèi)...
    Manecho閱讀 302評論 1 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法泥耀,類相關(guān)的語法,內(nèi)部類的語法蛔添,繼承相關(guān)的語法痰催,異常的語法兜辞,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,934評論 6 13
  • 團(tuán)隊開發(fā)框架實戰(zhàn)—日志記錄 log4net簡介 幾乎所有的大型應(yīng)用都會有自己的用于跟蹤調(diào)試的API。因為一旦程序被...
    Bobby0322閱讀 1,139評論 2 0