Java面試題集錦09—Web開發(fā)相關(guān)技術(shù)

32.什么是Servlet
Servlet在Java Web服務(wù)器中就充當(dāng)了信息資源的最小表示單位斜脂,代表了一個用戶可以通過瀏覽器獲取的資源抓艳。Servlet可以進行無限的擴展,它可以使用Java的所有類庫資源帚戳,為用戶返回文本玷或、圖片、音頻片任、視頻等各類信息資源偏友。
從編程角度來看,Servlet是一個Java類对供,這個類需要實現(xiàn)Servlet接口位他,提供一個公開的無參數(shù)的構(gòu)造方法氛濒。由Web容器來控制它的創(chuàng)建、初始化鹅髓、提供服務(wù)舞竿、銷毀等。它的各種行為方式通過在web.xml文件中的配置來決定

33.Servlet的生命周期是怎么樣的
Servlet的生命周期分為4個階段:加載窿冯、初始化骗奖、提供服務(wù)和銷毀,這些過程都是由Web容器來掌控醒串。開發(fā)者關(guān)注最多的是初始化和提供服務(wù)兩個階段执桌,在init()方法中,開發(fā)者可以獲取配置在web.xml中的初始化參數(shù)service()方法中的代碼芜赌,會在Servlet的請求來到時被調(diào)用鼻吮。

34.Servlet接口有哪些實現(xiàn)類
在Java EE的SDK中,一共提供了以下3個Servlet接口的實現(xiàn)類

  • javax.faces.webapp.FacesServlet较鼓。用于JSF的Servlet椎木,一般很少使用
  • javax/servlet.GenericServlet。它是一個抽象類博烂,不能直接使用香椎,它提供了除server()方法以外的所有抽象方法的默認(rèn)實現(xiàn),可用于一般的Servlet開發(fā)禽篱。
  • javax.servlet.http.HttpServlet畜伐。該類是開發(fā)者使用最多的一個類,它不但提供了所有抽象方法的默認(rèn)實現(xiàn)躺率,還提供了不同的方法以區(qū)分不同類型的HTTP請求玛界,例如doPost()、doGet()等悼吱。

35.如何在Servlet中獲取請求參數(shù)的值
在Servlet中慎框,任何負(fù)責(zé)做出響應(yīng)的方法(例如,service()后添、doPost()和doGet())都會包含一個ServletRequest對象參數(shù)笨枯,不管是POST還是GET的請求方式节榜,Servlet都可以通過ServletRequest接口的getParameter()或getParameterValues()方法獲取到价说。前者適用于只有一個值的參數(shù),后者多用于有多值的參數(shù)旁涤,例如粱檀,復(fù)選框(checkbox)

//獲取參數(shù)名為username的用戶名洲敢,返回字符串   
String username = request.getParameter("username");
//獲取參數(shù)名為password的密碼,返回字符串
String password = request.getParameter("password");
//獲取參數(shù)名為hobby的愛好數(shù)組茄蚯,返回的是字符串?dāng)?shù)組
String[ ] hobbies = request.getParameterValues("hobby");

36.Forward(轉(zhuǎn)發(fā))和Redirect(重定向)的區(qū)別
Forward和Redirect代表了兩種請求轉(zhuǎn)發(fā)方式:直接請求轉(zhuǎn)發(fā)和重定向压彭。對應(yīng)到代碼里睦优,分別是RequestDispatcher類的forward()方法和HttpServletResponse類的sendRedirect()方法。在Servlet中調(diào)用轉(zhuǎn)發(fā)和重定向的語句如下:

