session和el表達式


2015/1/21
## 回顧昨天案例 ##

# 模擬購物車;

	>> 基本步驟;
		|-- 顯示所有的書籍;
			|-- 制作書記列表/模仿數據庫;
				|-- 參見昨天示例;
			|-- 制作查看詳情鏈接;
				|-- 參見昨天示例;

		|-- 顯示購物車中的所有商品;
			|-- request.getSession(); --- 得到session對象;
			|-- 假定購物車的名字 "cart";
				|-- 用集合制作購物車;
					|-- 可以用泛型限定購買的商品類型;
					|-- 遍歷;
						|-- 先判斷!null;
						|-- 輸出購物車中商品的名字;
			
		|-- 制作購買鏈接;
			|-- request.getSession(); --- 得到session對象;
			|-- 獲取購物車;
			|-- 判斷,如果是第一次進入,將購物車綁定到session上;
			|-- 將商品添加到購物車;
			|-- 提供返回鏈接;

# Cookie和Session的關系;
	
	>> 當本地Cookie被禁用之后,Session將失效;
		|-- 解決方案
			|-- 重寫URL;
				|-- response.encodeURL(String str);
				|-- 注意,該方法需要重寫所有URL;
				|-- 原理:將jsessionID帶到超鏈接里;

# Session的生命周期;

	>> 新建;
		|-- 第一次創建;

	>> 運行;
		|-- > 鈍化 --- 序列化到磁盤上;
		活化 < --- 從磁盤上反序列化到內存中;

	>> 銷毀;



## JSP和EL表達式 ##

# 基本概念;
	
	>> Java Server Page
		|-- 一個可以嵌入java代碼和HTML代碼的界面;
	>> 基本運行流程;
		|-- 當客戶端第一次訪問jsp的時候,服務器會將其中的java抽出編譯成為servlet;
		|-- 然后分離出HTML代碼,顯示在瀏覽器上;
		|-- 最后會將編譯完成的class文件返回給客戶端;

# 基本語法;

	>> JSP表達式;
		|-- <%= %> 聲明一個表達式,其中不能有分號,因為是用於輸出,
		內部語句被out.println();包裹;
		|-- <% %> 聲明一個片段,其中主要存放Java代碼;
			|-- Java代碼片段中支持Java注釋;

		|-- <!-- --> 聲明一個注釋,會被發送給客戶端,
		其中如果嵌套<% %>表達式的話,內部的代碼會被執行;
		但執行完畢的結果依然會被作為HTML的注釋發送到客戶端;

		|-- <%-- --%> jsp注釋;內部代碼在編譯時會被忽略;
		|-- <%! %> 聲明一個變量或方法;內部代碼會被放到service方法外部;

# JSP指令;
	
	>> taglib指令
		|-- 導入一個外部的標簽庫;

	>> <%@include file="地址" %> --- 靜態包含;
		|-- 包含一個外部界面;
		    該指令將被包含的界面中的源碼全部獲取;
		    和發起包含的文件一起編譯;

		|-- 動態包含;<jsp:include page="地址"></include>
			|-- 包含的兩個文件會分別編譯;

	>> <%@ page language="java " import="java.util.*" pageEncoding="UTF-8"%>
		|-- import --- 導入需要使用的包;
		|-- pageEncoding --- 告知瀏覽器界面使用哪種編碼進行顯示;
		|-- contentType --- 告知瀏覽器界面使用哪種編碼進行顯示;
		|-- language --- 聲明界面包含的語言,可以不寫;
		|-- errorPage --- 可以在源碼中生成一個Exception對象;

	>> jsp標簽
		|-- <jsp:forward page="add"></jsp:forward> 實現轉發;
		|-- <jsp:param value="20" name="xxx" /> 轉發中實現攜帶參數;
			|-- 該標簽無法解決中文參數傳遞的問題;

# JSP九大內置對象;
	
	>> 基本概念;
		|-- 由JSP本身定義好的一些對象,這些對象不需要聲明可以直接使用;

	>> 九個內置對象;
		|-- request
			> 四大作用域中的一個;
			> 作用於每次請求;
		|-- response
		|-- pageContext
			> 四大作用域中的一個;
			> 作用於當前頁面;
			> 可以通過它操作其他三個域對象;
			> 可以通過它獲取其他八個內置對象;
			> 可以依次從四個域范圍中找值;
			> 實現轉發和包含功能;

		|-- session
			> 四大作用域中的一個;
			> 作用於每次會話;
		|-- exception
		|-- application
			|-- ServletContext 
				> 四大作用域中的一個;
				> 作用於整個servlet;
		|-- config
		|-- out
			> 在輸出是默認輸出到頁面緩沖區中(默認8KB);
			> 可以將buffer關閉,讓數據直接輸出到界面;
			> 也可以寫出后直接采用flush();將數據刷到response緩存中;
		|-- page


# JavaBean
	>> 基本概念;
		|-- 簡單java類
		|-- 有一定的規范
		|-- 用於封裝數據;

	>> 開發模型;
		|-- JSP+JavaBean;
		|-- MVC
			M: javabean;
			V: jsp+html
			C: servlet;


## EL表達式 ##

# 基本概念;
	>> 替代Java代碼;
	>> 進行算術計算;
	>> 從域中搜索值;

# 基本格式;
	>> ${放在域范圍中的變量}
		|-- 內部實現原理;
			|-- pageContext.findAttribute("值");
	>> 只能寫在JSP界面上面;

	>> 在指定的域中搜索;
		|-- ${requestScope.name}
		|-- ${sessionScope.name}
		|-- ${applicationScope.name}
		|-- ${pageScope.name} (默認范圍,可以不寫)

	>> 兩種運算符;
		|-- 【.】
			> .后跟取值名稱;
			> 注意 --- EL不支持.調用方法;
		|-- 【[]】
			> 取值需要加上""/'' ;
			> 當對數組進行取值時,可以加也可以不加;
			> 對於數組只能使用[]操作;

	>> 獲取集合;
		|-- 使用[]獲取對應角標元素;
		|-- 獲取Map集合;
			|-- map集合可以用. 后跟字符串獲取元素;
			|-- 可以用[]跟上""/''獲取元素;

	>> EL的三元運算符;
		|-- ${表達式?值1:值2}
		|-- ${seesionScope.loginedUser==null ?"未登錄":"歡迎"}
			|-- EL表達式不支持字符串相關運算,即連接符等用法;

# EL的11個內置隱式對象;

	>> 總結如下;
		1.requestScope
		2.sessionScope
		3.applicationScope
		4.pageScope
		//--------------通過以上4個內置對象可以對4大域進行訪問
		//--------------下面的內置對象用處不大,
		5.param 
		6.paramValues  這兩個對象封裝了表單參數
		7.header
		8.headerValues 這兩個對象封裝了HTTP請求頭
		9.initParam 封裝了web.xml中 配置
		10.pageContex 封裝了 9大內置對象中的 pageContext
		11.cookie  封裝了cookie信息
# EL函數

	>> 基本概念;
		|-- 簡化頁面中靜態方法的調用,使用EL函數代替JAVA代碼.

	>> 使用步驟;
		|-- 在外部定義Java工具類;
		|-- 配置tld文件;
			|-- 從tomcat的配置中尋找然后替換相關標簽內容;
			|-- <uri>
			|-- <function>
		|-- 在JSP中引入tld文件;
		|-- 然后就可以在JSP中調用EL自定義函數;

	>> 實際使用;
		|-- SUN已經定義了足夠的函數;
		|-- 基本不需要自己定義新的函數;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM