1. 程式人生 > >servlet總結

servlet總結

訪問網站 專用 conf 開發人員 doget() 瀏覽器 說明 翻譯 name

1.說出Servlet的生命周期。
Servlet生命周期有三個方法
init()方法: 實例化Servelet對象後調用的方法。
service()方法:分發客戶端請求到對應的請求類型方法。
destroy()方法:Servlet實例銷毀前調用的方法。


2.forward和redirect的區別.
1.從 地址 欄顯示來說
forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,
然後把這些內容再發給瀏覽器.瀏覽器根本不知道服務器發送的內容從哪裏來的,所以它的地址欄還是原來的地址.
redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL.
2.從 數據 共享來說
forward:轉發頁面和轉發到的頁面可以共享request裏面的數據.
redirect:不能共享數據.
3.從運用地方來說
forward:一般用於用戶登陸的時候,根據 角色 轉發到相應的模塊.
redirect:一般用於用戶 註銷 登陸時返回主頁面和跳轉到其它的網站等.
4.從效率來說
forward:高.
redirect:低.



3.JSP中 動態INCLUDE 與 靜態INCLUDE 的區別?

動態INCLUDE在使用的時候,會先解析所要包含的頁面(你例子中的included.jsp),解析後在和主頁面放到一起顯示;

靜態INCLUDE在使用的時候,不會解析所要包含的頁面(你例子中的included.htm),也就是說,

不管你的included.htm中有什麽,我的任務就是把你包含並顯示,其他的一概不管
jsp:include是先編譯一下included.jsp文件,然後再包含 先編譯,後包含
@ include是先把文件包含就來,然後統一編譯 先包含,後編譯



4.JSP的內置對象有哪些。
Request、Reponse、Out、Session、Application、Cookie、Config、Page、Exception

5.什麽情況下調用doGet()和doPost()?
前臺form是get 就doGet 前臺是post就是doPost

6.什麽是jsp? jsp的作用是什麽?
jsp是什麽?
每一種技術的名稱都一定說明了它的作用。
jsp的全稱為:Java server pages(翻譯:Java服務器頁面),既然它是java的服務器頁面,則它能支持java的代碼編寫的web頁面(.jsp後綴結尾的html文件)。
1、jsp在<%, %>中編寫java代碼
2、既然它是java的服務器頁面,那它就基於sun的JDK來執行,也就是說jsp文件是java文件的某種偽格式。
3、jsp的運行。
1、jsp在tomcat(以後介紹)發布,
2、在瀏覽器訪問過程中jsp會生成:jsp名稱_jsp.java和jsp名稱_jsp.class,這就驗證了
(2、),說明jsp在執行過程中先生成java文件再使用java語法編譯,從而在jvm(虛擬機)執行。

從上面可以看出,jsp是網站的view(視圖),同時還能提供java的執行和顯示結果。它的作用涵蓋了html和java的功能。

7.如何現實jsp的單線程模式 isThreadSafe="false"
它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。
JSP頁面可以包含在多種不同的應用體系結構或者模型中,可以用於由不同協議、組件和格式所組成的聯合體中。
基於JSP的動態信息發布技術是一個開放的、可擴展的建立動態Web頁面的標準。
不論采用什麽創建工具,開發人員都可以使用JSP頁面來創建可移植的Web應用,在不同的Web應用服務器上運行。


8.頁面間對象傳遞參數的方法(就是如何傳值)
1、*.jsp?name=aa
2、request.setAttrabute("aaa");requset.getAttrabute("aaa");session也可以
3、form


9.JSP和Servlet有哪些相同點和不同點,他們之間的聯系是什麽?
jsp和servlet的區別:
1.jsp經編譯後就變成了Servlet.(JSP的本質就是Servlet,JVM只能識別java的類,不能識別JSP的代碼,Web容器將JSP的代碼編譯成JVM能夠識別的java類)
2.jsp更擅長表現於頁面顯示,servlet更擅長於邏輯控制.
3.Servlet中沒有內置對象,Jsp中的內置對象都是必須通過HttpServletRequest對象,HttpServletResponse對象以及HttpServlet對象得到.
Jsp是Servlet的一種簡化,使用Jsp只需要完成程序員需要輸出到客戶端的內容,Jsp中的Java腳本如何鑲嵌到一個類中,由Jsp容器完成。而Servlet則是個完整的Java類,這個類的Service方法用於生成對客戶端的響應。


聯系: JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式。JSP編譯後是“類servlet”。
Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML裏分離開來。
而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側重於視圖,Servlet主要用於控制邏輯。

10.jsp四種會話跟蹤技術
page 當前頁面有效
request 瀏覽器對服務器的一次請求有效,服務器返回請求後失效
session 在服務器規定會話最長時間範圍內有效,對瀏覽器串口和其子窗口。
application 就是對整個正在運行的項目有效了。

