天天看點

面試常問的Java Web題集

面試常問的Java Web題集

對于我們大部分人而言,在進入自己心儀的公司之前少不了準備工作,有一份全面細緻面試題将幫助我們減少許多麻煩。之前給大家整理了一些Java基礎方面常見的面試題,現在再整理一些JavaWeb方面常見的面試題,一方面幫助自己鞏固下基礎,另一方面也希望幫助想要換工作的朋友,看完之後如果你有更好的總結歡迎留言讨論分享。

面試常問的Java Web題集
 01 說一說selvet的生命周期

servlet 有良好的生存期的定義,包括加載和執行個體化、初始化、處理請求以及服務結束。 這個生存期由

javax.servlet.Servlet 接口的 init,service 和 destroy 方法表達。  

Servlet 被伺服器執行個體化後,容器運作其 init 方法,請求到達時運作其 service 方法,service 方法自動派遣運作與請求對應的 doXXX 方法(doGet,doPost)等,當伺服器決定将執行個體 銷毀的時候調用其 destroy 方法。 web 容器加載 servlet,生命周期開始。通過調用 servlet 的 init()方法進行 servlet 的初始化。通過調用 service()方法實作,根據請求的不同調用不同的do***()方法。結束服務,web 容 器調用 servlet的

destroy()方法

 02 forward 和 redirect的差別

forward 是伺服器請求資源,伺服器直接通路目标位址的 URL,把那個 URL 的響應内容讀 取過來,然後把這些内容再發給浏覽器,浏覽器根本不知道伺服器發送的内容是從哪兒來的, 是以它的位址欄中還是原來的位址。 

redirect 就是服務端根據邏輯,發送一個狀态碼,告訴浏覽器重新去請求那個位址,一般來 說浏覽器會用剛才請求的所有參數重新請求,是以 session,request參數都可以擷取。 

03 Spring MVC 整合

1.首先,要在web.xml裡面配置SpringMVC的核心控制器,DispatcherServlet,對指定的字尾請求進行攔截。

2.Controller層要加@Controller注解,表明該類是MVC的控制層。

3.建立Service接口,給接口加上注解@Component或者@Service表明這是Service業務處理層

4.在Controller層聲明Service變量(屬性),給變量(屬性)加上@Autowired注解,通過自動綁定機制将Service注入到Controller。 

(注:@Autowired預設是ByType,如果想根據屬性名注入,那麼就再加上注解

@Resource(name="屬性名"))

5.在Controller層的方法上加上注解@RequestMapping("requestAddress")表明該方法的請求位址

6.Dao層要加上注解@Repository表明這是資料庫持久層

7.同樣将dao執行個體注入到service層中。

8.配置視圖解析器“InternalResourceViewResolver”

對于處理後的跳轉進行統一配置

04 JSP和 Servlet有哪些相同點和不同點

JSP 是 Servlet技術的擴充,本質上是 Servlet 的簡易方式,更強調應用的外表表達。JSP 編譯後是"類

servlet"。Servlet 和 JSP 最主要的不同點在于,Servlet 的應用邏輯是在 Java 檔案中,并且完全從表示層中的 HTML 裡分離開來。而 JSP 的情況是 Java 和

HTML 可以 組合成一個擴充名為.jsp 的檔案。JSP 側重于視圖,Servlet主要用于控制邏輯。

05 MVC的各個部分都有那些技術來實作

MVC 是

Model-View-Controller的簡寫。

Model 代表的是應用的業務邏輯(通過 JavaBean,EJB 元件實作)

View 是應用的表示面(由 JSP 頁面産生)

Controller是提供應用的處理過程控制(一般是一個 Servlet)

通過這種設計模型把應用邏輯,處理過程和顯 示邏輯分成不同的元件實作。這些元件可以進行互動和重用。

06 JSP隐視對象中四個作用域的作用範圍

四個作用域從大到小的順序為:

appliaction>session>request>page

application:全局作用範圍,整個應用程式共享.生命周期為:應用程式啟動到停止。

session:會話作用域,當使用者首次通路時,産生一個新的會話,以後伺服器就可以記住這個會話狀态。

request:請求作用域,就是用戶端的一次請求。

page:一個JSP頁面。

以上作用範圍使越來越小, request和page的生命周期都是短暫的

他們之間的差別就是:一個request可以包含多個page頁(include,forward)。

07 項目的生命周期 

1.需求分析

2.概要設計

3.詳細設計(用例圖,流程圖,類圖)

4.資料庫設計(powerdesigner)

5.代碼開發(編寫)

6.單元測試(junit 白盒測試)(開發人員)

svn版本管理工具(送出,更新代碼,文檔)

7.內建測試 (黑盒測試,loadrunner(編寫測試腳本)(進階測試))

8.上線試運作 (使用者自己體驗)

9.壓力測試(loadrunner)

10.正式上線 

11.維護

08 session和cookie的差別

session是存儲在伺服器端,cookie是存儲在用戶端的,是以安全來講session的安全性要比cookie高,然後我們擷取session裡的資訊是通過存放在會話cookie裡的sessionid擷取的。又由于session是存放在伺服器的記憶體中,是以session裡的東西不斷增加會造成伺服器的負擔,是以會把很重要的資訊存儲在session中,而把一些次要東西存儲在用戶端的cookie裡。

cookie确切的說分為兩大類分為會話cookie和持久化cookie,會話cookie确切的說是存放在用戶端浏覽器的記憶體中,是以說他的生命周期和浏覽器是一緻的,浏覽器關了會話cookie也就消失了,然而持久化cookie是存放在用戶端硬碟中,而持久化cookie的生命周期就是我們在設定cookie時候設定的那個儲存時間,然後我們考慮一問題當浏覽器關閉時session會不會丢失,從上面叙述分析session的資訊是通過sessionid擷取的,而sessionid是存放在會話cookie當中的,當浏覽器關閉的時候會話cookie消失是以我們的sessionid也就消失了,但是session的資訊還存在伺服器端,這時我們隻是查不到所謂的session但它并不是不存在。那麼,session在什麼情況下丢失,就是在伺服器關閉的時候,或者是sessio過期,再或者調用了invalidate()的或者是我們想要session中的某一條資料消失調用session.removeAttribute()方法,然後session在什麼時候被建立呢,确切的說是通過調用session.getsession來建立,這就是session與cookie的差別。

原文釋出時間為:2018-09-14

本文作者:全棧開發者社群

本文來自雲栖社群合作夥伴“

全棧開發者社群

”,了解相關資訊可以關注“

”。