request.getRequestDispatcher("new.jsp").forward(request,response);//轉(zhuǎn)發(fā)
response.sendRedirect("new.jsp");        //重定向
  1. 轉(zhuǎn)發(fā)是服務(wù)器行為哮塞;重定向是客戶端行為
  2. 轉(zhuǎn)發(fā)行為瀏覽器只做一次訪問請求刨秆;重定向行為瀏覽器做至少兩次的訪問請求。
  3. 轉(zhuǎn)發(fā)只能將請求轉(zhuǎn)發(fā)給同一個Web應(yīng)用中的組件忆畅;而重定向不僅可以重定向到當(dāng)前應(yīng)用程序中的其他資源衡未,還可以重定向到同一個站點上的其他應(yīng)用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源家凯。
  4. 轉(zhuǎn)發(fā)方法請求轉(zhuǎn)發(fā)過程結(jié)束后缓醋,瀏覽器地址欄保持初始的URL地址;重定向訪問過程結(jié)束后绊诲,瀏覽器地址欄由初始的URL地址變成重定向的目標(biāo)URL送粱。
  5. 轉(zhuǎn)發(fā)方法的調(diào)用者與被調(diào)用者之間共享相同的request對象和response對象,它們屬于同一個訪問請求和響應(yīng)過程掂之;而重定向的調(diào)用者與被調(diào)用者使用各自的request對象和response對象抗俄,它們屬于兩個獨立的訪問請求和響應(yīng)過程。

37.過濾器的作用和工作原理是什么
對于Web應(yīng)用程序來說世舰。過濾器是處于Web容器內(nèi)的一個組件动雹,它會過濾特定請求資源請求信息和響應(yīng)信息。一個請求來到的時候跟压,Web容器會判斷是否有過濾器與該信息資源關(guān)聯(lián)胰蝠,如果有,則交給過濾器一一的處理震蒋,然后再交給目標(biāo)資源茸塞,響應(yīng)的時候則以相反的順序交給過濾器處理,最后再返回給用戶瀏覽器查剖。
過濾器對應(yīng)Filter接口钾虐,開發(fā)者一般需要實現(xiàn)doFilter()方法,并在web.xml文件夾中提供相應(yīng)的配置梗搅。

38.監(jiān)聽器的作用和工作原理是什么
對于Web應(yīng)用程序來說禾唁,監(jiān)聽器是處于Web容器內(nèi)的一個組件,它會對Web容器中的3種范圍對象進行監(jiān)聽:request无切、session和application。當(dāng)這些范圍對象在創(chuàng)建或銷毀的時候丐枉,Web容器會主動的調(diào)用它們的初始化或銷毀的回調(diào)方法哆键,從而達(dá)到事件響應(yīng)的效果。根據(jù)范圍的不同瘦锹,JavaEE為開發(fā)者提供了如下一些監(jiān)聽器接口籍嘹。

  • Request事件監(jiān)聽器接口ServletRequestListener
  • Session事件監(jiān)聽器接口HttpSessionListener
  • Application事件監(jiān)聽器接口ServletContextListener

39.JSP的運行機制是什么
當(dāng)客戶端發(fā)出一次對某個JSP的請求闪盔,Web容器處理該請求的過程如下:

  1. Web容器會檢驗JSP的語法是否正確
  2. 將JSP文件轉(zhuǎn)換成Servlet的源碼文件
  3. 編譯該源碼文件成為Class文件
  4. 創(chuàng)建一個該Servlet類的對象實例,以Servlet的方式為請求提供服務(wù)

40.JSP的內(nèi)置對象及其用途

  • application:它代表了整個Web應(yīng)用程序辱士,與Servlet上下文是同一個概念
  • session:Http會話對象
  • request:請求對象
  • response:返回對象
  • out:寫出流對象泪掀,用于返回數(shù)據(jù)給客戶端
  • page:普通的頁面對象
  • pageContext:頁面上下文,代表頁面的一個運行環(huán)境颂碘,通過它可以獲取到其他對象异赫,如會話、請求等
  • exception:用于錯誤頁面头岔,通過該對象可獲得異常的詳細(xì)信息
  • config:配置對象塔拳,用于獲取初始化參數(shù)等數(shù)據(jù)