11.Request對象的主要方法:
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request對象所有屬性的名字集合,結果是一個枚舉的實例
getCookies():返回客戶端的所有Cookie對象,結果是一個Cookie數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body的長度實例
getInputStream():返回請求的輸入流,用於獲得請求中的數據
getMethod():獲得客戶端向服務器端傳送數據的方法
getParameter(String name):獲得客戶端傳送給服務器端的有name指定的參數值
getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字,結果是一個枚舉的實例
getParameterValues(String name):獲得有name指定的參數的所有值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑

13.MVC的各個部分都有那些技術來實現?如何實現?
它用JSP技術實現視圖的功能,用Servlet技術實現控制器的功能,用JavaBean技術實現模型的功能


14.jsp有哪些動作?作用分別是什麽?
1. jsp:include:在頁面被請求的時候引入一個文件。
2.jsp:useBean:尋找或者實例化一個JavaBean。
3.jsp:setProperty:設置JavaBean的屬性。
4. jsp:getProperty:輸出某個JavaBean的屬性。
5. jsp:forward:把請求轉到一個新的頁面。
6.jsp:plugin:根據瀏覽器類型為Java插件生成OBJECT或EMBED標記。

15.BS與CS的聯系與區別。

B/S與C/S

C/S是Client/Server的縮寫。
服務器通常采用高性能的PC、工作站或小型機,並采用大型數據庫系統,如Oracle、Sybase、Mysql或 SQL Server。
客戶端需要安裝專用的客戶端軟件。

B/S是Brower/Server的縮寫,客戶機上只要一個瀏覽器(Browser),
如Netscape Navigator或Internet Explorer,服務器安裝Oracle、Sybase、Mysql或 SQL Server等數據庫。
在這種結構下,用戶界面完全通過瀏覽器實現,一部分事務邏輯在前端實現,但是主要事務邏輯在服務器端實現。
瀏覽器通過服務端應用同數據庫進行數據交互。
本例中,MyFirstServlet項目就是運行在服務器上的服務端應用,通過瀏覽器輸入URL即可訪問該應用發布的功能。
是一個典型的B/S應用。



16.重定向的方式有那些?
重定向是指頁面重新定位到某個新地址,之前的請求失效,進入一個新的請求,且跳轉後瀏覽器地址欄內容將變為新的指定地址
重定向是通過HttpServletResponse對象的sendRedirect()來實現,該方法相當於瀏覽器重新發送一個請求
response.sendRedirect(path);


17,get提交和post提交的區別?
Get傳參優缺點
優點:
可以通過表單進行傳值,任何寫URL的地方也都可以傳值。
缺點:
傳遞的數據會在地址欄中暴露,傳遞的數據最大1024。



18.session對象銷毀的方式?
destroy()方法:Servlet實例銷毀前調用的方法。


19.cookie和session的區別?
Cookie是一種在客戶端保持HTTP狀態信息的技術,它好比商場發放的優惠卡。
Cookie是在瀏覽器訪問WEB服務器的某個資源時,由WEB服務器在HTTP響應消息頭中附帶傳送給瀏覽器的一片數據,
WEB服務器傳送給各個客戶端瀏覽器的數據是可以各不相同的。
一旦WEB瀏覽器保存了某個Cookie,那麽它在以後每次訪問該WEB服務器時,都會在HTTP請求頭中將這個Cookie回傳給WEB服務器。
WEB服務器通過在HTTP響應消息中增加Set-Cookie響應頭字段將Cookie信息發送給瀏覽器,
瀏覽器則通過在HTTP請求消息中增加Cookie請求頭字段將Cookie回傳給WEB服務器。

Session是服務器端技術,利用這個技術,服務器在運行時可以為每一個用戶的瀏覽器創建一個其獨享的session對象,
由於session為用戶瀏覽器獨享,所以用戶在訪問服務器的web資源時,可以把各自的數據放在各自的session中
,當用戶再去訪問服務器中的其它web資源時,其它web資源再從用戶各自的session中取出數據為用戶服務。
Servlet 提供了 HttpSession 接口,該接口提供了一種跨多個頁面請求或訪問網站時識別用戶以及存儲有關用戶信息的方式。
Servlet 容器使用這個接口來創建一個 HTTP 客戶端和 HTTP 服務器之間的 session 會話。
會話持續一個指定的時間段,跨多個連接或頁面請求。

通過調用 HttpServletRequest 的公共方法 getSession() 來獲取 HttpSession 對象,
如:HttpSession session = request.getSession();


20.jsp的指令有哪些?
Jsp包含三個編譯指令和七個動作指令。
三個編譯指令為:page、include、taglib。
七個動作指令為:jsp:forward、jsp:param、jsp:include、jsp:plugin、jsp:useBean、jsp:setProperty、jsp:getProperty。

22.說說servlet的監聽器
servlet一共提供了三個類型的監聽器類:分別對request、session、application三個作用域對象進行監聽;需要在web.xml文件中配置監聽器;


23.說說servlet的過濾器
實現一個Filter:需實現javax.servlet.Filter接口,重寫該接口下的init、doFilter、destory三個方法; 還需要在web.xml文件中配置當前的filter類;
作用:請求一個服務(servlet或jsp)的時候,可以通過過濾器去攔截相應的任務(亂碼、壓縮、判斷是否登陸、權限控制等)。

servlet總結