一、JSP本質還是Servlet
二、JSP頁面內容由靜態內容(通過HTML顯示)與動態內容(通過java調用控制)組成
三、第一個訪問JSP頁面的速度很慢,因爲必須等待JSP翻譯成Servlet,之後就不需要了
四、注意JSP頁面聲明的變量和方法。因爲JSP相當於一個Servlet實例,聲明的變量和方法會翻譯爲Servlet實例中的成員變量和方法,Servlet在容器中只有一個實例,成員變量就會被共享。
五、JSP的3個編譯指令:page,include,taglib
六、JSP的7個動作指令:forward,param,include,plugin,useBean,set、getProperty
其中,forward執行頁面轉向,但是不會丟失request裏的參數,使用forward指令,並沒有重新計算請求,還是之前的請求,而後面會出現的redirect重定向就相當於產生新的請求,之前request裏的參數就會被清除。
七、JSP中9個內置對象:application,config,exception,out,page,pageContext,request,response,session
八、Web服務器:
對於大部分瀏覽器,通常負責完成三件事,即1.向遠程服務器發送請求2.讀取遠程服務器返回的數據3.渲染頁面
Web服務器則負責接收客戶端請求,之後完成如下工作:1.啓動單獨線程2.使用I/O流讀取請求二進制數據3.解析參數4.處理請求5.生成響應數據6.使用I/O流向客戶端發送請求數據
而爲了實現JSP、Servlet之間數據的交換,一般都會提供四種類似Map的結構,application,session,request,page,並從這幾種結構中獲取數據。
九、Cookie:增加Cookie使用response內置對象完成,首先創建Cookie對象實例,然後設置其生命期限,最後向客戶端寫入Cookie;訪問Cookie對象使用request
Cookie c=new Cookie("username",name);
c.setMaxAge(24*3600);
response.addCookie(c);
Cookie[] cookies=request.getCookies();
for(Cookie c:cookies){
if(("username").equals(c.getName)){
out.println(c.getValue());
}
}
九、JSP表達式語言
${expression}