41.JSP如何使用JavaBean
JSP使用JavaBean有兩種方式:夾雜在HTML中的JSP腳本和JSP動作標(biāo)簽<jsp:useBean>

  1. 純JSP實現(xiàn)
    這種方式采用的是純粹的Java代碼來創(chuàng)建JavaBean對象和使用JavaBean,此時的JavaBean跟一個普通類沒什么區(qū)別峡竣,示例代碼如下:
    <%
    HelloBean bean = new HelloBean()靠抑; //創(chuàng)建HelloBean對象
    pageContext.setAttribute("helloBean", bean); //把bean放在page范圍中
    %>
    <%
    HelloBean bean2 = pageContext.setAttribute(); //獲得HelloBean對象
    response.write(bean2.getName()); //使用bean
    %>
  2. 用JSP動作標(biāo)簽訪問JavaBean
    為了簡化JavaBean的使用,JSP還提供了一組動作標(biāo)簽來幫助開發(fā)者使用JavaBean适掰,它們是:
  • <jsp:useBean>颂碧,聲明和創(chuàng)建JavaBean
  • <jsp:setProperty>,為JavaBean的屬性設(shè)置值
  • 用<jsp:getProperty>类浪,獲得JavaBean的屬性值

42.如何使用迭代標(biāo)簽<c:forEach>循環(huán)顯示數(shù)據(jù)

  • 語法:
    1. 使用begin和end屬性進行整數(shù)范圍迭代
      <c:forEach begin="20" end="50" var="i" step="2">
      偶數(shù):<c:out value="${i}"/>

      </c:forEach>
    2. 使用items和var屬性進行集合迭代
      <table>
      <tr>
      <th>編號</th>
      <th>用戶名</th>
      <th>年齡</th>
      <th>性別</th>
      </tr>
      <c:forEach items="${users}" var="user" varStatus="status">
      <tr>
      <th>編號</th>
      <th>用戶名</th>
      <th>年齡</th>
      <th>性別</th>
      </tr>
      </c:forEach>
      </table>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末载城,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子戚宦,更是在濱河造成了極大的恐慌个曙,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件受楼,死亡現(xiàn)場離奇詭異垦搬,居然都是意外死亡,警方通過查閱死者的電腦和手機艳汽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門猴贰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人河狐,你說我怎么就攤上這事米绕。” “怎么了馋艺?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵栅干,是天一觀的道長。 經(jīng)常有香客問我捐祠,道長碱鳞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任踱蛀,我火速辦了婚禮窿给,結(jié)果婚禮上贵白,老公的妹妹穿的比我還像新娘。我一直安慰自己崩泡,他們只是感情好禁荒,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著角撞,像睡著了一般呛伴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靴寂,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天磷蜀,我揣著相機與錄音,去河邊找鬼百炬。 笑死褐隆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的剖踊。 我是一名探鬼主播庶弃,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼德澈!你這毒婦竟也來了歇攻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梆造,失蹤者是張志新(化名)和其女友劉穎缴守,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镇辉,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡屡穗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忽肛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片村砂。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖屹逛,靈堂內(nèi)的尸體忽然破棺而出础废,到底是詐尸還是另有隱情,我是刑警寧澤罕模,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布评腺,位于F島的核電站,受9級特大地震影響淑掌,放射性物質(zhì)發(fā)生泄漏歇僧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一锋拖、第九天 我趴在偏房一處隱蔽的房頂上張望诈悍。 院中可真熱鬧,春花似錦兽埃、人聲如沸侥钳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舷夺。三九已至,卻和暖如春售貌,著一層夾襖步出監(jiān)牢的瞬間给猾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工颂跨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留敢伸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓恒削,卻偏偏與公主長得像池颈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子钓丰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

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

  • 這部分主要是與Java Web和Web Service相關(guān)的面試題躯砰。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,405評論 0 10
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4493113...
    王帥199207閱讀 2,433評論 2 19
  • (一)Java web部分 1.Servlet和jsp頁面過濾器Filter的作用及配置 【參考答案】 過濾器是一...
    獨云閱讀 3,329評論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法携丁,類相關(guān)的語法琢歇,內(nèi)部類的語法,繼承相關(guān)的語法梦鉴,異常的語法李茫,線程的語...
    子非魚_t_閱讀 31,632評論 18 399
  • Java 面試題 整理自庞渴福客網(wǎng) 什么是Java虛擬機?為什么Java被稱作是“平臺無關(guān)的編程語言”快骗? Java虛擬...
    GuaKin_Huang閱讀 10,668評論 19 265