java重要知識(shí)點(diǎn)集合(j2EE)

get和post請(qǐng)求的區(qū)別
  • GET參數(shù)通過URL傳遞荚虚,POST放在Request body中摄凡。
  • GET在瀏覽器回退時(shí)是無害的,而POST會(huì)再次提交請(qǐng)求弟劲。
  • GET產(chǎn)生的URL地址可以被Bookmark蟋软,而POST不可以镶摘。
  • GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache嗽桩,而POST不會(huì),除非手動(dòng)設(shè)置凄敢。
  • GET請(qǐng)求只能進(jìn)行url編碼碌冶,而POST支持多種編碼方式。
  • GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里涝缝,而POST中的參數(shù)不會(huì)被保留扑庞。
  • GET請(qǐng)求在URL中傳送的參數(shù)是有長(zhǎng)度限制的,而POST么有拒逮。
    對(duì)參數(shù)的數(shù)據(jù)類型嫩挤,GET只接受ASCII字符,而POST沒有限制消恍。
  • GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上以现,所以不能用來傳遞敏感信息狠怨。
轉(zhuǎn)發(fā)(Forward)和重定向(Redirect)的區(qū)別
  • 轉(zhuǎn)發(fā)是服務(wù)器行為,重定向是客戶端行為邑遏。
    轉(zhuǎn)發(fā)(Forward) 通過RequestDispatcher對(duì)象的forward(HttpServletRequest request,HttpServletResponse response)方法實(shí)現(xiàn)的佣赖。RequestDispatcher可以通過HttpServletRequest 的getRequestDispatcher()方法獲得。例如下面的代碼就是跳轉(zhuǎn)到login_success.jsp頁面记盒。request.getRequestDispatcher("login_success.jsp").forward(request, response);
    重定向(Redirect) 是利用服務(wù)器返回的狀態(tài)碼來實(shí)現(xiàn)的憎蛤。客戶端瀏覽器請(qǐng)求服務(wù)器的時(shí)候纪吮,服務(wù)器會(huì)返回一個(gè)狀態(tài)碼俩檬。服務(wù)器通過 HttpServletResponse 的 setStatus(int status) 方法設(shè)置狀態(tài)碼。如果服務(wù)器返回301或者302碾盟,則瀏覽器會(huì)到新的網(wǎng)址重新請(qǐng)求該資源棚辽。
  • 從地址欄顯示來說
    forward是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器.瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容從哪里來的,所以它的地址欄還是原來的地址. redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址.所以地址欄顯示的是新的URL.
  • 從數(shù)據(jù)共享來說
    forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù). redirect:不能共享數(shù)據(jù).
  • 從運(yùn)用地方來說
    forward:一般用于用戶登陸的時(shí)候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊. redirect:一般用于用戶注銷登陸時(shí)返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等
  • 從效率來說
    forward:高. redirect:低.
自動(dòng)刷新(Refresh)

自動(dòng)刷新不僅可以實(shí)現(xiàn)一段時(shí)間之后自動(dòng)跳轉(zhuǎn)到另一個(gè)頁面,還可以實(shí)現(xiàn)一段時(shí)間之后自動(dòng)刷新本頁面冰肴。Servlet中通過HttpServletResponse對(duì)象設(shè)置Header屬性實(shí)現(xiàn)自動(dòng)刷新例如:Response.setHeader("Refresh","5;URL=http://localhost:8080/servlet/example.htm");
其中5為時(shí)間屈藐,單位為秒。URL指定就是要跳轉(zhuǎn)的頁面(如果設(shè)置自己的路徑熙尉,就會(huì)實(shí)現(xiàn)每過5秒自動(dòng)刷新本頁面一次)

Servlet與線程安全
  • Servlet不是線程安全的联逻,多線程并發(fā)的讀寫會(huì)導(dǎo)致數(shù)據(jù)不同步的問題。
  • 解決的辦法是盡量不要定義name屬性检痰,而是要把name變量分別定義在doGet()和doPost()方法內(nèi)包归。雖然使用synchronized(name){}語句塊可以解決問題,但是會(huì)造成線程的等待攀细,不是很科學(xué)的辦法箫踩。
