posts - 4,comments - 30,trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(6)

          我參與的團隊

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          一、Jsp方面

          1、forward 和redirect的區(qū)別

            答:forward是服務(wù)器請求資源,服務(wù)器直接訪問目標地址的URL,把那個URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。

            redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址,一般來說瀏覽器會用剛才請求的所有參數(shù)重新請求,所以session,request參數(shù)都可以獲取。

          2、jsp有哪些內(nèi)置對象?作用分別是什么?

            答:JSP共有以下9種基本內(nèi)置組件(可與ASP的6種內(nèi)部組件相對應(yīng)):

            request 用戶端請求,此請求會包含來自GET/POST請求的參數(shù)
            response 網(wǎng)頁傳回用戶端的回應(yīng)
            pageContext 網(wǎng)頁的屬性是在這里管理
            session 與請求有關(guān)的會話期
            application servlet正在執(zhí)行的內(nèi)容
            out 用來傳送回應(yīng)的輸出
            config servlet的構(gòu)架部件
            page JSP網(wǎng)頁本身
            exception 針對錯誤網(wǎng)頁,未捕捉的例外

          3、jsp有哪些動作?作用分別是什么?

            答:JSP共有以下6種基本動作:

            jsp:include:在頁面被請求的時候引入一個文件。
            jsp:useBean:尋找或者實例化一個JavaBean。
            jsp:setProperty:設(shè)置JavaBean的屬性。
            jsp:getProperty:輸出某個JavaBean的屬性。
            jsp:forward:把請求轉(zhuǎn)到一個新的頁面。
            jsp:plugin:根據(jù)瀏覽器類型為Java插件生成OBJECT或EMBED標記

          4、JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?

            答:動態(tài)INCLUDE用jsp:include動作實現(xiàn)。<jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)

            靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面:<%@ include file="included.htm" %>

          5、兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?

            答:有兩種,分別為:

            <jsp:include page="included.jsp" flush="true">
            <jsp:forward page= "nextpage.jsp"/>

            前者頁面不會轉(zhuǎn)向include所指的頁面,只是顯示該頁的結(jié)果,主頁面還是原來的頁面。執(zhí)行完后還會回來,相當于函數(shù)調(diào)用。并且可以帶參數(shù).后者完全轉(zhuǎn)向新頁面,不會再回來。相當于go to 語句。

          6、JSP的內(nèi)置對象及方法。

            答:request表示HttpServletRequest對象。它包含了有關(guān)瀏覽器請求的信息,并且提供了幾個用于獲取cookie, header, 和session數(shù)據(jù)的有用的方法。

            response表示HttpServletResponse對象,并提供了幾個用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)

            out對象是javax.jsp.JspWriter的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出結(jié)果。

            pageContext表示一個javax.servlet.jsp.PageContext對象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對象的API,并且包裝了通用的servlet相關(guān)功能的方法。

            session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯用戶的狀態(tài)信息

            applicaton 表示一個javax.servle.ServletContext對象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息

            config表示一個javax.servlet.ServletConfig對象。該對象用于存取servlet實例的初始化參數(shù)。

            page表示從該頁面產(chǎn)生的一個servlet實例

          二、Servlet方面

          1、說一說Servlet的生命周期?

            答:servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務(wù)結(jié)束。這個生存期由 javax.servlet.Servlet接口的init,service和destroy方法表達。 Servlet被服務(wù)器實例化后,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應(yīng)的doXXX 方法(doGet,doPost)等,當服務(wù)器決定將實例銷毀的時候調(diào)用其destroy方法。

            與cgi的區(qū)別在于servlet處于服務(wù)器進程中,它通過多線程方式運行其service方法,一個實例可以服務(wù)于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,服務(wù)完成后就銷毀,所以效率上低于servlet。

          2、JAVA SERVLET API中forward() 與redirect()的區(qū)別?

            答:前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送 請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣 也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務(wù)器上的資源,則必須使用sendRedirect()方法。

          3、Servlet的基本架構(gòu)

            答:

          public class ServletName extends HttpServlet {
          public void doPost(HttpServletRequest request, HttpServletResponse response) throws
          ServletException, IOException {
          }
          public void doGet(HttpServletRequest request, HttpServletResponse response) throws
          ServletException, IOException {
          }
          }

          3、什么情況下調(diào)用doGet()和doPost()?

            答:Jsp頁面中的form標簽里的method屬性為get時調(diào)用doGet(),為post時調(diào)用doPost()。

          4、servlet的生命周期

            答:web容器加載servlet,生命周期開始。通過調(diào)用servlet的init()方法進行servlet的初始化。通過調(diào)用 service()方法實現(xiàn),根據(jù)請求的不同調(diào)用不同的do***()方法。結(jié)束服務(wù),web容器調(diào)用servlet的destroy()方法。

          5、如何現(xiàn)實servlet的單線程模式

            答:<%@ page isThreadSafe="false"%>

          6、頁面間對象傳遞的方法

            答:request,session,application,cookie等

          7、JSP和Servlet有哪些相同點和不同點,他們之間的聯(lián)系是什么?

            答:JSP是Servlet技術(shù)的擴展,本質(zhì)上是Servlet的簡易方式,更強調(diào)應(yīng)用的外表表達。JSP編譯后是"類servlet"。 Servlet和JSP最主要的不同點在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是 Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯。

          8、四種會話跟蹤技術(shù)

            答:會話作用域ServletsJSP 頁面描述

            page否是代表與一個頁面相關(guān)的對象和屬性。一個頁面由一個編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒有 include 動作)表示。這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁面

            request是是代表與 Web 客戶機發(fā)出的一個請求相關(guān)的對象和屬性。一個請求可能跨越多個頁面,涉及多個 Web 組件(由于 forward 指令和 include 動作的關(guān)系)

            session是是代表與用于某個 Web 客戶機的一個用戶體驗相關(guān)的對象和屬性。一個 Web 會話可以也經(jīng)常會跨越多個客戶機請求

            application是是代表與整個 Web 應(yīng)用程序相關(guān)的對象和屬性。這實質(zhì)上是跨越整個 Web 應(yīng)用程序,包括多個頁面、請求和會話的一個全局作用域

          9、Request對象的主要方法

            答:

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

          10、我們在web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出一個某種編碼的字符串?

            答:

          Public String translate (String str) {
          String tempStr = "";
          try {
          tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
          tempStr = tempStr.trim();
          }
          catch (Exception e) {
          System.err.println(e.getMessage());
          }
          return tempStr;
          }

          11、Servlet執(zhí)行時一般實現(xiàn)哪幾個方法?

            答:

            public void init(ServletConfig config)
            public ServletConfig getServletConfig()
            public String getServletInfo()
            public void service(ServletRequest request,ServletResponse response)
            public void destroy()
          posted on 2007-08-30 11:39 蠻哥♂楓 閱讀(1509) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 松桃| 阿图什市| 华亭县| 武川县| 页游| 应城市| 静乐县| 溧水县| 玛沁县| 密云县| 阿克苏市| 泗洪县| 长治县| 浦城县| 鄂州市| 南雄市| 灌阳县| 长春市| 太白县| 印江| 岗巴县| 资源县| 伊金霍洛旗| 平乐县| 磐石市| 二连浩特市| 竹山县| 汤原县| 金塔县| 威海市| 威宁| 龙江县| 渝中区| 仁化县| 白玉县| 滦南县| 江阴市| 大庆市| 普兰店市| 蓬莱市| 仙居县|