JAVA簡答(三)

  1. 什么是JDBC劈猪?
    JDBC(Java DataBase Connectivity),是一套面向?qū)ο蟮膽?yīng)用程序接口(API),制定了統(tǒng)一的訪問各類關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)接口低剔,為各個(gè)數(shù)據(jù)庫廠商提供了標(biāo)準(zhǔn)的實(shí)現(xiàn)瞒渠。通過JDBC技術(shù)皮璧,開發(fā)人員可以用純Java語言和標(biāo)準(zhǔn)的SQL語句編寫完整的數(shù)據(jù)庫應(yīng)用程序技潘,并且真正地實(shí)現(xiàn)了軟件的跨平臺(tái)性遥巴。
  • 通常情況下使用JDBC完成以下操作:
    ①同數(shù)據(jù)庫建立連接千康;
    ②向數(shù)據(jù)庫發(fā)送SQL語句;
    ③處理從數(shù)據(jù)庫返回的結(jié)果挪哄;
  • 驅(qū)動(dòng)(Driver)在JDBC中的角色
    jdbc本身是一套接口吧秕,驅(qū)動(dòng)其實(shí)就是它的實(shí)現(xiàn)類琉闪,只有提供了驅(qū)動(dòng)才能與對(duì)應(yīng)的數(shù)據(jù)庫建立連接的通道迹炼。驅(qū)動(dòng)必須要提供java.sql包下面這些類的實(shí)現(xiàn):Connection, Statement, PreparedStatement,CallableStatement, ResultSet和Driver。
  • Class.forName()方法
    Class.forName(xxx.xx.xx)的作用是初始化參數(shù)指定的類颠毙,并且返回此類對(duì)應(yīng)的Class 對(duì)象斯入,即要求JVM查找并加載指定的類。forName() + newinstance()new的作用相當(dāng)蛀蜜,如A a =(A) Class.forName ("pacage.A").newInstance()這和 A a =new A();是一樣的效果刻两。
    JDBC中使用class.forname()加載驅(qū)動(dòng)。
  1. PreparedStatement比Statement有什么優(yōu)勢滴某?
    PreparedStatements作為statement的子類磅摹,繼承了statement的所有方法
  • PreparedStatement是預(yù)編譯的,性能會(huì)比Statement好
  • PreparedStatement可以防止sql注入霎奢,安全性比Statement高
  • PreparedStatements可以寫動(dòng)態(tài)參數(shù)化的查詢户誓,提高了代碼的可擴(kuò)展性與可維護(hù)性
  1. 數(shù)據(jù)庫連接池是什么意思?
    數(shù)據(jù)庫連接的建立幕侠、關(guān)閉資源消耗巨大帝美。
    傳統(tǒng)數(shù)據(jù)庫訪問方式:一次數(shù)據(jù)訪問對(duì)應(yīng)一個(gè)物理連接,每次操作數(shù)據(jù)庫都要打開關(guān)閉該物理連接晤硕,系統(tǒng)性能嚴(yán)重受損悼潭。
    解決方案:數(shù)據(jù)庫連接池。系統(tǒng)初始運(yùn)行時(shí)舞箍,主動(dòng)建立足夠足夠的連接舰褪,組成一個(gè)池,每次應(yīng)用程序請(qǐng)求數(shù)據(jù)庫連接時(shí)疏橄,無需重新打開連接抵知,而是從池中取出已有的連接,使用完后软族,不再關(guān)閉刷喜,而是歸還。

  2. 什么是RMI立砸?

  • 定義:Remote Method Invocation掖疮,遠(yuǎn)程方法調(diào)用,是Java所特有的分布式計(jì)算技術(shù)颗祝。其基本原則就是把對(duì)象的使用和對(duì)象的創(chuàng)建相分離浊闪,它允許運(yùn)行在一個(gè)Java虛擬機(jī)上的對(duì)象調(diào)用運(yùn)行在另一個(gè)Java虛擬機(jī)上的對(duì)象的方法恼布。
  • 開發(fā)步驟:
    ①定義一個(gè)遠(yuǎn)程接口(遠(yuǎn)程接口必須繼承接口,每個(gè)方法必須拋出遠(yuǎn)程異常搁宾,方法參數(shù)和方法返回值都必須是可序列化的
    ②實(shí)現(xiàn)遠(yuǎn)程接口
    ③定義使用遠(yuǎn)程對(duì)象的客戶程序
    ④產(chǎn)生遠(yuǎn)程訪問對(duì)象的樁和框
    ⑤注冊遠(yuǎn)程對(duì)象
    ⑥運(yùn)行服務(wù)器和客戶程序
  • RMI體系結(jié)構(gòu)
    ①存根和骨架層(Stub and Skeleton layer):這一層對(duì)程序員是透明的折汞,它主要負(fù)責(zé)攔截客戶端發(fā)出的方法調(diào)用請(qǐng)求,然后把請(qǐng)求重定向給遠(yuǎn)程的RMI服務(wù)盖腿。
    ②遠(yuǎn)程引用層(Remote Reference Layer):RMI體系結(jié)構(gòu)的第二層用來解析客戶端對(duì)服務(wù)端遠(yuǎn)程對(duì)象的引用爽待。這一層解析并管理客戶端對(duì)服務(wù)端遠(yuǎn)程對(duì)象的引用。連接是點(diǎn)到點(diǎn)的翩腐。
    ③傳輸層(Transport layer):這一層負(fù)責(zé)連接參與服務(wù)的兩個(gè)JVM鸟款。這一層是建立在網(wǎng)絡(luò)上機(jī)器間的TCP/IP連接之上的。它提供了基本的連接服務(wù)茂卦,還有一些防火墻穿透策略何什。
  • java.rmi.Naming
    該類主要用于存儲(chǔ)或獲取遠(yuǎn)程對(duì)象的引用,參數(shù)是是URL格式的String等龙。
    bindrebind方法注冊對(duì)象处渣,把對(duì)象與一個(gè)名字name綁定。比如蛛砰,通過Naming.rebind("http://localhost/MyServer", new ServerOperation());ServerOperation對(duì)象賦給一個(gè)URI罐栈,讓客戶端可以通過這個(gè)URI訪問該對(duì)象。其中bind需要未綁定的地址暴备,否則將會(huì)報(bào)錯(cuò)悠瞬。
  • 分布式垃圾回收(DGC)
    當(dāng)客戶機(jī)創(chuàng)建(序列化)遠(yuǎn)程引用時(shí),會(huì)在服務(wù)器端 DGC 上調(diào)用 dirty()涯捻。當(dāng)客戶機(jī)完成遠(yuǎn)程引用后浅妆,它會(huì)調(diào)用對(duì)應(yīng)的 clean() 方法。
  • Marshallingdemarshalling
    Marshalling就是object->xml障癌,把內(nèi)存對(duì)象跨網(wǎng)絡(luò)傳遞到另一臺(tái)主機(jī)或者是持久化到存儲(chǔ)凌外,demarshalling是其反過程。
  1. 什么是Servlet涛浙?
    servlet是基于java語言的web服務(wù)器端編程技術(shù)康辑,運(yùn)行在servlet容器中的java類,它能處理客戶端的http請(qǐng)求并產(chǎn)生http響應(yīng)轿亮。
  • 體系結(jié)構(gòu):
    Servlet類 ← GenericServlet類 ← HttpServlet類 ← MyServlet類(自己建的類) (←代表繼承)
    ①GenericServlet類實(shí)現(xiàn)了Servlet和ServletConfig接口疮薇。實(shí)現(xiàn)了除了service()之外的其他方法,在創(chuàng)建Servlet對(duì)象時(shí)我注,可以繼承GenericServlet類來簡化程序的代碼按咒,但需要實(shí)現(xiàn)service()方法。
    ②HttpServlet類繼承了GeneriServlet類但骨。實(shí)際開發(fā)中励七,通常繼承HttpServlet類智袭,重寫我們需要的doGet(),doPost()請(qǐng)求即可掠抬。
  • 使用過程
    ①init()初試化Servlet
    ②service()相應(yīng)Servlet請(qǐng)求
    ③destroy()銷毀Servlet
  • doGetdoPOST
    分別用于處理get和post請(qǐng)求吼野。Get是路徑傳參,效率高两波,安全性差瞳步;POST是實(shí)體傳參,效率低雨女,安全性好谚攒。
  • Servlet鏈(Servlet Chaining):是把一個(gè)Servlet的輸出發(fā)送給另一個(gè)Servlet的方法阳准,依次類推氛堕。鏈條上最后一個(gè)Servlet負(fù)責(zé)把響應(yīng)發(fā)送給客戶端。提供了將一個(gè)servlet的輸出重定向?yàn)榱硪粋€(gè)servlet的輸入的能力野蝇,這樣就可以劃分工作讼稚。
  • 判斷Servlet請(qǐng)求來源

