您好,登錄后才能下訂單哦!
小編給大家分享一下Java中Servlet常見面試題有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1:什么是B/S和C/S
Browser/Server瀏覽器/服務器(瘦客戶端)
Custom/Server 客戶端/服務器(胖客戶端)
2:描述war包、jar包、ear包的結構
war-
--myweb
---WEB-INF
----web.xml
----lib
----classes
jar-
--myjar
---META-INF
----.MF
ear-
--META-INF
---Application.xml
--.war
--.jar
3:什么是servlet?servlet主要做什么?
網絡服務的請求和響應方式
通過WEB瀏覽器調用servlet的方法,主要是在服務端寫動態代碼與服務器端交流;
4:servlet 與cgi相比的優點?servlet的缺點
優點:
性能(線程比進程更快)
可伸縮
Java強健且面向對象
Java獨立的平臺
缺點:
處理代碼(業務邏輯)與HTML(表現邏輯)混合在一起
5:常用的servlet包的名稱是?
javax.servlet
javax.servlet.http
6:描述servlet接口的層次結構?
Servlet
--genericServlet
--HttpServlet
--自己的servlet
ServletRequest
ServletResponse
7:對比get方法和post方法?
get方法: 請求對服務器沒有負面影響,Form數據量小,數據的內部應在url中可見; 明文傳輸,安全度低。
post方法:請求的數據過程改變服務器的狀態,Form數據量大,數據的內部應在url中不可見,安全度高;
8:歸類描述HttpServletRequest接口都完成那些功能
1.讀取和寫入HTTP頭標
2.取得和設置cookies
3.取得路徑信息
4.標識HTTP會話。
9:歸類描述HttpServletResponse接口都完成那些功能
HttpServletResponse加入表示狀態碼、狀態信息和響應頭標的方法,它還負責對URL中寫入一Web頁面的HTTP會話ID進行解碼。
10:描述Service方法所完成的基本功能?默認是在那里實現的?
service方法是在servlet生命周期中的服務期,根據HTTP請求方法(GET、POST等),將請求分發到doGet、doPost等方法
HttpServlet類實現
11:如何開發自己的Servlet?描述應該做的步驟和每步需要完成的工作
1.引jar包
1)構建開發環境 common包-->lib包-->servlet--->api.jar
2.開發servlet類
1)首先繼承HttpServlet
2)實現 doGet() doPost()
3)定義 doGet() doPost()
3.建個web應用
4.部署
安裝web容器,例如Tomcat
在Tomcat的webapps目錄下新建一個文件夾作為web程序的根
在根下新建一個名為WEB-INF的文件夾,里面建立一個web.xml的文件、一個classes的文件夾、一個lib文件夾按照servlet的DTD配置web.xml文件。
把編譯好的servlet的class文件復制到classes目錄下lib文件存放程序所需要的jar包
12:為何servlet需要部署描述?
servlet需要配置web.xml文件來使容器認識servlet程序
13:Servlet基本的描述應該是?請寫出來
<servlet> <servlet-name>Hello</servlet-name> <servlet-class>sl314.web.FormBasedHello</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/greeting</url-pattern> </servlet-mapping>
14:如何在html中使用servlet
FORM標記
ACTION– 指定form信息的目的地(相關的URL)
METHOD – 指定HTTP方法(GET或POST)
語法:
<FORM ACTION=’servlet-URL’ METHOD=’{GET|POST}’>
{HTML form tags and other HTML content}
</FORM>
15:如何接受request中的參數
String userName = (String)request.getParameter("userName")方法
16:如何接受request中header的值
request.getHeader(name);
request.getHeaders(names);等
17:如何輸出html
PrintWriter pw = response.getWriter();
pw.write("<html>");
pw.write("Hello");
pw.write("</html>");
18:如何設置輸出的contentType
response.getContentType()
19:描述servlet的生命周期?
生命周期是指servlet實例在web容器中從:首次創建調用init方法開始初始化期,經過service方法運行期,一直到destory方法銷毀期 結束
servlet實例的生命周期由web容器來管理
20:描述init,service,destroy方法的功能和特點
init方法: 是在servlet實例創建時調用的方法,用于創建或打開任何與servlet相關資源和初始化servlet的狀態Servlet規范保證調用init方法前不會處理任何請求。
service方法:是servlet真正處理客戶端傳過來的請求的方法,由web容器調用,根據HTTP請求方法(GET、POST等),將請求分發到doGet、doPost等方法
destory方法:是在servlet實例被銷毀時有web容器調用。Servlet規范確保在destroy方法調用之前所有請求的處理均完成需要覆蓋destroy方法的情況:釋放任何在init方法中打開的與servlet相關的資源存儲servlet的狀態
21:什么是回調方法?有什么特點?
由容器來調用程序的方法
由容器來決定什么時候來調
22:如何設置初始化servlet的參數?
<init-param> <param-name>greetingText</param-name> <param-value>Hello</param-value> </init-param>
23:如何獲取servlet初始化的參數
public void init() { greetingText = getInitParameter("greetingText"); System.out.println(">> greetingText = '" + greetingText + "'"); }
24:ServletConfig接口默認在那里實現的
GenericServlet類實現ServletConfig接口
25:什么是ServletContext?有什么作用?
Servlet上下文
ServletContext對象是Web應用的運行時表示,可通過其實現Web應用中的資源共享
26:如何訪問ServletContext接口?是在那里實現的?
Servlet通過getServletContext()方法訪問
GenericServlet類實現
27:ServletContext接口的功能包括?分別用代碼示例
只讀初始化參數: getInitParameter(name:String) : String
getInitParameterNames() : Enumeration
讀寫訪問應用級屬性:getAttribute(name:String) : Object
setAttribute(name:String, value:Object)
getAttributeNames() : Enumeration
只讀訪問文件資源: getResource(path) : URL
getResourceAsStream(path) : InputStream
寫web應用日志文件:log(message:String)
log(message:String, Throwable:excp)
28:如何設置Context的參數?
<context-param> <param-name>catalogFileName</param-name> <param-value>/WEB-INF/catalog.txt</param-value> </context-param>
29:如何獲取Context設置的參數值?
ServletContext context = sce.getServletContext(); String catalogFileName = context.getInitParameter(“catalogFileName”);
30:描述Web應用的生命周期?
Web容器啟動時,初始化每個Web應用
可以創建"監聽器"對象觸發這些事件;
Web容器關閉時,銷毀每個Web應用
31:如何用代碼實現監控Web應用的生命周期?
public class Test implements ServletContextListener{ public void contextInitialized(ServletContextEvent sce) { // } } <listener> <listener-class> com.csy.Test </listener-class> </listener>
32:web應用中如下錯誤碼示什么意思:400,401,404,500
400 Bad Request
401 Unauthorized
404 Not Found
500 Internal Server Error
33:描述Web應用中用聲明方式來進行錯誤處理的兩種方法
使用error-page元素聲明一個給定HTTP狀態碼的處理器
<error-page>
<error-code>404</error-code>
<location>/error/404.html</location>
</error-page>
可以聲明任意數量的錯誤頁面,但一個給定的狀態碼只能對應一個頁面
使用exception-type元素聲明給定Java異常的處理器
<error-page>
<exception-type>
java.lang.ArithmeticException
</exception-type>
<location>/error/ExceptionPage</location>
</error-page>
可以聲明任意數量的錯誤頁面,但一個給定的異常類型只對應一個頁面
不能使用父類捕獲多種異常
34:描述記錄異常日志的方法,都位于那些接口?
GenericServlet:
log(message:String)
log(message:String, Throwable:excp)
ServletContext:
log(message:String)
log(message:String, excp:Throwable)
35:什么是會話?
Web容器可為每個用戶保存一個"會話對象",用來存儲特定用戶的會話信息
36:如何獲得會話?
HttpSession session = request.getSesseion();
37:會話Api的基本功能?
getID() :String
isNew() :boolean
getAttribute(name):Object
setAttribute(name,value)
removeAttribute(name)
38:如何銷毀會話?
1、可使用部署描述符控制所有會話的生命周期
<session-config>
<session-timeout>10</session-timeout>
</session-config>
2、可使用控制特定會話對象的生命周期HttpSession接口
invalidate()
getCreationTime() :long
getLastAccessedTime() :long
getMaxInactiveInterval() :int
setMaxInactiveInterval(int)
39:描述會話保持狀態的基本原理
當客戶端第一次請求時,服務器創建一個session與request綁定,用響應對象response來返回sessionid 放到客戶端的cookies中存儲下來,下次在發送請求時,直接根據sessionid來檢索服務器的會話(每次請求都會將所有的cookies帶到服務器端)
40:如何讀寫cookie,代碼示例
寫:String name = request.getParameter("firstName"); Cookie c = new Cookie("yourname", name); response.addCookie(c); 讀:Cookie[] allCookies = request.getCookies(); for ( int i=0; i < allCookies.length; i++ ) { if ( allCookies[i].getName().equals(“yourname”) ) { name = allCookies[i].getValue(); } }
41:什么是URL重寫,如何實現,代碼示例
Cookie不能使用時,可使用URL重寫 request.encodeURL();
客戶在每個URL的后面追加額外的數據
服務器將此標識符與其存儲的有關會話數據相關聯
http://host/path/file;jsessionid=123
41:描述web應用的4種認證技術
BASIC – Web瀏覽器接收用戶名和口令,將其以明碼方式發送給Web服務器
DIGEST – Web瀏覽器接收用戶名和口令,使用加密算法將此數據發送給Web服務器
FORM – Web應用提供發送給Web瀏覽器的HTML form
CLIENT-CERT – Web容器使用SSL驗證用戶,服務端和客戶端的鏈路保護
42:什么是授權,什么是驗證?
授權是分局用戶角色劃分web資源的過程,其標識web應用中的安全域 分配權限
web容器使用廠商指定的機制驗證用戶的角色 匹配權限
43:什么是HTTPS
HTTPS (Secure Hypertext Transfer Protocol) 是使用SSL協議的HTTP
44:什么是審計?
也就是訪問跟蹤,是為web應用的每次訪問保留記錄的過程
45:如何實現聲明性授權
1、標識web資源集
2、標識角色
3、將web資源集影射到角色
4、標識每個角色中的用戶
在 web.xml里配
46:描述servlet并發問題?
多個同類線程運行,可以共享同一個Servlet實例,共享的數據和資源未合理同步,可能會引起數據的沖突
47:描述Web應用中的六種屬性范圍
局部變量(頁面范圍)
實例變量
類變量
請求屬性(請求范圍)
會話屬性(會話范圍)
上下文屬性(應用范圍)
48:支出上述六種那些是線程安全的
局部變量和請求屬性
49:什么是STM?如何實現?
SingleThreadModel接口
可以實現SingleThreadModel接口保證某一時刻只有一個請求執行service方法
50:如何實現并發管理?
盡可能使用局部和請求屬性
使用synchronized語法控制并發
盡可能減少同步塊和同步方法的使用
使用正確設置了線程安全的資源類
以上是“Java中Servlet常見面試題有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。