servlet面試常考 (轉載)

????????????

  • 編輯???????????????????????? ????????????????????
  • 刪除???????????????????????? ????????????????????

1、說一說Servlet生命周期(非常重要)

Servlet生命周期包括三部分:

初始化:Web容器加載servlet,調用init()方法

處理請求:當請求到達時,運行其service()方法。service()自動派遣運行與請求相對應的doXXX(doGet或者doPost)方法。

銷毀:服務結束,web容器會調用servlet的distroy()方法銷毀servlet。

2、get提交和post提交有何區別

(1)get一般用于從服務器上獲取數據,post一般用于向服務器傳送數據

(2)請求的時候參數的位置有區別,get的參數是拼接在url后面,用戶在瀏覽器地址欄可以看到。post是放在http包的包體中。

比如說用戶注冊,你不能把用戶提交的注冊信息用get的方式吧,那不是說把用戶的注冊信息都顯示在Url上了嗎,是不安全的。

(3)能提交的數據有區別,get方式能提交的數據只能是文本,且大小不超過1024個字節,而post不僅可以提交文本還有二進制文件。

所以說想上傳文件的話,那我們就需要使用post請求方式

(4)servlet在處理請求的時候分別對應使用doGet和doPost方式進行處理請求

3、JSP與Servlet有什么區別

Servlet是服務器端的程序,動態生成html頁面發送到客戶端,但是這樣程序里會有很多out.println(),java與html語言混在一起

很亂,所以后來sun公司推出了JSP.其實JSP就是Servlet,每次運行的時候JSP都首先被編譯成servlet文件,然后再被編譯成

.class文件運行。有了jsp,在MVC項目中servlet不再負責動態生成頁面,轉而去負責控制程序邏輯的作用,控制jsp與javabean

之間的流轉。

4、doGet與doPost方法的兩個參數是什么

HttpServletRequest:封裝了與請求相關的信息

HttpServletResponse:封裝了與響應相關的信息

5、request.getAttribute()和request.getParameter

(1)有setAttribute,沒有setParameter方法

(2)getParameter獲取到的值只能是字符串,不可以是對象,而getAttribute獲取到的值是Object類型的。

(3)通過form表單或者url來向另一個頁面或者servlet傳遞參數的時候需要用getParameter獲取值;getAttribute只能獲取setAttribute的值

(4)setAttribute是應用服務器把這個對象放到該頁面所對應的一塊內存當中,當你的頁面服務器重定向到另一個頁面的時候,應用服務器

會把這塊內存拷貝到另一個頁面對應的內存當中。通過getAttribute可以取得你存下的值,當然這種方法可以用來傳對象。

用session也是一樣的道理,這是說request和session的生命周期不一樣而已。

6、JSP有哪些內置對象,作用是什么?(非常重要)

?

JSP內置對象
名稱作用
request包含用戶端請求的信息
response包含服務器傳回客戶端的響應信息
session與請求有關的會話期
pageContext管理網頁屬性
application服務器啟動時創建,服務器關閉時停止,為多個應用程序保存信息
out向客戶端輸出數據
configservlet的架構部件
page指網頁本身
exception針對錯誤頁面才可使用

7、四種會話跟蹤技術作用域

(1)page:一個頁面

(2)request::一次請求

(3)session:一次會話

(4)application:服務器從啟動到停止。

8、JSP中動態INCLUDE和靜態INCLUDE有什么區別(非常重要)

include指令用于把另一個頁面包含到當前頁面中,在什么時候包含的?再轉換成servlet的時候包含進去的。

動態INCLUDE用jsp:include動作實現 <jsp:include page="included.jsp" flush="true" />它總是會檢查所含文件中的變化,適合用于包含動態頁面,

并且可以帶參數.

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

9、forward和redirect的區別(非常重要)

轉發與重定向

(1)從地址欄顯示來說?

forward是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然后把這些內容再發給瀏覽器.瀏覽器根本不知道服務器發送

的內容從哪里來的,所以它的地址欄還是原來的地址.redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是

新的URL.

(2)從數據共享來說?

forward:轉發頁面和轉發到的頁面可以共享request里面的數據.

redirect:不能共享數據.

(3)從運用地方來說?

forward:一般用于用戶登陸的時候,根據角色轉發到相應的模塊.

redirect:一般用于用戶注銷登陸時返回主頁面和跳轉到其它的網站等.

(4)從效率來說?

forward:高.

redirect:低.

轉載于:https://www.cnblogs.com/HongDunLaoGui/p/7780751.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251573.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

XPath 的使用

XPath 的使用 XPath&#xff0c;全稱XML Path Language&#xff0c;即XML路徑語言&#xff0c;它是一門在XML文檔中查找信息的語言&#xff0c;最初用于搜尋XML文檔&#xff0c;但是也同樣適用于HTML文檔的搜索。前面我們在解析或抽取網頁信息時&#xff0c;使用的是正則表達式…

Node --- EventProxy的原理

EventProxy來自于Backbone的事件模塊,Backbone的事件模塊是Model、View模塊的基礎功能&#xff0c;在前端有廣泛的使用。它在每個非all事件觸發時都會觸發一次all事件&#xff0c;相關代碼如下: // Trigger an event, firing all bound callbacks. Callbacks are passed the /…

spring項目啟動執行特定方法

