1.聲明變量時:<%! int j=1;%>(將變量生成為servlet類的成員變量,多個客戶端共享一份)與<% int j=1;%>(只是一個方法內的局部變量,每個客戶端都有一個)使用的過程當中,盡量避免將一個變量聲明為類的成員變量,除非需要統計一個servlet類的訪問次數。後者之中不能定義方法,前者可以。
2.java腳本(如javascript)在客戶端執行,<%……%>內的內容在服務器端執行,然後將結果傳回客戶端。
3.JSP包含指令:
靜態包含(常用):<%@ include file="fileURL"%>把被包含的文件原封不動的copy到該位置,然後編譯、轉換,但只生成一個java和class文件,fileURL中不能包含參數,包含頁面和被包含頁面訪問的是同一個request對象,它們相當於一個頁面,二者的編碼方式必須相同;
動態包含(不常用):<jsp: include page="fileURL" flush="true"/>fileURL中是可以傳遞參數的;包含頁面和被包含頁面request的對象不同,但是可以取到相同的參數(小的可以request到大的參數,還可以添加自己的參數);需要的時候才會轉換、編譯,在後台產生兩個java和class文件。
4.兩種跳轉方式:
response.sendRedirect(“fileURL”);跳轉過程中地址欄要發生變化,跳轉後變成跳轉後頁面的地址;服務器到客戶端兩個往返,效率低下,速度慢(客戶端請求-服務器響應,轉向客戶端,令客戶端地址欄發生變化(地址可以是任意合法地址如其他網址),自動提交,重新向服務器請求新的地址-服務器找到結果後反饋給客戶端顯示);這種轉向不會影響到後面代碼的運行(除非加上return);轉到的頁面不能去前一個頁面的參數;URL中的“/”表示到域名的根路徑
<jsp:forward page="fileURL"/>客戶端請求,服務器端直接轉向新地址然後將結果導向客戶端,過程中地址欄不發生變化,在服務器內部完成轉換(轉到的地址不可以是此工程之外的地址);速度快;雖然是不同的對象,但是可以取到上個頁面的參數;forward以後的語句不會繼續執行;URL中的“/”表示到webapp工程的根路徑
5.JSP標簽的作用范圍scope有page、request、session、application從小到大四種,默認情況下是page
6.Math.floor(cost*100)/100.0 cost是double類型,Math.floor(cost*100)函數用來返回cost*100的整數部分