1、伺服器,網路中的一台主機,由它提供web、ftp等網路服務。
2、在請求響應過程中,如果在伺服器上存放的是靜態HTML網頁,伺服器將原封不動地返回網頁中的內容,如果存放的是動態網頁,伺服器會執行動態網頁,執行的結果是是產生一個HTML檔案,再將這個檔案發給用戶端瀏覽器,用戶端瀏覽器將其解釋為使用者見到的頁面。
3、JSP支援跨平台、可重用。
4、執行效率高:當JSP第一次被請求時,JSP頁面轉換成Servlet,然後被編譯成*.class,檔案,以後(除非頁面有改動或者web伺服器被重新啟動)再有客戶請求該Jsp頁面,Jsp頁面不再被重新編譯,而是直接執行已經編譯好的*.class檔案,因此 執行效率高。
5、ASP缺點:指令碼語言,無法進行傳統編程那樣的底層操作;通過解釋執行代碼,運行效率低;指令碼和HTML代碼混合在一起,不便於管理、維護。
6、PHP缺陷:不支援真正意義上的物件導向編程,介面支援不統一,缺乏正規的支援,不支援多層結構和分散式運算等。
7、JSP運行原理:當使用者在地址欄輸入請求的時候,如請求myfirst.jsp時,就會對web伺服器上的myfirst.jsp頁面產生請求,當伺服器上的myfirst頁面第一次被請求的時候,JSP引擎首先轉譯JSP分頁檔,產生一個Java檔案,本質上是一個JavaServlet檔案,這個檔案名稱是myfirst_jsp.java,Jsp引擎調用Java編譯器編譯這個檔案,形成Java位元組碼檔案:myfirst_jsp.class,響應客戶請求,執行myfirst_jsp.class的結果是發送給用戶端一個HTML檔案。
當頁面再次被請求的時候,JSP引擎將直接執行這個位元組碼檔案來響應客戶的請求。
當多個客戶同時請求同一個JSP頁面時,Tomcat伺服器為每個客戶啟動一個線程,該線程執行常駐記憶體的位元組碼檔案來響應客戶請求。
8、Servlet:使用Java Servlet API的相關類和方法所編寫的Java類為Servlet類。Servlet類產生的對象可以訪問配置有JSP運行環境的伺服器的各種資源。
9、JSP中可以嵌入JSP標記,Java代碼,JSP頁面最終會編譯成Servlet並執行,以響應客戶的請求。
10、JavaBean:一個可重用的軟體組件。實際上JavaBean就是一種Java類,一般負責web應用系統的商務邏輯處理部分。JavaBean類執行個體化的對象稱為Bean。
11、JSP+JavaBean模式:JSP負責頁面的實現、頁面預先處理和跳轉控制,JavaBean負責業務羅傑資料處理。小規模web應用
12、JSP+JavaBean+Servlet模式:JSP負責頁面處理,JavaBean負責商務邏輯和資料處理,Servlet負責預先處理和分發頁面的請求。較大規模web應用。
13、sun將JDK1.2後版本稱為Java2(1.3~1.6)。
14、表單:在網頁中主要用於採集和提交使用者輸入的資訊,是網站和訪問者之間的互動視窗。
15、表單標籤<form action="" ...>action:處理表單提交資料的程式的URL地址,如果為空白,則使用當前的文檔的URL。
16、表單中 enctype屬性:指定將資料發送到伺服器時瀏覽器使用的編碼方式
17、表單中method的方式:post:地址欄看不見表單的提交資訊,傳送的資料量比get方式多很多;get:在地址欄中可以看見,傳送量一般在1KB以下。
18、 輸入標籤:<input name="" type=""> name:表單輸入地區的名稱,type:定義表單輸入地區的類型,有10種。
19、css規則的定義:選取器{屬性:值}如:body{color:green}
選取器有以下三種:標籤選取器p{屬性:值},id選取器:若HTML中<p id="red" >紅色</p>則#red{color:red};類別選取器:如<h1 class="red">紅色</h1>,則.red{color:red}.
屬性有多個,每個用;隔開,如果被分組的選取器有多個,且分享相同的規則,則每個選取器用,隔開。
20、加入樣式表:1、定義內部樣式塊對象:<head><style type="text/css"><!--樣式表定義--> </style></head>
2、內聯定義:在對象的標籤中使用對象的style屬性定義相應的樣式表,如:<p style="color:red">紅色</p>
3、串連外部樣式表:先建立外部樣式表檔案.css,然後在<head>標籤中使用link對象進行連結。如<head><rel=stylesheet href ="http://www.cd.com" type="text/css"></head>
21、JavaScript:一種基於對象和事件驅動並且具有安全效能的指令碼語言,是一種解釋性的語言。
22、JavaScript中如果是靜態對象,則在引用該對象的屬性或者方法的時候,不需要為它建立執行個體,動態對象則在引用它的對象或者方法的時候,要建立一個執行個體。
23、JavaScript可以在HTML中任何位置插入,但如果要在聲明的架構的網頁中插入,必須放在<frameset>之前,否則不會執行。
有兩種插入方法:
1、<script language="JavaScript"><!----></script>
2、把JavaScript代碼寫到另一個檔案中,通常以.js為副檔名,然後<script src="java Script.js"></script>標籤將其嵌入到文檔中。
24、JavaScript中任意類型之間可以相互轉換,但是必須先賦值後使用。
25、JavaScript運算子三個等號:===:只有兩邊的類型一直,且值也相等的時候,才為true。!==:在類型不同或者類型相同但是值不等時為true。
25、JavaScript函數定義的時候使用關鍵字:function,this指當前對象而不是指標
26、JavaScript中with用來指定預設對象:with(對象名){語句序列}
27、JSP自身注釋:<%--注釋部分--%>或者<%/**注釋部分**/%>
客戶可以看到的注釋,又稱為嵌入式注釋:<!--注釋部分-->,會在瀏覽器中顯示,JSP引擎不作任何解釋,在這種注釋中可以出現動態資料,注視中的動態資料是通過運算式來表示的。如:<!--注釋<%=expression%>注釋-->,如:<!--現在的時間為:<%=(new java.util.Date()).toLocaleString()%>-->
28、JSP聲明元素格式:<%!聲明語句%>,如:聲明一個整型變數i:<%!int i;%>或者直接賦初值<%!int i=1;%>,聲明一個方法:<%!public void Add(){ i=m+n;}%>
29、JSP運算式:<%=expression%>執行後會被自動轉換成字串,然後顯示出來。
注意:不能用分號";"作為運算式結束符號
在Servlet中處理運算式只是將JSP運算式外封裝了out.println()方法。
30、JSP指令包括Page指令,Include指令,Taglib指令。不會輸出到用戶端,有效範圍僅限於使用該指令的JSP網頁。格式:<%@指令名稱 屬性1= ,屬性2=,...%>
31、Page指令:除import屬性外,其他指令只能使用一次page指令為該屬性設定值,即使設定的值相等也不行。例:<%@page import="java.util.*","java.io.*","java.sql.*"%>
32、Page中language屬性中目前只能使用的指令碼語言只有Java;
session屬性:指定一個HTTP會話中是否有該頁面參與,取值為true或者false; isErrorPage屬性:設定當前的JSP頁面是否可以作為另一網頁的錯誤處理頁面取值為true或者false;
errorPage:設定當JSP頁面出現異常時,所要轉向的頁面。
contentType:指定JSP字元的編碼和JSP頁面相應的MIME類型
33、contentType中取值有:
text/html:網頁形式顯示(預設值);
application/msword:word文檔形式顯示
application/vnd.ms-excel:excel表格形式顯示
application/vnd.ms-powerpoint:powerpoint簡報形式顯示
34、include指令元素:將另一個檔案包含到當前JSP頁面中,這個檔案可以是文字檔也可以是JSP檔案。如:<%@include file="logo.html"%>,此過程為靜態。
35、taglib指令元素:定義一個標籤庫及自訂標籤的首碼。文法:<%@taglib url="擴充標籤的URL" prefix="擴充標籤的首碼"%>
36、JSP標準操作指令:
include動作:在當前JSP頁面中加入靜態和動態資源。可以傳遞參數。如:
<jsp:include page="URL">
<jsp:param name="參數名稱1" value="值1">
<jsp:param name="參數名稱2" value="值2">
</jsp:include>
37、include指令和include動作的區別:
都可以完成檔案的包含,
區別:include指令只能靜態地插入檔案,指令在編譯時間執行,即即在編譯時間將需要插入檔案中的內容插入當前網頁中,產生Java檔案;include動作是動態地插入檔案,在編譯時間並不將需要插入的檔案內容插入到當前網頁,操作在接收請求時執行。
所以當插入檔案改變時,include指令要重新編譯當前頁面,產生新的Java檔案,否則當前網頁將不會變化,而include操作則不存在重新編譯的問題。
38、forward操作:將客戶所發出來的請求,從一個JSP頁面轉交給另一個JSP頁面,將會引起web伺服器上的請求目標轉寄。注意:<jsp:forward>標籤後的程式將不能執行。可以傳遞參數,同include動作傳參。
39、plugin操作:該指令的作用是確保一個Java外掛程式軟體可用,可以在瀏覽器中顯示或者播放一個對象(applet和bean)。文法格式:
<jsp:plugin type="bean|applet" Code="儲存類的檔案名稱" Codebase="類路徑">
<jsp:params>
<jsp:param name="參數名稱1" value="值1">
<jsp:param name="參數名稱2" value="值2">
</jsp:params>
<jsp:fallback>錯誤資訊</jsp:fallback>
</jsp:plugin>
外掛程式沒有啟動,<jsp:fallback>則會提供一個錯誤資訊。如果外掛程式已經啟動,但是applet或者bean沒有啟動,那麼外掛程式通常會彈出一個視窗,向使用者說明錯誤。
40、useBean動作:定義在JSP中網頁中要使用的JavaBean對象。
41、out對象是javax.servlet.jsp.JspWriter類的一個子類的對象,作用:將資訊回送到用戶端的瀏覽器中。out的生命週期是當前頁面,對於每一個JSP頁面,都有一個out對象。常用方法有:print(),println(),write(),newLine(),flush(),close()等。
42、request對象:Javax.servlet.HttpServletRequest子類的對象,用戶端請求一個JSP頁面時,JSP容器會將用戶端的請求資訊封裝在這個request對象中。取值時用此格式:String strUserName=request.getParameter("userID");
43、request:setAttribute(name,值):設定名字為name的request參數的值,該值由"值"指定。getAttribute(name):取得name指定的參數值
44、漢子編碼:當用request.getParameter得到Form中的元素時,預設的情況字元編碼是:ISO-8859-1,這種編碼不能正確顯示漢字。解決方案:
①執行操作之前,設定request編碼格式:request.setCharacterEncoding("GBK");
②轉換字元編碼:<%String str=request.getParameter("boy");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);%>
45、response對象:javax.servlet.http.HttpServletResponse類的子類對象,作用:封裝JSP程式產生的響應,並發送到用戶端。
46、網頁重新導向:sendRedirect()重新導向到新的頁面中去,重新導向後的代碼將不再執行。
47、sendRedirect()和<jsp:forward>的區別:
①sendRedirect()可以不用直接編碼URL就可以實現傳遞參數,如:Response.sendRedirect("example.jsp?p=234")傳遞參數p,值為234
②<jsp:forward>兩個頁面之間可以通過request對象共用資料,而sendRedirect()不支援這種資料共用。
48、response中能動態地設定ContentType屬性,MIME的類型有pdf、word、excel等等。
49、會話:從一個客戶開啟瀏覽器並且串連到伺服器開始,一直到這個客戶關閉瀏覽器視為一個對話。
50、會話id:當一個客戶通過瀏覽器與伺服器建立串連發出第一個請求時,伺服器就會為這個客戶分配一個session對象,並為這個session對象分配一個String類型的id號,JSP引擎在響應客戶請求的同時將id發往用戶端,並寫入用戶端的cookie中,這樣伺服器就可以通過不同的會話id識別一個客戶,可以跨網頁分享資料。
51、簡單概括:只要瀏覽器沒關閉,session id就不會變
52、會話的結束:如果不定時地清除會話,伺服器的儲存空間將被耗盡。一般在伺服器預設設定了一個30分鐘的會話超期時間,讓客戶停止活動後 session對象自動失效。
53、設定會話逾時周期可以使用session的setMaxInactiveInterval(),也可以使用web.xml檔案在tomcat上部署,即在web.xml中找到對應的<session-timeout>標籤,設定更改時間;當不需要會話時,可以使用session的invalidate()方法關閉一個會話。
54、application對象是以伺服器為主角,伺服器的啟動和關閉決定了application的生命週期,開始於任何一個JSP被開始執行時,終止於伺服器的關閉。每一個應用程式的所有線程共用這個application對象。
55、application是javax.servlet.ServletContext類的一個執行個體。
56、application的getAttribute方法返回一個Object類型的資料,使用時要進行資料類型轉換。
57、application可以應用於網站計數器,如果是不讓網頁重新整理時對同一個使用者計數,則可以用session.isNew()判斷。
58、cookie是伺服器發送給瀏覽器的體積很小的純文字檔案,使用者以後訪問同一個web伺服器時都會把它們原樣地發送給伺服器。通過讓伺服器讀取它們原先儲存在用戶端的資訊,提供一系列方便。用途如:線上交易過程中標識使用者身份、安全效能不高的場合避免使用者重複輸入名字和密碼、門戶網站的首頁定製、有針對性地投放廣告等。
59、每個cookie大小限制為4kb,瀏覽器一般只能存放300個cookie,每個網站最多存放20個cookie,所以不會塞滿客戶的硬碟。
60、建立cookie:Cookie cookie=new Cookie(Cookie名字,"內容");
61、讀取cookie值:getCookie()方法在程式中讀取Cookie值,返回包含所有Cookie的值的數組。如:
Cookie[] 數組名=request.getCookie();
迴圈取出每一個Cookie變數;
Cookie變數.getName();
Cookie變數.getValue();
62、config對象:用於初始化參數
63、exception對象:當JSP對象在運行過程中發生例外時,就產生這個對象,即被調用的錯誤頁面的結果(isErrorPage屬性值為true)
64、page對象:指JSP本身,如同引用this
65、pageContext對象:由JSP引擎產生的servlets代碼使用,用於訪問JSP中的各種可用範圍。