模版技術(shù)采用了EL表達(dá)式替換炕舵,邏輯控制采用了JSTL
1何之、循環(huán)控制
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setAttribute("items",new Integer[]{0,1,2,3,4}); %>
${item}
2、條件判斷
${item}
升級版的條件判斷 -- 其實(shí)就是 switch的翻譯咽筋。
3溶推、其他JSP特性控制
屬性設(shè)置 – 設(shè)置屬性的值(request中的屬性)
1
刪除屬性 -- 刪除屬性
包含文件 類似與 的功能,除了本地文件還可以互聯(lián)網(wǎng)文件奸攻。
模板設(shè)置 類似與功能
URL重寫
Click New -- 此處的URL地址既編碼了又重寫了 url.jsp?firstName=john&lastName=stephone+marbury
4蒜危、異常處理
<% int x = 10/0; %>
${myException.message}
Jsp可以在web.xml統(tǒng)一指定異常頁面,也可以自己咋page指令中 指定異常處理頁面
5睹耐、JSTL標(biāo)簽
JSTL 一共有5個(gè)標(biāo)簽庫
Core核心庫辐赞,就是上面一些控制
格式化庫,各種字符集硝训、時(shí)區(qū)格式化
XML庫 提供一些操作XML的功能
SQL庫等 提供直接查詢數(shù)據(jù)庫的操作
JSTL的函數(shù)等 主要提供一些字符串的處理
url="jdbc:mysql://localhost/TEST"
user="root" password="pass123"/>
SELECT * from Employees;
6响委、自定義JSTL標(biāo)簽
如果這些都不能滿足要求,可以自定義標(biāo)簽庫
I窖梁、編寫 *.tld 標(biāo)簽庫文件(實(shí)現(xiàn)類啊等一些配置項(xiàng))
II赘风、jsp taglib指令 引入這個(gè)標(biāo)簽庫
III、像使用標(biāo)準(zhǔn)庫一樣使用這個(gè)庫里的方法
自定義標(biāo)簽二次開發(fā)類
I纵刘、繼承 SimpleTagSupport 類邀窃,實(shí)現(xiàn) doTag 方法,如果有方法提假哎,在方法里調(diào)用invoke方法蛔翅,和攔截器/過濾器等類似的考慮。
II位谋、繼承TagSupport類,實(shí)現(xiàn)doStartTag/doEndTag方法堰燎,提供標(biāo)簽開始和結(jié)束時(shí)的控制掏父;還有BodySupport 類,可以實(shí)現(xiàn)精細(xì)的處理
III秆剪、標(biāo)簽還可以嵌套赊淑。
如果需要標(biāo)簽有屬性爵政,則類似JavaBean一樣,提供類字段陶缺,提供setter函數(shù)
*.tld
MenuItem tag
MenuItem
foo.MenuItem
-- 有屬性時(shí)配置
itemValue
true
true
public class MenuItem extends TagSupport{
private String itemValue;
public void setItemValue(String value){
itemValue = value;
}
public int doStartTag(){
return EVAL_BODY_INCLUDE;
}
public int doEndTag(){
Menu parent = (Menu)getParent();
parent.addMenuItem(itemValue);
return EVAL_PAGE;
}
}
public class Menu extends TagSupport{
private ArrayList items;
public void addMenuItem(String item){
items.add(item);
}
public int doStartTag(){
items = new ArrayList();
return EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspException{
//這里可以對item做處理
return EVAL_PAGE;
}
需要注意的是標(biāo)記處理器并不能直接訪問隱式對象钾挟,只能通過jspContext/pageContext進(jìn)行處理。