1 、Tomcat 的優(yōu)化經驗
答:去掉對 web.xml 的監(jiān)視宰僧,把 jsp 提前編輯成 Servlet茅坛。
有富余物理內存的情況案怯,加大 tomcat 使用的 jvm 的內存
2 、HTTP 請求的 GET 與 與 POST 方式的區(qū)別
答:servlet 有良好的生存期的定義江场,包括加載和實例化纺酸、初始化、處理請求以及服務結束址否。
這個生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表達餐蔬。
在Form表單中定義的method=“” 中可以是get和post,用get在http上會顯示表單中的數據佑附,相對不安全用含,只有表單中可以選擇get和post,其余的默認為get帮匾;
3 、解釋一下什么是 servlet;
答:servlet 有良好的生存期的定義痴鳄,包括加載和實例化瘟斜、初始化、處理請求以及服務結束。
這個生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表達螺句。
4 虽惭、說一說 Servlet 生命周期
生命周期中有三個方法
init是初始化的方法
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}
//service方法無需我們操作,它會根據用戶向服務器端發(fā)送請求的方式(get/post)會自動調用service方法來判斷調用doGet/doPost
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
// TODO Auto-generated method stub
super.service(arg0, arg1);
}
銷毀的方法在關閉服務器時執(zhí)行destroy方法
@Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
}
5 蛇尚、Servlet 的基本架構(doget/dopost)
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() 的區(qū)別?
forward 是服務器請求資源取劫,服務器直接訪問目標地址的 URL匆笤,把那個 URL 的響應內容
讀取過來,然后把這些內容再發(fā)給瀏覽器谱邪,瀏覽器根本不知道服務器發(fā)送的內容是從
哪兒來的炮捧,所以它的地址欄中還是原來的地址。
redirect 就是服務端根據邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址惦银,一般來
說瀏覽器會用剛才請求的所有參數重新請求咆课,所以 session,request 參數都可以獲取
(1).實現資源跳轉 用forward(arg0, arg1)轉發(fā)資源 在瀏覽器中的地址顯示的事最開始的請求地址
req.getRequestDispatcher("映射地址").forward(req, resp);
(2).重定向 一定要加工程名稱 可以定向站內資源也可以定向站外資源//可以寫到http:www.163.com
在瀏覽器中的地址顯示的事最最終映射到的第二次的地址
resp.sendRedirect("/項目名/映射地址");
7 、什么情況下調用 doGet()和 和 doPost() 扯俱?
Jsp 頁面中的 FORM 標簽里的 method 屬性為 get 時調用 doGet()书蚪,為 post 時調用
doPost()。如果不是表單迅栅,那么都調用doGet()殊校;
8 、Request 對象的主要方法:
setAttribute(String name,Object):設置名字為 name 的 request 的參數值
getAttribute(String name):返回由 name 指定的屬性值
getParameter(String name):獲得客戶端傳送給服務器端的有 name 指定的參數值
10 库继、request.getAttribute() 和 request.getParameter() 有何區(qū)別?
getParameter 得到的都是 String 類型的箩艺。或者是 http://a.jsp?id=123 中的 123宪萄,或者是某個表
單提交過去的數據艺谆。
getAttribute 則可以是對象。
getParameter()是獲取 POST/GET 傳遞的參數值拜英;
getAttribute()是獲取對象容器中的數據值静汤;
getParameter:用于客戶端重定向時,即點擊了鏈接或提交按扭時傳值用居凶,即用于在用表單
或 url 重定向傳值時接收數據用虫给。
getAttribute:用于服務器端重定向時,即在 sevlet 中使用了 forward 函數,或 struts 中使用了
mapping.findForward侠碧。 getAttribute 只能收到程序用 setAttribute 傳過來的值抹估。
getParameter()是獲取 POST/GET 傳遞的參數值;
getAttribute()是獲取 SESSION 的值弄兜;
另外药蜻,可以用 setAttribute,getAttribute 發(fā)送接收對象.而 getParameter 顯然只能傳字符串瓷式。
setAttribute 是應用服務器把這個對象放在該頁面所對應的一塊內存中去,當你的頁面服務器
重定向到另一個頁面時语泽,應用服務器會把這塊內存拷貝另一個頁面所對應的內存中贸典。這樣
getAttribute 就能取得你所設下的值,當然這種方法可以傳對象踱卵。 session 也一樣廊驼,只是對象
在內存中的生命周期不一樣而已。 getParameter 只是應用服務器在分析你送上來的 request
頁面的文本時惋砂,取得你設在表單或 url 重定向時的值妒挎。
getParameter 返回的是 String, 用于讀取提交的表單中的值;
getAttribute 返回的是 Object,需進行轉換,可用 setAttribute 設置成任意對象班利,使用很靈活饥漫,
可隨時用
- jsp 有哪些內置對象? 作用分別是什么? 分別有什么方法?
答:JSP 共有以下 9 個內置的對象:
request 用戶端請求罗标,此請求會包含來自 GET/POST 請求的參數
response 網頁傳回用戶端的回應
pageContext 網頁的屬性是在這里管理
session 與請求有關的會話期
application servlet 正在執(zhí)行的內容
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 可以存貯用戶的
狀態(tài)信息
applicaton 表示一個 javax.servle.ServletContext 對象牛郑。這有助于查找有關 servlet 引擎
和 servlet 環(huán)境的信息
config 表示一個 javax.servlet.ServletConfig 對象。該對象用于存取 servlet 實例的初始
化參數敬鬓。
page 表示從該頁面產生的一個 servlet 實例
13 淹朋、JSP 的常用指令
isErrorPage(是否能使用 Exception 對象),isELIgnored(是否忽略表達式)
- JSP 中動態(tài) INCLUDE 與靜態(tài) INCLUDE 的區(qū)別钉答?
答:動態(tài) INCLUDE 用 jsp:include 動作實現
<jsp:include page=included.jsp flush=true />它總是會檢查所含文件中的變化础芍,適合用于包含動
態(tài)頁面,并且可以帶參數 靜態(tài) INCLUDE 用 include 偽碼實現,定不會檢查所含文件的變化数尿,
適用于包含靜態(tài)頁面 <%@ include file=included.htm %>
15 仑性、兩種跳轉方式分別是什么? 有什么區(qū)別?
(下面的回答嚴重錯誤,應該是想問 forward 和 sendRedirect 的區(qū)別右蹦,畢竟出題的人不是專
業(yè)搞文字藝術的人诊杆,可能表達能力并不見得很強鲫懒,用詞不一定精準竖伯,加之其自身的技術面也
可能存在一些問題厚者,不一定真正將他的意思表達清楚了旬渠,嚴格意思上來講,一些題目可能根
本就無人能答宰缤,所以,答題時要掌握主動晃洒,只要把自己知道的表達清楚就夠了慨灭,而不要去推
敲原始題目的具體含義是什么,不要一味想著是在答題)
兩種方式
//1.實現資源跳轉 用forward(arg0, arg1)轉發(fā)資源
// req.getRequestDispatcher("/Selectall").forward(req, resp);
//2.重定向 一定要加工程名稱 可以定向站內資源也可以定向站外資源//可以寫到http://www.163.com
resp.sendRedirect("/NeusoftManagerSystem//manager?q=list");
16 球及、頁面間對象傳遞的方法
request氧骤,session,application吃引,cookie筹陵,page 等
17 、JSP 和 和 Servlet 有哪些相同點和不同點镊尺,他們之間的聯(lián)
系是什么朦佩?
JSP 是 Servlet 技術的擴展,本質上是 Servlet 的簡易方式庐氮,更強調應用的外表表達语稠。
JSP 編譯后是"類 servlet"。Servlet 和 JSP 最主要的不同點在于弄砍,Servlet 的應用邏輯是
在 Java 文件中仙畦,并且完全從表示層中的 HTML 里分離開來。而 JSP 的情況是 Java
和 HTML 可以組合成一個擴展名為.jsp 的文件音婶。JSP 側重于視圖慨畸,Servlet 主要用于
控制邏輯。
18 桃熄、MVC 的各個部分都有那些技術來實現? 如何實現?
答:MVC 是 Model-View-Controller 的簡寫先口。Model 代表的是應用的業(yè)務邏輯(通過
JavaBean,EJB 組件實現)瞳收, View 是應用的表示面(由 JSP 頁面產生)碉京,Controller 是提供
應用的處理過程控制(一般是一個 Servlet),通過這種設計模型把應用邏輯螟深,處理過程和顯
示邏輯分成不同的組件實現谐宙。這些組件可以進行交互和重用
19 、我們在 web 應用開發(fā)過程中經常遇到輸出某種編碼的字符界弧,如 iso8859-1 等凡蜻,如何輸出一個某種編碼的字符串搭综?
Public String translate (String str) {
String tempStr = "";
try {
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
tempStr = tempStr.trim();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}