Jsp基礎知識

通過Servlet進行整個網站的開發是可以的。不過在Servlet中輸出html代碼,特別是稍微複雜一點的html代碼,就會給人一種很酸爽的感覺。

1. Jsp文件開頭

<%@page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" import="java.util.*"%>

是JSP的<%@page指令

contentType="text/html; charset=UTF-8" 

相當於response.setContentType(“text/html; charset=UTF-8”); 通知瀏覽器以UTF-8進行中文解碼

pageEncoding="UTF-8" 

如果jsp文件中出現了中文,這些中文使用UTF-8進行編碼

import="java.util.* 

導入其他類,如果導入多個類,彼此用,逗號隔開,像這樣 import=”java.util.,java.sql.

2. 爲什麼Jsp是Servlet?

3. 頁面元素

jsp由這些頁面元素組成:

1)靜態內容
就是html,css,javascript等內容

2)指令
以<%@開始 %> 結尾,比如<%@page import=”java.util.*”%>

3)表達式 <%=%>
用於輸出一段html

4)Scriptlet
在<%%> 之間,可以寫任何java 代碼

5)聲明
在<%!%> 之間可以聲明字段或者方法。但是不建議這麼做。

6)動作
在jsp頁面中包含另一個頁面。在包含的章節有詳細的講解

7)註釋 <%– – %>不同於 html的註釋 通過jsp的註釋,瀏覽器也看不到相應的代碼,相當於在servlet中註釋掉了

image

3. 指令include和動作include區別

指令include

<%@include file="footer.jsp" %>

footer.jsp的內容會被插入到 hello.jsp 轉譯 成的hello_jsp.java中,最後只會生成一個hello_jsp.java文件

動作include

<jsp:include page="footer.jsp" />

footer.jsp的內容不會被插入到 hello.jsp 轉譯成的hello_jsp.java中,還會有一個footer_jsp.java獨立存在。 hello_jsp.java 會在服務端訪問footer_.jsp.java,然後把返回的結果,嵌入到響應中。

傳遞參數

因爲指令<%@include 會導致兩個jsp合併成爲同一個java文件,所以就不存在傳參的問題,在發出hello.jsp 裏定義的變量,直接可以在footer.jsp中訪問。

而動作其實是對footer.jsp進行了一次獨立的訪問,那麼就有傳參的需要。

1)Cookie是一種瀏覽器和服務器交互數據的方式。

2)Cookie是由服務器端創建,但是不會保存在服務器。

3)創建好之後,發送給瀏覽器。瀏覽器保存在用戶本地。

4)下一次訪問網站的時候,就會把該Cookie發送給服務器。

image

5. session

Session對應的中文翻譯是會話。

會話指的是從用戶打開瀏覽器訪問一個網站開始,無論在這個網站中訪問了多少頁面,點擊了多少鏈接,都屬於同一個會話。 直到該用戶關閉瀏覽器爲止,都屬於同一個會話。

session 原理(和cookie配合工作)
image

1)當在同一個瀏覽器中同時打開多個標籤,發送同一個請求或不同的請求,仍是同一個session;

2)當不在同一個窗口中打開相同的瀏覽器時,發送請求,仍是同一個session;

3)當使用不同的瀏覽器時,發送請求,即使發送相同的請求,是不同的session;

4)當把當前某個瀏覽器的窗口全關閉,再打開,發起相同的請求時,就是本文所闡述的,是不同的session;

如果沒有cookie,session如何工作

cookie和session區別和聯繫?

具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在服務器端保持狀態的方案。兩者存儲的都是用戶登錄信息,操作行爲等等的數據。

訪問同一個服務器
1) cookie是把用戶的數據寫在用戶本地瀏覽器上,其他網站也可以掃描使用你的cookie,容易泄露自己網站用戶的隱私,而且一般瀏覽器對單個網站站點有cookie數量與大小的限制。

2)Session是把用戶的數據寫在用戶的獨佔session上,存儲在服務器上,一般只將session的id存儲在cookie中。但將數據存儲在服務器對服務器的成本會高。

3)session是由服務器創建的,開發人員可以在服務器上通過request對象的getsession方法得到session。

4)一般情況,登錄信息等重要信息存儲在session中,其他信息存儲在cookie中。

6. JSP有4個作用域

1) pageContext 當前頁面

2)requestContext 一次請求

注意: 服務端跳轉算一次請求,而客戶端跳轉不算一次請求。

3)sessionContext 當前會話(當前用戶)

4)applicationContext 全局,所有用戶共享

7. JSP九大隱式對象

1)request對象

request 對象是 javax.servlet.httpServletRequest類型的對象。 該對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對象的作用域爲一次請求。

2)response對象

response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。

3)session對象

session 對象是由服務器自動創建的與用戶請求相關的對象。服務器爲每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。session對象內部使用Map類來保存數據,因此保存數據的格式爲 “Key/value”。 session對象的value可以使複雜的對象類型,而不僅僅侷限於字符串類型。

4)application對象

application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命週期更長,類似於系統的“全局變量”。

5)out 對象

out 對象用於在Web瀏覽器內輸出信息,並且管理應用服務器上的輸出緩衝區。在使用 out 對象輸出數據時,可以對數據緩衝區進行操作,及時清除緩衝區中的殘餘數據,爲其他的輸出讓出緩衝空間。待數據輸出完畢後,要及時關閉輸出流。

6)pageContext 對象

pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。

7)config 對象

config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。 開發者可以在web.xml 文件中爲應用程序環境中的Servlet程序和JSP頁面提供初始化參數。

8)page 對象

page 對象代表JSP本身,只有在JSP頁面內纔是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。

9)exception 對象

exception 對象的作用是顯示異常信息,exception對象只有當前頁面的<%@page 指令設置爲isErrorPage=”true”的時候纔可以使用。同時,在其他頁面也需要設置 <%@page 指令 errorPage=”” 來指定一個專門處理異常的頁面。

8. JSTL標準標籤庫

爲了能夠在JSP 中使用JSTL,首先需要兩個jar包,分別是jstl.jar 和standard.jar

9. EL表達式

10. MVC架構

M 代表 模型(Model),模型就是數據,就是dao,bean

V 代表 視圖(View),就是網頁, JSP,用來展示模型中的數據

C 代表 控制器(controller),控制器的作用就是把不同的數據(Model),顯示在不同的視圖(View)上。(控制將數據轉發到什麼視圖)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章