Java web 部分
四. Java web 部分
1、Tomcat 的優化經驗
答:去掉對web.xml 的監視,把jsp 提前編輯成Servlet。
有富余物理內存的情況,加大tomcat 使用的jvm 的內存
2、HTTP 請求的GET 與POST 方式的區別
答:servlet 有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個
生存期由javax.servlet.Servlet 接口的init,service 和destroy 方法表達。
3、解釋一下什么是servlet;
答:servlet 有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個
生存期由javax.servlet.Servlet 接口的init,service 和destroy 方法表達。
4、說一說Servlet 的生命周期?
答: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()方法。
5、Servlet 的基本架構
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}}
6、SERVLET API 中forward() 與redirect()的區別?
答:前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則
是完全的跳轉,瀏覽器將會得到跳轉的地址,并重新發送請求鏈接。這樣,從瀏覽器的地址欄
中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()
方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務
器上的資源,則必須使用
sendRedirect()方法。
7、什么情況下調用doGet()和doPost()?
Jsp 頁面中的FORM 標簽里的method 屬性為get 時調用doGet(),為post 時調用doPost()。
8、Request 對象的主要方法:
setAttribute(String name,Object):設置名字為name 的request 的參數值
getAttribute(String name):返回由name 指定的屬性值
getAttributeNames():返回request 對象所有屬性的名字集合,結果是一個枚舉的實例
getCookies():返回客戶端的所有Cookie 對象,結果是一個Cookie 數組
getCharacterEncoding():返回請求中的字符編碼方式
getContentLength():返回請求的Body 的長度
getHeader(String name):獲得HTTP 協議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header 的所有值,結果是一個枚舉的實例
getHeaderNames():返回所以request Header 的名字,結果是一個枚舉的實例
getInputStream():返回請求的輸入流,用于獲得請求中的數據
getMethod():獲得客戶端向服務器端傳送數據的方法
getParameter(String name):獲得客戶端傳送給服務器端的有name 指定的參數值
getParameterNames():獲得客戶端傳送給服務器端的所有參數的名字,結果是一個枚舉的實例
getParametervalues(String name):獲得有name 指定的參數的所有值
getProtocol():獲取客戶端向服務器端傳送數據所依據的協議名稱
getQueryString():獲得查詢字符串
getRequestURI():獲取發出請求字符串的客戶端地址
getRemoteAddr():獲取客戶端的IP 地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取服務器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取服務器的端口號
removeAttribute(String name):刪除請求中的一個屬性
9、forward 和redirect 的區別
forward 是服務器請求資源,服務器直接訪問目標地址的URL,把那個URL 的響應內容讀取過
來,然后把這些內容再發給瀏覽器,瀏覽器根本不知道服務器發送的內容是從哪兒來的,所以
它的地址欄中還是原來的地址。
redirect 就是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,一般來說瀏
覽器會用剛才請求的所有參數重新請求,所以session,request 參數都可以獲取。
10、request.getAttribute() 和request.getParameter() 有何區別?
11. jsp 有哪些內置對象?作用分別是什么? 分別有什么方法?
答:JSP 共有以下9 個內置的對象:
request 用戶端請求,此請求會包含來自GET/POST 請求的參數
response 網頁傳回用戶端的回應
pageContext 網頁的屬性是在這里管理
session 與請求有關的會話期
application servlet 正在執行的內容
out 用來傳送回應的輸出
config servlet 的構架部件
page JSP 網頁本身
exception 針對錯誤網頁,未捕捉的例外
request 表示HttpServletRequest 對象。它包含了有關瀏覽器請求的信息,并且提供了幾個用于獲
取cookie, header, 和session 數據的有用的方法。
response 表示HttpServletResponse 對象,并提供了幾個用于設置送回瀏覽器的響應的方法
(如cookies,頭信息等)
out 對象是javax.jsp.JspWriter 的一個實例,并提供了幾個方法使你能用于向瀏覽器回送輸出
結果。
pageContext 表示一個javax.servlet.jsp.PageContext 對象。它是用于方便存取各種范圍的名字
空間、servlet 相關的對象的API,并且包裝了通用的servlet 相關功能的方法。
session 表示一個請求的javax.servlet.http.HttpSession 對象。Session 可以存貯用戶的狀態信息
applicaton 表示一個javax.servle.ServletContext 對象。這有助于查找有關servlet 引擎和servlet
環境的信息
config 表示一個javax.servlet.ServletConfig 對象。該對象用于存取servlet 實例的初始化參數。
page 表示從該頁面產生的一個servlet 實例
12. jsp 有哪些動作?作用分別是什么?
(這個問題似乎不重要,不明白為何有此題)
答:JSP 共有以下6 種基本動作
jsp:include:在頁面被請求的時候引入一個文件。
jsp:useBean:尋找或者實例化一個JavaBean。
jsp:setProperty:設置JavaBean 的屬性。
jsp:getProperty:輸出某個JavaBean 的屬性。
jsp:forward:把請求轉到一個新的頁面。
jsp:plugin:根據瀏覽器類型為Java 插件生成OBJECT 或EMBED 標記
13、JSP 的常用指令
isErrorPage(是否能使用Exception 對象),isELIgnored(是否忽略表達式)
14. JSP 中動態INCLUDE 與靜態INCLUDE 的區別?
答:動態INCLUDE 用jsp:include 動作實現
<jsp:include page=included.jsp flush=true />它總是會檢查所含文件中的變化,適合用于包含動態
頁面,并且可以帶參數靜態INCLUDE 用include 偽碼實現,定不會檢查所含文件的變化,適用
于包含靜態頁面<%@ include file=included.htm %>
15、兩種跳轉方式分別是什么?有什么區別?
(下面的回答嚴重錯誤,應該是想問forward 和sendRedirect 的區別,畢竟出題的人不是專業搞
文字藝術的人,可能表達能力并不見得很強,用詞不一定精準,加之其自身的技術面也可能存
在一些問題,不一定真正將他的意思表達清楚了,嚴格意思上來講,一些題目可能根本就無人
能答,所以,答題時要掌握主動,只要把自己知道的表達清楚就夠了,而不要去推敲原始題目
的具體含義是什么,不要一味想著是在答題)
答:有兩種,分別為:
<jsp:include page=included.jsp flush=true>
<jsp:forward page= nextpage.jsp/>
前者頁面不會轉向include 所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執行完
后還會回來,相當于函數調用。并且可以帶參數.后者完全轉向新頁面,不會再回來。相當于go
to 語句。
16、頁面間對象傳遞的方法
request,session,application,cookie 等
17、JSP 和Servlet 有哪些相同點和不同點,他們之間的聯系是什么?
JSP 是Servlet 技術的擴展,本質上是Servlet 的簡易方式,更強調應用的外表表達。JSP 編譯后
是"類servlet"。Servlet 和JSP 最主要的不同點在于,Servlet 的應用邏輯是在Java 文件中,并且
完全從表示層中的HTML 里分離開來。而JSP 的情況是Java 和HTML 可以組合成一個擴展名
為.jsp 的文件。JSP 側重于視圖,Servlet 主要用于控制邏輯。
18、MVC 的各個部分都有那些技術來實現?如何實現?
答:MVC 是Model-View-Controller 的簡寫。Model 代表的是應用的業務邏輯(通過JavaBean,
EJB 組件實現), View 是應用的表示面(由JSP 頁面產生),Controller 是提供應用的處理過程
控制(一般是一個Servlet),通過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的組
件實現。這些組件可以進行交互和重用。
19、我們在web 應用開發過程中經常遇到輸出某種編碼的字符,如iso8859-1 等,如何輸出一
個某種編碼的字符串?
Public String translate (String str) {
String tempStr = "";
try {
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
tempStr = tempStr.trim();
}c
atch (Exception e) {
System.err.println(e.getMessage());
}r
eturn tempStr;
}
20.現在輸入n 個數字,以逗號,分開;然后可選擇升或者降序排序;按提交鍵就在另一頁面
顯示按什么排序,結果為,提供reset
轉載于:https://www.cnblogs.com/sailormoon/archive/2012/12/02/2797913.html
總結
以上是生活随笔為你收集整理的Java web 部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 介绍一个JSONP 跨域访问代理API-
- 下一篇: 从30岁到35岁:为你的生命多积累一些厚