Browser/Server瀏覽器/伺服器(瘦客戶端)
Custom/Server 客戶端/伺服器(胖客戶端)
點選免費獲取最新BATJ面試題,2020最新面試技巧和簡歷模板!
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的後面追加額外的資料
伺服器將此識別符號與其儲存的有關會話資料相關聯
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語法控制併發
儘可能減少同步塊和同步方法的使用
使用正確設定了執行緒安全的資源類