JSP有9個(gè)內(nèi)置對(duì)象:

request:封裝客戶端的請(qǐng)求爱态,其中包含來自GET或POST請(qǐng)求的參數(shù);
response:封裝服務(wù)器對(duì)客戶端的響應(yīng)境钟;
pageContext:通過該對(duì)象可以獲取其他對(duì)象锦担;
session:封裝用戶會(huì)話的對(duì)象;
application:封裝服務(wù)器運(yùn)行環(huán)境的對(duì)象慨削;
out:輸出服務(wù)器響應(yīng)的輸出流對(duì)象洞渔;
config:Web應(yīng)用的配置對(duì)象;
page:JSP頁面本身(相當(dāng)于Java程序中的this)缚态;
exception:封裝頁面拋出異常的對(duì)象磁椒。

Request對(duì)象的主要方法有哪些

setAttribute(String name,Object):設(shè)置名字為name的request 的參數(shù)值
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request 對(duì)象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例
getCookies():返回客戶端的所有 Cookie 對(duì)象玫芦,結(jié)果是一個(gè)Cookie 數(shù)組
getCharacterEncoding() :返回請(qǐng)求中的字符編碼方式 = getContentLength() :返回請(qǐng)求的 Body的長(zhǎng)度
getHeader(String name) :獲得HTTP協(xié)議定義的文件頭信息
getHeaders(String name) :返回指定名字的request Header 的所有值浆熔,結(jié)果是一個(gè)枚舉的實(shí)例
getHeaderNames() :返回所以request Header 的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getParameterNames() :獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字桥帆,結(jié)果是一個(gè)枚舉的實(shí)例
getParameterValues(String name):獲得有name指定的參數(shù)的所有值
getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
getQueryString() :獲得查詢字符串
getRequestURI() :獲取發(fā)出請(qǐng)求字符串的客戶端地址
getRemoteAddr():獲取客戶端的 IP 地址
getRemoteHost() :獲取客戶端的名字
getSession([Boolean create]) :返回和請(qǐng)求相關(guān) Session
getServerName() :獲取服務(wù)器的名字
getServletPath():獲取客戶端所請(qǐng)求的腳本文件的路徑
getServerPort():獲取服務(wù)器的端口號(hào)
removeAttribute(String name):刪除請(qǐng)求中的一個(gè)屬性
getParameter(String name) :獲得客戶端傳送給服務(wù)器端的有 name指定的參數(shù)值
getMethod() :獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
getInputStream() :返回請(qǐng)求的輸入流医增,用于獲得請(qǐng)求中的數(shù)據(jù)

request.getAttribute()和 request.getParameter()有何區(qū)別
  • 從獲取方向來看:
    getParameter()是獲取 POST/GET 傳遞的參數(shù)值;
    getAttribute()是獲取對(duì)象容器中的數(shù)據(jù)值老虫;
  • 從用途來看:
    getParameter用于客戶端重定向時(shí)叶骨,即點(diǎn)擊了鏈接或提交按扭時(shí)傳值用,即用于在用表單或url重定向傳值時(shí)接收數(shù)據(jù)用祈匙。
    getAttribute用于服務(wù)器端重定向時(shí)忽刽,即在 sevlet 中使用了 forward 函數(shù),或 struts 中使用了 mapping.findForward。 getAttribute 只能收到程序用 setAttribute 傳過來的值夺欲。
  • 總結(jié):
    getParameter 返回的是String,用于讀取提交的表單中的值;(獲取之后會(huì)根據(jù)實(shí)際需要轉(zhuǎn)換為自己需要的相應(yīng)類型跪帝,比如整型,日期類型啊等等)
    getAttribute 返回的是Object洁闰,需進(jìn)行轉(zhuǎn)換,可用setAttribute 設(shè)置成任意對(duì)象歉甚,使用很靈活,可隨時(shí)用
