1.1jsp簡介
jsp是 Java Sever Page的縮寫华弓。
1.2幾種常見的WEB語言優(yōu)劣
JSP:java平臺,安全性高,適合開發(fā)大型的企業(yè)型WEB應(yīng)用程序畦幢,與SERVLET一樣拙吉,在服務(wù)器端執(zhí)行潮孽。
ASP.NET 簡單易學(xué),但是安全性以及跨平臺性較差筷黔。
PHP:簡單高效往史,成本低,開發(fā)周期短佛舱,適合中小型企業(yè)的WEB應(yīng)用開發(fā)椎例。LAMP=Linux+Apache + Mysql + PHP
1.3java頁面元素構(gòu)成
聲明+表達式+小腳本+指令+注釋+靜態(tài)內(nèi)容
1.4JSP指令
Page指令:通常用于jsp頁面的頂端,同一個頁面可以有多個Page指令
include指令:將一個外部文件嵌入到當前JSP頁面中请祖,同時订歪,解析這個頁面中的JSP語句。
taglib指令:使用標簽定義新的自定義標簽在JSP中啟用定制行為肆捕。
2.1JavaWeb開發(fā)基本知識
Web 應(yīng)用程序有以下特點:
1)使用HTTP協(xié)議通信
2)服務(wù)器把數(shù)據(jù)組織成HTML格式
3)瀏覽器安裝方便
2.2jsp實質(zhì)
jsp從本質(zhì)上來說就是一個servlet文件刷晋,只不過在創(chuàng)建上的方式不同,在進行編譯之后就會再次變成一個servlet這個文件
2.3 jsp注釋
在jsp頁面的注釋慎陵。
在HTML上的注釋:<!--? html注釋 --> 當jsp被解析為java文件時眼虱,客戶端可見,注釋的語句會被out.println()方法返回到客戶端席纽。
JSP的注釋:<%-- html --%> .只能用來注釋JSP文件捏悬,在JSP文件被解析成Java文件時,注釋會被刪除润梯,客戶端不可見过牙。PS:即服務(wù)器端元素
Java注釋:單行注釋 //? 多行注釋/* */?????????????? 不可見
2.4 JSP 腳本
概念:在JSP文件中插入的Java腳本
語法:<% Java代碼 %>
Jsp聲明:定義插入到Servlet中的成員變量和方法甥厦,在頁面上不會有數(shù)據(jù)的輸出,要輸出所聲明的數(shù)據(jù)寇钉,就要和其他表達式配合使用矫渔。
語法:<%!? java變量或者是方法 ? %>
JSP表達式:把方法的結(jié)果或者是變量的值作為一個字符串輸出。即在JSP頁面執(zhí)行的表達式
語法:<%=? Java表達式? %>? 注意:表達式不以分號結(jié)尾
2.5 頁面元素Page
JSP通過多線程進行處理
2.6 JSP內(nèi)置對象
2.6.1內(nèi)置對象簡介
JSP內(nèi)置對象是WEB容器創(chuàng)建的一組對象摧莽,不需要使用new關(guān)鍵字就可以使用的空置對象庙洼。
2.6.2常用內(nèi)置對象
out ? ?? request ?? ? response ? ? ? session????? application??? Page?? pageContent???? exception?? config?? 當然,后面四個不常用
web應(yīng)用程序:請求和響應(yīng)模式镊辕。
緩沖區(qū):Buffer油够。所謂緩沖區(qū)就是內(nèi)存的一塊區(qū)域用來保存臨時數(shù)據(jù)。
2.6.7? out對象
里面有一系列的方法能對緩沖區(qū)之類的進行處理征懈。其中有.cleare() 和? .flush()? 這兩個方法但是前者如果在后者之后再調(diào)用的話就會報出異常石咬。解決辦法:使用 .cleareBuffer() 這個方法。
2.6.8 get 與 post 兩者之間的區(qū)別
這兩個是表單 form 的提交方式卖哎。
get:以明文的方式鬼悠,通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到亏娜,提交的數(shù)據(jù)最多不超過2kb焕窝,安全性較低,但是效率比post方式高维贺,適合提交數(shù)據(jù)量不大它掂,安全性不高的數(shù)據(jù),比如:搜查溯泣、查詢等功能虐秋。
post:將用戶提交的信息封裝在HTML、HEADER內(nèi)垃沦,適合提交數(shù)據(jù)量大客给,安全性高的用戶信息,比如:注冊修改上傳等功能肢簿。
2.6.9 request對象
客戶端的請求信息被封裝在request對象中靶剑,通過它才能了解到客戶的需求,然后做出響應(yīng)译仗,它是HttpServeltRequest類的實例抬虽。request對象具有請求域官觅,即完成客戶端的請求之前纵菌,該對象一直有效。同樣休涤,也有很多不一樣的方法:
setCharacterEncoding(String encoding) 設(shè)置表單的編碼方式咱圆。
getParameter(String key) 返回客戶端用戶提交的參數(shù)笛辟。
getParameterValues(String keys) 返回多個同名參數(shù)值,以數(shù)組的形式返回序苏。
void setAttribute(String Object)? 存儲此請求中的屬性
object getAttribute(String name) 返回指定屬性的屬性值手幢。
2.6.10?? 控制服務(wù)器的響應(yīng)信息? response
response 對象包含了響應(yīng)客戶請求的有關(guān)信息,但在JSP中很少直接用到他忱详,它是HttpServeltResponse 類的實例围来,response 對象具有頁面作用域,即訪問一個頁面時匈睁,該頁面內(nèi)的response 對象只能對這次訪問有效其他頁面的response 對象對當前頁面無效监透。
常用方法:。航唆。胀蛮。
2.6.11 請求重定向與請求轉(zhuǎn)發(fā)的區(qū)別
請求重定向:客戶端行為。response.sendRedirect().從本質(zhì)上講糯钙,等同于兩次請求粪狼,前一次對象不會保存,地址欄的URL會改變任岸。
請求轉(zhuǎn)發(fā):服務(wù)器行為再榄。request.getRequestDispatcher().forward(). 是一次請求,轉(zhuǎn)發(fā)后請求對象會保存享潜,地址欄的URL不會發(fā)生改變不跟。
2.6.12 session? 對象
session 對象,表示客戶端的一次會話米碰,web中的session指的是用戶在瀏覽某個網(wǎng)站時窝革,從進入網(wǎng)站到瀏覽器關(guān)閉所經(jīng)過的這段時間也就是用戶瀏覽這個網(wǎng)站所花費的時間。
什么是session吕座?
?在服務(wù)器的內(nèi)存中保存著不同用戶的session
session對象在第一個JSP頁面被裝載時自動創(chuàng)建完成會話期管理虐译。
會話:從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器吴趴,離開這個服務(wù)器結(jié)束被稱為一個會話漆诽。
當一個客戶訪問一個服務(wù)器時,可能會在服務(wù)器的幾個頁面之間切換锣枝,服務(wù)器應(yīng)當通過某種方法知道這是一個用戶厢拭,這就需要用到session
session對象是一個 HttpSession 對象實例。
session創(chuàng)建周期:
????? 創(chuàng)建:當客戶端第一次訪問某個jsp或者Servelt 時撇叁,服務(wù)器會為當前會話創(chuàng)建一個SessionId供鸠,每次客戶端向服務(wù)器端發(fā)送請求時,都會將此sessionId 攜帶過去陨闹,服務(wù)器端會為這個ID進行校驗楞捂。
?????? 活動:1》某次會還中通過超鏈接打開的新頁面屬于同一次會話薄坏。
????????????????? 2》只要當前頁面沒有全部關(guān)閉重新打開新的瀏覽器窗口進行訪問同一項目資源時,屬于同一次會話寨闹。
????????????????? 3》除非本次會話的所有頁面都關(guān)閉后再重新訪問某個JSP或者Servlet將會創(chuàng)建一個新的會話胶坠。
注意事項:注意原有的會話還存在,只是這個舊的sessionId 任然存在繁堡,存在于服務(wù)器沈善,只不過再也沒有客戶端攜帶他然后交與服務(wù)器進行校驗。
?????? 銷毀:1》調(diào)用了session.invalidate() 方法椭蹄。
????????????????? 2》session超時(默認30分鐘)矮瘟。當然這個時間我們也能進行修改,@1:調(diào)用方法:setMaxInactiveInterval() 單位:秒塑娇。? @2:在web.xml 文件中進行修改 單位十分鐘澈侠。
其他四個對象不常用,這里就不再一一說明埋酬。