request.getRemoteAddr();//ipaddr
request.getRemoteHost();//主機(jī)名
request.getRequestURL();//返回全路徑
request.getRequestURI();//返回除去host(域名或者ip)部分的路徑
request.getContextPath();//返回工程名部分,如果工程映射為/绕沈,此處返回則為空
request.getServletPath();//返回除去host和工程名部分的路徑

  1. 什么是JSP
  • 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ì)象洽故。

  • jsp的4個(gè)作用域

page代表與一個(gè)頁面相關(guān)的對(duì)象和屬性。
request代表與Web客戶機(jī)發(fā)出的一個(gè)請(qǐng)求相關(guān)的對(duì)象和屬性盗誊。
session代表與某個(gè)用戶與服務(wù)器建立的一次會(huì)話相關(guān)的對(duì)象和屬性时甚。
application代表與整個(gè)Web應(yīng)用程序相關(guān)的對(duì)象和屬性。

  • jsp 和 servlet
    JSP的本質(zhì)就是Servlet哈踱,是Servlet的一種簡化荒适,jsp經(jīng)編譯后就變成了Servlet。
    ① jsp更擅長表現(xiàn)于頁面顯示开镣,servlet更擅長于邏輯控制刀诬。
    ② Servlet中沒有內(nèi)置對(duì)象,Jsp中有內(nèi)置對(duì)象
  1. session和cookie有什么區(qū)別哑子?
  • 區(qū)別:cookie保存在客戶端瀏覽器中舅列,而session保存在服務(wù)器上肌割。
  • cookie:實(shí)際上是一小段的文本信息。服務(wù)器還可以根據(jù)需要修改cookie的內(nèi)容帐要。
    過程:客戶端請(qǐng)求服務(wù)——>服務(wù)器向客戶端瀏覽器頒發(fā)一個(gè)cookie——>客戶端瀏覽器保存cookie——>客戶端請(qǐng)求服務(wù)——>客戶端發(fā)送請(qǐng)求地址和cookie——>服務(wù)器檢查該cookie把敞,從而判斷用戶的狀態(tài)。
    典型的應(yīng)用如榨惠,將用戶名和密碼信息存入cookie中奋早,下次登錄時(shí)讀取cookie內(nèi)容能自動(dòng)填入。
  • session:另一種記錄客戶狀態(tài)的機(jī)制赠橙。不同的是客戶端瀏覽器訪問服務(wù)器的時(shí)候耽装,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,這就是session期揪。類似于一個(gè)大號(hào)的map掉奄,里面的鍵存儲(chǔ)的是用戶的Session ID。一般Session ID是通過Cookie來傳遞的凤薛。但禁用cookie之后姓建,也可以通過URL傳值等方式獲取ID從而使用session。
    缤苫。
  1. HTTP請(qǐng)求和響應(yīng)結(jié)構(gòu)
  • HTTP響應(yīng)由三部分組成:狀態(tài)行速兔、響應(yīng)頭、響應(yīng)正文:
    狀態(tài)行:包括協(xié)議版本Version活玲、狀態(tài)碼Status Code涣狗、回應(yīng)短語;
    響應(yīng)頭:包括搭建服務(wù)器的軟件舒憾,發(fā)送響應(yīng)的時(shí)間镀钓,回應(yīng)數(shù)據(jù)的格式等信息;
    響應(yīng)正文:就是響應(yīng)的具體數(shù)據(jù)珍剑。
  • HTTP請(qǐng)求由狀態(tài)行掸宛、請(qǐng)求頭、請(qǐng)求正文三部分組成:
    狀態(tài)行:包括請(qǐng)求方式Method招拙、資源路徑URL唧瘾、協(xié)議版本Version;
    請(qǐng)求頭:包括一些訪問的域名别凤、用戶***饰序、Cookie等信息;
    請(qǐng)求正文:就是HTTP請(qǐng)求的數(shù)據(jù)规哪。
  1. HTTP隧道
    有時(shí)候需要訪問服務(wù)器除了80端口之外的其他端口求豫,但是服務(wù)器上裝有的防火墻軟件 會(huì)阻止客戶端訪問除了80端口之外的其他端口,這個(gè)時(shí)候需要將訪問其他端口的協(xié)議“包裝”一下 變成訪問80端口的http協(xié)議,這個(gè)就是http隧道蝠嘉。

  2. sendRedirect()和forward()方法有什么區(qū)別最疆?
    forward(轉(zhuǎn)發(fā)):是服務(wù)器內(nèi)部的跳轉(zhuǎn),瀏覽器的地址欄不會(huì)發(fā)生變化蚤告,同時(shí)可以把request和response傳遞給后一個(gè)請(qǐng)求努酸。
    sendRedirect(重定向):是瀏覽器方面的跳轉(zhuǎn),要發(fā)送兩次請(qǐng)求杜恰,地址欄也會(huì)發(fā)生變化获诈,同時(shí)request和response也會(huì)發(fā)生變化,重新生成新的對(duì)象心褐。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末舔涎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逗爹,更是在濱河造成了極大的恐慌亡嫌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桶至,死亡現(xiàn)場離奇詭異昼伴,居然都是意外死亡匾旭,警方通過查閱死者的電腦和手機(jī)镣屹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來价涝,“玉大人女蜈,你說我怎么就攤上這事∩瘢” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長峡眶。 經(jīng)常有香客問我感混,道長,這世上最難降的妖魔是什么泥栖? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任簇宽,我火速辦了婚禮,結(jié)果婚禮上吧享,老公的妹妹穿的比我還像新娘魏割。我一直安慰自己,他們只是感情好钢颂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布钞它。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪遭垛。 梳的紋絲不亂的頭發(fā)上尼桶,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音锯仪,去河邊找鬼疯汁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卵酪,可吹牛的內(nèi)容都是我干的幌蚊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溃卡,長吁一口氣:“原來是場噩夢啊……” “哼溢豆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瘸羡,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤漩仙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后犹赖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體队他,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年峻村,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了麸折。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粘昨,死狀恐怖垢啼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情张肾,我是刑警寧澤芭析,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站吞瞪,受9級(jí)特大地震影響馁启,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芍秆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一惯疙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浪听,春花似錦螟碎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俭缓。三九已至,卻和暖如春酥郭,著一層夾襖步出監(jiān)牢的瞬間华坦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工不从, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惜姐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓椿息,卻偏偏與公主長得像歹袁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寝优,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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