標籤:另一個 轉換 otherwise 範圍 頭部 map 服務端 編碼 ble
jsp知識點
標記: Java server page
基本特性
declaration 聲明
expression 運算式
directives 指令
scriptlet 小程式段
comment 注釋
action 動作指令
! 運行方式 先編譯為 .java 檔案 再轉換為 servlet編譯檔案運行 (.class)
1.只有用戶端在第一次請求jsp時,才需要對其轉換 編譯
優點
優良的效能 (憂於CGI php ASP)
平台無關性 (只要符合j2ee規範就可在該平台運行)
可擴充性強 (tga擴充,簡化開發)
補充知識
反射時類裡必須有無參建構函式 不然容易報錯
操作部分
指令 <%@ %>
include 指令
file =“路徑”
匯入檔案命令 將指定的jsp程式或HTML檔案包含在當前頁面
<%@ include file ="/a.jsp"%>
可以匯入另一個jsp檔案 應用於網站的頭部等網頁的公用部分
page 指令
import =“包名.類名” 引入的包和類
可以匯入多個包 中間用逗號分開
extends =“包名.類名” 繼承的類
buffer=“none/kb size” 不緩衝 或 指定緩衝大小 (預設8kb)
autoFlush="true/false" 是否自動清除緩衝
info =“描述” jsp檔案的描述資訊
isErrorPage=“true/false” 當前頁面是否發生錯誤
errorPage="url" 如果分頁錯誤,顯示的頁面
contentType="contenTypeInfo" 頁面的屬性資訊
<% @page session=“true”%>(預設)--表示session功能已經在jsp頁面中啟動
pageEncoding="gb23123" 設定編碼格式
taglib 指令
匯入指令標籤
<%@ taglib prefix="c" uri="選擇"%>
“c” 為別名 (jsp指令在用的時候標記名) “選擇”是由快速鍵產生 一般為 http://java.sun.com/jsp/jstl/core 該標籤庫為標準標籤庫 可以實現判斷 迴圈 等操作
可以使用taglib標籤匯入jsp其他標籤,實現一些特殊功能
<c:if test="" var="" scope=""> 標籤體
</c:if> test屬性值為true時,執列標籤體的內容(可以是html,java代碼)。
test屬性:使用el運算式來賦值。
var屬性:指定一個綁訂名稱
scope屬性:指定一個綁訂範圍(page,request,session,application)。
<c:choose>,<c:when>,<c:otherwise>
when表示一個分支,可以出現多次;
otherwise表示例外,只能出現一次;
test屬性值為true時,執列標籤體的內容(可以是html,java代碼)。
<c:forEach var="" items="" varStatus="">
</c:forEach>遍曆集合 items屬性:指定要遍曆的集合,一般使用
el運算式來指定。
var屬性:指定綁訂名稱,綁訂範圍是pageContext。
varStatus屬性:指定綁訂名稱,該綁訂名稱對應了一個特殊的對象,該對象封裝了當前遍曆的狀態。
動作 <jsp: 動作名 屬性=“值” />
forward 動作
<jsp: forward page="a.jsp"/>
跳轉到別的頁面 用於將一個jsp的內容傳送到page所指定的JSP程式或者Servlet中處理(URL)
useBean 動作
<jsp:useBean id="bj" class="包名.類名"/>
使用Javabean類 ID為別名
<jsp:setProperty property="a" name="b" value="c"/> a 類的屬性名稱 b javaBean的名字 (bj) c 屬性值
為使用的Javabean設定屬性值
<jsp:getProperty property="a" name="bj"> a 屬性的名字 bj 使用的Javabean的別名
得到Javabean屬性值
<jsp:param value="apple" name="key"/> jsp頁面傳參用到的 name="key" 相當於key值 value="apple" 相當value值
include 動作
<jsp: include page="a..jsp" />
動態組合兩個頁面
注釋
<!-- --> 該注釋用戶端可以在源碼中看到
<%-- --%> 該注釋用戶端在源碼中看不到
運算式 <%= Java屬性/變數 %>
可以引用Java代碼中的值
Java指令碼 <% Java代碼 %>
可以執行Java代碼(預Java保持一致 注意導包)
聲明 <%! 方法 %>
理論部分
命令的include 和動作的include (合并頁面)的區別
標記: 藍色
靜態匯入
1.用<[email protected] include file="a.jsp" /> 指令
2. 把b頁面的內容複寫到a頁面,然後編譯為Java檔案 ,在轉換為 .class 檔案 ,放到work目錄中去
3.產生檔案 a.java a.class
動態匯入
1.用<jsp:include page="b.jsp" /> 動作
2.獨立編譯 由伺服器在訪問時動態組合為一個頁面
3.產生檔案 a.java a.class b.java b.class
jsp 九大內建對象(可以直接調用方法)
pageContext jsp中特有的對象 (jsp內容物件,作用於當前頁面)
request 同servlet中的request 對象 來源於httpservletrequest
session 來源servlet中的httpsession
application 來源 servletcontext
response 來源 httpservletresponse
out 來源 servlet中的printwriter
page jsp編譯後產生的servlet對象
config servletconfig 獲得servlet配置參數
exception throwble 頁面的異常類
標籤的運行過程
標籤的運行過程:
容器依據命名空間找到標籤的描述檔案(.tld檔案),
依據標籤的名稱找到標籤類,接下來建立標籤類的執行個體,執行對應的方法。
web 儲存狀態 ----參考html 補充知識總結
EL 運算式 (expression language)
從所有範圍取出值的一個簡單方法
基本文法 ${值}
${key} 代表從四大範圍中尋找有沒有“key”
${sessionScope.key} 代表從session中尋找有沒有“key”
同樣還有 pageScope requestScope sessionScope applicationScope
可以對運算子進行運算 如 ${10+2*8}
${user.name} 代表從Java類user中取出name的值
el運算式不能迴圈
cookie 瀏覽器小文本資訊
服務端寫入cookie資訊
在servlet中一個cookie對象只能存貯一個字串資訊 如果要存多個 則需要多個cookie
*response的addCookie方法 得到cookie對象
-- 最後把cookie發送到瀏覽器去,瀏覽器自動寫到用戶端相應位置
cookie 伺服器寫到用戶端的小文本資訊(文本的map集合) 多用於登入時記錄使用者名稱 密碼 等資訊 實現自動登入功能 資訊不安全
jsp取出cookie中的值
%java指令碼%>
Cookie[] cs=request.getCookies() 得到cookies對象數組
foreach迴圈 調用getName/getValue方法 得到key和value 把文本輸入框預設設定為剛才得到的值
標記: 實現自動填寫帳號的功能
Java知識總結-6