Welcome to Yumao′s Blog.
一、jsp基礎
1、什麼是jsp?
2、如何寫一個jsp文件?
1)寫一個以.jsp為後綴的文件
2)添加如下的組成元素:
a, html(html,css,javascript)
b, java代碼:
方式一 java代碼片斷:
<% %>
方式二 jsp表達式:
<%= %>
方式三 jsp聲明
<%! %>
c, 使用隱含對象
即在jsp文件里直接使用的對象。
out
request
response
session
application
pageContext: PageContext類的實例,容器會
為每一個jsp實例創建唯一的一個pageContext
實例。主要有兩個作用:
作用1,綁訂數據
setAttribute,getAttribute,removeAttribute
注意,某個jsp實例綁訂數據到pageContext
上,只有它自己能訪問。
作用2, 找到其它隱含對象。
config: ServletConfig實例
exception: 獲取jsp出錯信息。
比如,某個jsp文件(比如jsp05.jsp)有
運行過程當中,有可能出錯,則可以
採用如下方式來處理:
step1,在jsp05.jsp文件當中,使用
<%@page errorPage="error.jsp"%>
指定一個錯誤處理頁面(error.jsp)。
step2,在error.jsp文件當中,使用
<%@page isErrorPage="true"%>,
然後使用exception.getMessage方法
輸出錯誤信息。
page: 相當於this,指向了jsp實例本身
d,指令: 通知容器,在將.jsp文件轉換成
對應的.java文件時,做一些額外的處理。
page指令
import
pageEncoding
contentType
isErrorPage: true/false,為true時,可以
使用exception隱含對象。
errorPage: 值是一個jsp文件,用來指定
錯誤處理頁面。
isELIgnored: true/false,為true時,表示
忽略el表達式。
include指令
file
taglib指令: 引入jsp標籤
uri:指定一個命名空間
prefix:命名空間的前綴
e, 活動元素(Action Element): jsp已經運行了,
通知容器做一些處理。
A.:
轉發,page指定轉發的目的地地址。
B.
jsp在運行過程當中,調用另外一個jsp,
然後將二者的輸出內容合併。
page指定要調用的jsp文件。
C.
傳參,其中name指定參數名,value指
定參數值。
D.
從scope指定的範圍(可以是page,request,
session, application)中查找id指定的對象是
否存在(執行類似 request.getAttribute)。
如果存在,則什麼都不做,如果不存在,
則創建相應的對象並且綁訂。
依據name指定的名稱查找到對應的對象,
並且調用相應的get方法。
依據name指定的名稱查找到對應的對象,
並且調用相應的set方法。
f,注釋
注釋中的代碼會執行,但不會在頁面上輸出。
<%--xxxx--%>
注釋中的代碼不會執行,也不會在頁面上輸出。
3、jsp是如何執行的?
step1 .jsp文件轉換成對應的servlet。
a, html ---- > service方法里,使用out.write輸出。
b, <% %> -----> service方法里,照搬。
c, <%= %> -----> service方法里,使用out.print輸出。
d, <%! %> -----> 作為屬性或者方法。
二、jstl標籤及el表達式
1、jstl是什麼?
java standard taglib(java標準標籤庫)
a,什麼是標籤?
sun公司制訂的一種技術規範,可以將jsp
文件中的java代碼使用相應的標籤來替換。
這樣做的好處是:jsp文件當中,不再有任何的
java代碼,jsp文件會變得簡潔,並且維護方便。
b, 什麼是jstl?
apache開發的一套通用的標籤庫,捐獻給了
sun,稱之為jstl。
c,el表達式是什麼?
sun公司開發的一套簡單的計算規則,用於
給標籤的屬性賦值。新的版本當中,也允許直接
使用el表達式,即直接輸出el表達式的結果。
2、el表達式的使用
1)訪問bean(java對象)的屬性
方式一: ${user.name}
容器會依次從pageContext,request,
session,application中查找綁訂名為
"user"的對象,然後調用該對象的
getName方法,最後輸出該方法的處理結果。
使用表達式有兩個優點:
a, 會將null轉換成""輸出。
b, 依據綁訂名找不到對象,會輸出""。
指定查找範圍:
${sessionScope.user.name}
pageScope,requestScope,applicationScope
方式二: ${user["name"]}
也可以使用${user[變量]},該變量需要事先綁訂。
也允許[下標]來訪問數組的某個元素。下標從
0開始。
2)獲取表單中的參數值
a, ${param.username} :
相當於request.getParameter("username");
b, ${paramValues.interest}:
相當於request.getParameterValues("interest");
3) 計算表達式的值,直接輸出
a,算術運算: +,-,*,/,%。"+"號操作不能連接兩個
字符串。
b,關係運算: >,<,>=,<=,==,!=
c,邏輯運算: ||, &&,!
d,empty運算: 判斷一個字符串是否為空字符串
或者一個集合內部是否沒有任何的元素。
情況一: 空字符串
情況二:集合沒有任何的元素
情況三:值為null。
情況四:找不到對應的對象。
4) 計算表達式的值,給標籤的屬性賦值。
3、jstl中的核心標籤
1)使用步驟:
step1:
將jstl.jar,standard.jar 拷貝到WEB-INFlib
下。
D:czhMyEclipse 5.5.1 GA
eclipse
plugins
com.genuitec.eclipse.j2eedt.core_5.5.1
data
libraryset
JSTL1.1
lib
step2 在jsp文件內部,使用
<%@taglib prefix="" uri=""%>
2)常用標籤
當test屬性值為true,執行標籤體的內容。
test屬性值使用el表達式來賦值。
var屬性指定綁訂名。
scope屬性指定綁訂的範圍。
對集合進行遍歷。
var屬性指定綁訂名,綁訂範圍是pageContext。
items屬性指定要遍歷的集合,一般使用
el表達式來賦值。
varStatus屬性指定一個綁訂名,該綁訂名
對應了一個封裝了當前遍歷情況的對象。
比如:
index:下標從0開始,當前遍歷的那個對象的
下標。
count:下標從1開始,表示是第幾次遍歷。
練習:
將僱員列表對應的jsp文件中的java代碼
使用標籤來代替。