準備校招,Java Web基礎面試看這篇就夠了
整理的面試題筆記:
1,CGA,ASP,ASP.NET,PHP,servlet,JSP等
2,是BS,即瀏覽器服務器的形式,是基于特定HTTP通信協議的CS架構,對CS的一種變化或者改進,
3,瀏覽器請求-服務器處理請求-響應結果返回瀏覽器
客戶通過URL地址發送的請求轉換為標準的HTTP請求,Web服務器首先需要檢查請求的文件地址是否正確,若錯誤,返回錯誤信息,若正確,服務器將根據請求的GET或POST方法及文件的類型進行相應的處理,將結果以HTML或XML或著二進制文件等數據形式表示。并按照HTTP協議的響應消息格式反饋給瀏覽器,瀏覽器會根據消息附帶的信息查看并顯示該信息。
4,Servlet生命周期是由Servlet容器負責管理的,Servlet 本身并不是直接運行的虛擬機上,Servlet生命周期是指Servlet實例從創建到響應客戶端請求,直至銷毀的過程,會經過創建,初始化,服務可用,服務不可用,處理請求,終止服務和銷毀服務7種狀態。
涉及到三個方法:init(),Service(),destory()。
加載和實例化:Servlet創建,在服務器運行中,客戶機首次向Servlet發送請求,重新裝入Servlet時,在為Servlet配置了自動裝入選項(load-on-startup)時。
初始化:Servlet容器調用Servlet的init(ServletConfig config)方法來對Servlet實例進行初始化。讀取固定數據,初始化JDBC連接等資源連接,init()方法的參數ServletConfig對象由Servlet容器創建并傳遞給Servlet,一直存在,直到銷毀。
處理請求:服務器接受到客戶端請求后,會為該請求創建一個請求對象和響應對象,并調用service()方法,service()方法在調用其他方法。
銷毀:當Servlet容器需要終止Servlet,它會先調用Servlet的destroy()方法.
5,四種,
*其一,通過超鏈接形式查詢數據;
語法鏈接文本
//即Web中以GET方式提交數據。數據部分和地址部分由?隔開,參數之間由&隔開,但安全性差,以明文方式顯示。在發送的請求的URI地址可以是絕對地址,也可以是相對地址,開發中一般使用相對地址,便于開發移植。
*其二,通過Form表單形式更新數據;
語法:
其三,通過Ajax實現異步訪問。
$.ajax({ url:'/ExampleServlet', type:'post', dataType:'json', success:function(data){alert('成功!');alert(data);}, error:function(){alert('內部錯誤');} });
其四,通過JS語句實現
6,重定性和請求轉發是Servlet中對新的URL地址的轉向的兩種主要方式:
1,重定向:指由原請求地址重新定位到某個新地址,原有的請求失效,客戶端看到的是新的請求返回的響應結果,客戶端瀏覽器地址欄變成了新的請求地址,在重定性過程中客戶端和服務器會經過兩次請求和兩次響應,其中第二次請求由客戶端發起。第一次請求到服務器后,由服務器響應指定重定向的第二請求(返回3開頭的狀態碼),客戶端第二請求發出,最后經過服務器發返回響應。
重定向通過HttpServletResponse對象的sendRedirect()方法實現的,該方法會通知客戶端去重新訪問新指定的URL地址,
public void sendRedirect(string location)throws java.io.IOExcetion
//location為重定向的URL地址,可以是相對路勁或絕對路徑,可以重定向到當前應用程序中的資源,還可以重定向到同一站點的其他資源,使用絕對URL可以定位到其他站點的資源。
2,請求轉發:指將請求轉發到其他地址,使用同一個請求,轉發后的瀏覽器地址內容不變,即經過一次請求響應,轉發過程發生在服務器內部,服務器只能從當前應用內部查找相應的轉發資源,而不能轉發其他資源,
使用RequesDispatcher接口中的forward()方法來實現,該方法可以把請求轉發給另外一個資源,并讓該資源對此請求進行響應RequestDispatcher接口還有一個include()//將其他資源并入到當前請求中。RequestDispatcher是一個接口,需要通過使用HttpResquest對象的getrequesDispatcher()方法獲得該接口的實例對象。
RequestDispatcher dispatcher =request .getrequestDispatcher(String path) .forward(ServletRequeste request,Servletresponse response);
轉發只能將請求轉發給同一個Web應用中的組件,重定向可以重定向到當前資源,同一個站點的其他資源,以及其他站點資源。
重定向訪問后的URL會發生改變,請求轉發URL地址保持不變。
重定向是由服務器告訴瀏覽器去重新請求一個URL,是客戶端行為,請求轉發是服務器程序內部發生轉發行為,
請求轉發服務器之間共享請求對象和響應對象,屬于同一個訪問請求過程,重定向調用者與被調用者使用各自的請求和轉發對象。屬于兩個獨立的訪問請求和響應過程。
7,
容器在初始化一個Servlet時,會為這個Servlet創建一個ServletConfig對象,并將這個對象通過init(ServletConfig config)方法傳遞并保存在此Servlet對象中,使用ServletConfig接口中的方法主要可以訪問兩項內容:
Servlet初始化參數和ServletContext對象,
前者通過由容器從Servlet的配置屬性中讀取(在Servlet的init()方法中調用ServletConfig參數getInitParameter()方法來獲取初始化參數的值,)
后者為Servlet提供有關的容器信息(調用ServletConfig對象的getServletContext()方法來獲取ServletContext對象。)
8,
ServletContext對象代表當前Servlet運行環境,Servlet容器在啟動一個Web應用時,會為該應用創建一個唯一 的ServletContext對象供該應用中的所有Servlet對象共享,Servlet對象可以通過ServletContext來訪問容器中的各種資源。
ServletContext對象可以獲得應用范圍的初始化參數,在應用范圍內存取共享數據,訪問當前Web應用的信息,訪問當前容器的信息和輸出日志和訪問服務器端的文件系統資源。
9,
HttpServletRequest接口用于封裝HTTP請求信息,對象用于獲取請求報文信息,獲取網絡連接信息和存取請求域屬性。ServletContext對象,HttpServletRequest對象具有相同的存取域的方法。
HttpServletResponse接口用于封裝HTTP響應信息,創建響應報文。
10,
ServletContext對象的getInitParameter()方法用來訪問整個應用范圍內的初始化參數,參數通過web.xml的元素來指定,所有的servlet都可訪問,
ServletConfig對象對象的getInitParameter()方法用來訪問當前Servlet的初始化參數,參數通過web.xml的來指定。僅當前配置的Servlet可訪問。
11,
ServletContext對象通過setAttribute(name,value)方法來存取自定義屬性,通過getAttribute(name)來取自定義屬性值。
ServletContext對象的自定義屬性也被稱為應用域屬性,表示在web應用的整個生命周期內,可以被web應用范圍內的所有組件所共享
12,
HttpServletrequest對象通過setAttribute(name,value)方法來自定義一個域屬性,
HttpServletRequest對象自定義屬性也被稱為請求域屬性,表示在本次請求和響應的生命周期內供本次請求對象所訪問,
13,
通過HttpServletResponse對象調用getOutputStream()方法獲取字節輸出流對象ServletOutputStream,用于創建包含二進制數據的響應正文,
通過調用getWriter()方法獲取字符輸出流對象PrintWriter,用于創建包含字符數據的響應正文。
14,
Session和Cookie是兩種會話跟蹤技術,HTTP是一種無狀態協議,利用Session和Cookie可以實現多次請求之間的數據共享。
Cookie 是由 Web 服務器保存在用戶瀏覽器(客戶端)上的小文本文件,cookie本身有一定的大小限制,,每個cookie所存放的數據不能超過4KB。cookie由一些鍵值對(cookieName–value)構成,根據cookieName來檢索的cookie中的信息,它可以包含有關用戶的信息。當cookie到達過期時間時,cookie就會被刪除,默認情況下,當瀏覽器關閉時cookie立即失效,對于長期的Cookie,會保存在磁盤中,無論何時用戶鏈接到服務器,Web 站點都可以訪問 Cookie 信息。
Session技術是指使用HttpSession會話實現會話跟蹤技術,HttpSession對象是Javax.servlet.http.HttpSession接口的實例,也稱會話對象,該對象用來保存單個用戶訪問時的 一些信息,是服務器在無狀態的Http協議下用來識別和維護具體某個用戶的重要方式。
HttpSession對象會在用戶第一次訪問服務器時由容器創建(在訪問JSP,Servlet,等程序才會創建,只訪問HTML,IMAGE等靜態資源并不會創建),當用戶調用其失效方法(invalidate())或超過其最大不活動時間時會失效,在此期間,用戶與服務器之間的多次請求都屬于同一個會話。服務器在創建會話時,會分配一個唯一的會話標識:SessionId,以“JSESSIONID”的屬性名保存在客戶端Cookie中,在用戶隨后的請求的中,通過JSESSIONID屬性來識別不同的用戶。實現每個用戶的會話跟蹤。
聯系:
session是通過cookie來工作的,session依賴于Cookie,服務器在創建會話時,會分配一個唯一的會話標識:SessionId,以“JSESSIONID”的屬性名保存在客戶端Cookie中,在用戶隨后的請求的中,通過Cookie中的JSESSIONID屬性來識別不同的用戶。實現每個用戶的會話跟蹤。
區別:
1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
5,對于Java Web來說,Cookie只能保存Sting類型的KV對,Session可以存放Object類型的KV。
6,Session不區分訪問路徑,同一個用戶在訪問一個網站期間,所有的請求地址都可以訪問到Session,而Cookie如果設置參數路徑,那么同一網站中不同路徑下的Cookie是相互訪問不到的。
15,
URL重寫技術:在客戶端瀏覽起完全禁用了Cookie后,通過在請求地址后附加會話標識的URL重寫技術任可實現會話的跟蹤技術。
隱藏表單域:利用Form表單的隱藏表單域,可以在完全脫離瀏覽器對Cookie的使用權限以及在用戶無法顯示頁面看到的隱藏標識的情況下,將標識隨請求一起穿送給服務器處理。實現會話跟蹤。
16,
HttpSession對象會在用戶第一次訪問服務器有容器創建,在用戶調用其失效方法或超過最大不活動時間時失效。
17,
1,客戶端向服務器發送JSP頁面請求。
2,容器檢索請求的JSP頁面,第一次請求,則將靜態數據和動態數據轉換為Java代碼,將JSP文件翻譯為一個Java文件。
3,容器將翻譯后的Servlet源代碼編譯為字節碼文件,對于Tomcat而言,生成的字節碼文件默認存放在
4,編譯后的字節碼文件被加載到容器內存中執行,并根據用戶的請求生成HTML格式的響應內容
5,容器將響應內容返回客戶端
當同一個JSP頁面再次被請求時,只要該JSP文件沒有發生過改變,容器將直接調用已加載的字節碼文件,而不會再執行翻譯和編譯的過程
18,
腳本元素:腳本<%%>,表達式<%=%>,聲明<%!%>注釋<%-- --%>
指令元素:<%@page%>,<%@include%>,<%@taglib%>
動作元素:< jsp:include>,< jsp:forward>,< jsp:param>,< jsp:userBean>’
19,
include指令元素和動作元素都是實現包含文件代碼復用。
對于包含文件的處理指令和方式不同,include指令元素在翻譯階段就引入所包含的文件,被處理的文件在邏輯上和語法上依賴于當前的JSP頁面,優點是執行速度快。include動作元素是JSP頁面在運行時才引入包含的文件所產生的應答文本,被包含的文件在邏輯和語法上獨立于當前JSP頁面,其優點是可以使用param子元素更加靈活的處理所需要的文件,缺點是執行速度慢一些。
20,
21,
EL即表達式語言,最大的優勢是可以方便的訪問JSP的隱含對象的JavaBean組件,
EL隱含對象:
與范圍有關的隱含對象:pageScope,requestScope,sessionScope,applicationScope.
與請求參數有關的對象:param,paramValues。對post與Get請求都適用
其它的隱含對象:pageConrext,header,headerValues,cookie,initParam。
22,
JSTL主要提供給Java Web開發人員一個標準通用的標簽函數庫,標簽庫同時支持EL獲取數據,Web開發人員能夠利用此標簽函數庫取代直接在頁面中嵌入Java程序的做法。
核心標簽庫:
通用標簽,用于操作變量:
條件標簽,用于流程控制
迭代標簽,用于循環遍歷集合
函數標簽庫:是一些對String對象的操作。
23,
過濾器(Filter):也稱之為-,當用戶的請求到達所請求的資源之前。可以借助過濾器來改變這些請求的內容,此過程也稱之為“預處理”,當執行結果要響應到用戶之前,可以經過過濾器修改響應輸出的內容,此過程稱為"后處理"
+-(Listener):Servlet API 提供了大量-接口實現對Web應用內特定的事件進行監聽,當Web應用中特定事件發生時,回調-內的事件監聽方法。
24,MVC(Model-View-Controller):模式是一種體系結構,
有三個組成部分,Model(模型),View(視圖)和Controller(控制器)。
MVC結構的每個部分具有各自的功能,作用,并以最少的耦合協同工作,提高可擴展性和可維護性。
MVC模式是交互式應用程序最廣泛使用的一種體積結構,能夠有效的將界面顯示,流程控制,和業務處理相分離,
**模型層(Model)**:
是應用系統的核心層,負責封裝數據和業務操作。模型層可以分為數據模型和業務模型。數據模型用來對用戶請求的數據和數據庫查詢的數據進行封裝,業務模型用來對業務處理邏輯進行封裝,控制器(Controller)將用戶請求數據和業務處理邏輯交給相應的模型,視圖(View)從模型中獲取數據,模型改變時通知視圖數據更新,維護具有彈性。
+**視圖層(View)**:
視圖層主要是指與用戶交互的界面,即應用程序的外觀。當做用戶的操作接口,輸入數據和顯示數據處理后的結果,用戶通過視圖輸入數據,轉交給控制器,控制器根據用戶的請求調用相應的數據模型和業務模型進行處理,選擇合適的視圖,視圖調用模型對結果數據進行顯示,同時當模型更新數據時,視圖也隨之更新。
**控制層(Controller)**:
控制整個系統的處理流程,介于視圖層和模型層之間。進行數據傳遞和流程轉向,控制層接受用戶的請求和數據,做出判斷將請求和數據交由那個模型來處理,最后將結果交由視圖來顯示模型返回的數據。
嗯,某些原因,整理了這份Java Web的面試知識點。感覺這些技術有些舊了,不太會考太多。加油生活!^_^.
2019.7.19
Servlet web前端
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。