1. 方法上加注解PostConstructCompantpublic class InitDemo{ PostConstruct public void init(){ //項目啟動就會執行這個方法 doSomething(); }}2.xml配置init-method<bean id"InitDemo" class"com.xxx.InitDemo" scope"singleton" init-me…

WinCC歸檔數據報表控件

1、背景 WinCC實現報表歷來是老大難&#xff0c;自帶的報表功能不好使&#xff0c;又沒有好用的第三方控件。雖然網上也有很多實現報表的方法&#xff0c;但是毫無例外的要求使用者具有腳本編程功底&#xff0c;HwDataReport的出現將終結這一現象。您無需一行腳本即可完成…

vue數組操作不更新視圖問題

vue 觀察數組的變異方法 更新視圖 push&#xff08;&#xff09; pop() shift() unshift() splice(i,n,arr) sort(xx) reverse() ex: app.book.push({ name:css, author:lee }) 有些方法不會改變數組 filter() concat() slice() 返回新數組 需要用 新返回的數組 更新原數組 ap…

java中如何計算兩個時間段的月份差

直接計算&#xff0c;先取得兩個日期的年份和月份&#xff0c;月份差&#xff08;第二年份-第一年份&#xff09;*12 第二月份-第一月份轉載于:https://www.cnblogs.com/pretty-guy/p/3284593.html

Node --- Promise中的多異步協作

當我們需要處理多個異步調用時,應該如何處理呢? //首先假設有2個讀取文件的異步調用,promise1和promise2 var promise1 readFile ("foo.txt", "utf-8"); var promise2 readFile ("bar.txt", "uft-8");//然后,我們可以使用all()方法…

Software-OO 面向對象思維

2017-11-06 11:02:50 所有編程語言的最終目的都是提供一種“抽象”方法。 解決問題的復雜程度直接取決于抽象的種類及質量。這兒的“種類”是指準備對什么進行“抽象”&#xff1f; 匯編是對基礎機器的少量抽象。“命令式”語言是對匯編語言的一種抽象。 &#xff08;Alan Kay …

Go Python 7: 2-Layer Neural Network

轉載于:https://www.cnblogs.com/wordchao/p/9182511.html

LiveWriter測試

test livewriter 轉載于:https://www.cnblogs.com/wujun/archive/2006/11/21/567052.html

第三次實驗報告

項目一 項目分析 本項目目的就是考察我們調用searching類和sorting類中的方法&#xff0c;通過提交測試用例設計情況&#xff08;正常&#xff0c;異常&#xff0c;邊界&#xff0c;正序&#xff0c;逆序&#xff09;確保類的可行性 代碼截圖 排序截圖 運行截圖 項目二 代碼截…

Node --- 構建一個HTTP服務

代碼如下: var http require(http); http.createServer(function (req, res){res.writeHead(200,{Content-Type: text/plain});res.end(Hello World\n); }).listen(1337, 127.0.0.1); console.log(Server running at http://127.0.0.1:1337);運行如下&#xff1a; 詳情見《深…

python中#!/usr/bin/python與#!/usr/bin/env python的區別

目的是在運行python腳本的時候告訴操作系統我們要用python解釋器去運行py腳本 所以我們在第一句往往會寫如下兩句中的其中一句&#xff1a; #!/usr/bin/python或 >#!/usr/bin/env python 就是說在沒有在執行程序時指出用什么程序運行py腳本時,系統會去調用python程序來執行。…

頁面級緩存@ OutputCache

最近要用到緩存&#xff0c;所以才去找了相關資料&#xff0c;開始在一個用戶控件頭加入 OutputCache指令&#xff0c;發現第一次進入頁面是對了&#xff0c;第二次再進入時就出錯了。郁悶……這里 OutputCache的一些參數說明: 以聲明的方式控制 ASP.NET 頁或頁中包含的用戶控件…

$.ajax的一些坑啊

1.如果發送ajax返回的數據為json務必設置其 Content-Type:application/json;charsetUTF-8不然會導致其success:function(data)中的data返回的為字符串&#xff0c;導致后面的文本解析失敗 轉載于:https://www.cnblogs.com/lonecloud/p/7794670.html

JavaScript --- 解析Cookie

var parseCookie function(cookie){var cookies {};if(!cookie){return cookies;}var list cookie.split(;);for (var i0;i<list.length;i){var pair list[i].split();cookies[pair[0].trim()] pair[1];}return cookies; };

DDR3和eMMC區別

DDR3內存條和eMMC存儲器區別&#xff1a; 1. 存儲性質不同&#xff1b;2. 存儲容量不同&#xff1b;3. 運行速度不同&#xff1b;4. 用途不同。 具體區別如下&#xff1a; 1、存儲性質不同&#xff1a;eMMC是非易失性存儲器&#xff0c;不論在通電或斷電狀態下&#xff0c;數據…

Sql Server臨時表中插入標示列

select ROW_NUMBER() over( order by sort_id asc) as rows,* into #tmp_tb from tb_district 其中sort_id為您原表的排序列。 tb_district為要操作的表。 轉載于:https://www.cnblogs.com/daretodream/archive/2013/04/03/2997800.html

17秋 軟件工程 團隊第五次作業 Alpha Scrum3

17秋 軟件工程 團隊第五次作業 Alpha Scrum3 今日完成的任務 杰麟&#xff1a;java后端學習&#xff1b;世強&#xff1a;Android的部門基礎信息模塊的信息顯示和對接后臺&#xff1b;港晨&#xff1a;后臺管理登陸界面ui設計&#xff1b;樹民&#xff1a;超級管理員Web后端數據…

Node --- Basic認證

Basic認證: 當客戶端與服務器端進行請求時,允許通過用戶名和密碼實現的一種身份認證方式. // 如果一個頁面需要Basic認證,它會檢查請求報文頭中的Authorization字段的內容,該字段的值由認證方式和加密值構成: $ curl -v "http://user:passwww.baidu.com/" > GET …