include指令include的行為的區(qū)別
  • include指令
    JSP可以通過include指令來包含其他文件扑眉。被包含的文件可以是JSP文件纸泄、HTML文件或文本文件。包含的文件就好像是該JSP文件的一部分腰素,會(huì)被同時(shí)編譯執(zhí)行聘裁。 語法格式如下: <%@ include file="文件相對(duì) url 地址" %>
  • include動(dòng)作
    jsp:include動(dòng)作元素用來包含靜態(tài)和動(dòng)態(tài)的文件。該動(dòng)作把指定文件插入正在生成的頁面弓千。語法格式如下: <jsp:include page="相對(duì) URL 地址" flush="true" />
JSP中的四種作用域包括page衡便、request、session和application,具體來說:
  • page代表與一個(gè)頁面相關(guān)的對(duì)象和屬性镣陕。
  • request代表與Web客戶機(jī)發(fā)出的一個(gè)請(qǐng)求相關(guān)的對(duì)象和屬性谴餐。一個(gè)請(qǐng)求可能跨越多個(gè)頁面,涉及多個(gè)Web組件呆抑;需要在頁面顯示的臨時(shí)數(shù)據(jù)可以置于此作用域岂嗓。
  • session代表與某個(gè)用戶與服務(wù)器建立的一次會(huì)話相關(guān)的對(duì)象和屬性。跟某個(gè)用戶相關(guān)的數(shù)據(jù)應(yīng)該放在用戶自己的session中鹊碍。
  • application代表與整個(gè)Web應(yīng)用程序相關(guān)的對(duì)象和屬性厌殉,它實(shí)質(zhì)上是跨越整個(gè)Web應(yīng)用程序,包括多個(gè)頁面侈咕、請(qǐng)求和會(huì)話的一個(gè)全局作用域公罕。GET參數(shù)通過URL傳遞,POST放在Request body中耀销。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楼眷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熊尉,更是在濱河造成了極大的恐慌摩桶,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帽揪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡辅斟,警方通過查閱死者的電腦和手機(jī)转晰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來士飒,“玉大人查邢,你說我怎么就攤上這事〗湍唬” “怎么了扰藕?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芳撒。 經(jīng)常有香客問我邓深,道長(zhǎng),這世上最難降的妖魔是什么笔刹? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任芥备,我火速辦了婚禮,結(jié)果婚禮上舌菜,老公的妹妹穿的比我還像新娘萌壳。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布袱瓮。 她就那樣靜靜地躺著缤骨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尺借。 梳的紋絲不亂的頭發(fā)上绊起,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音褐望,去河邊找鬼勒庄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瘫里,可吹牛的內(nèi)容都是我干的实蔽。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼谨读,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼局装!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起劳殖,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤铐尚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哆姻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣增,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年矛缨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爹脾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箕昭,死狀恐怖灵妨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情落竹,我是刑警寧澤泌霍,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站述召,受9級(jí)特大地震影響朱转,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜积暖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一肋拔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呀酸,春花似錦凉蜂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茎杂。三九已至,卻和暖如春纫雁,著一層夾襖步出監(jiān)牢的瞬間煌往,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工轧邪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刽脖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓忌愚,卻偏偏與公主長(zhǎng)得像曲管,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子硕糊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • JSP總結(jié)(經(jīng)典) day1 JSP 定義: 1)Java Server Page, Java EE 組件院水,本...
    java日記閱讀 3,410評(píng)論 0 13
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題。 96简十、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,397評(píng)論 0 10
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,790評(píng)論 0 11
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系檬某,而不是傳統(tǒng)實(shí)現(xiàn)中,有程序代碼之間控制螟蝙,又名依賴注入恢恼。All 類的創(chuàng)建,...
    irckwk1閱讀 926評(píng)論 0 0
  • 有些東西得到了如同失去,有些東西失去了卻還在心頭初坠。得到了不會(huì)去珍惜,當(dāng)初又何必那么執(zhí)著著得到彭雾,當(dāng)失去了才知道珍惜碟刺,...
    小憨包閱讀 647評(píng)論 0 1