jsp元素包括:
一,jsp頁面
1,注釋
可見注釋 html注釋,浏覽器可見,不安全
<!-- comment -->
普通注釋 Java注釋,浏覽器不可見,安全,但違背Java與html代碼分離原則
<% //comment > 或 <% >
隱藏注釋 JSP注釋,浏覽器不可見,安全,建議使用
<%-- comment --%>
2,指令
<%@ ... %>
page 不是不必備的,作用於本jsp頁面,不包含<jsp:include>進來的頁面,只有import屬性可以重復
<%@ page
extends="class name" //自定義父類必須實現javax.servlet.HttpJspPage接口
improt="java package list" //多個包,逗號隔開
session="true | false" //是否內建session對象
buffer="none | 8KB | custom size" //out對象緩沖區大小
false" //是否自動沖刷,false且滿時將拋出異常
inThreadSafe="true | false" //告訴服務器你的線程是否安全,false時不支持並發
info="page info" //可通過getServletInfo()取得
errorPage="error page url" //頁面異常時轉向的頁面
isErrorPage="true | false" //true時可使用內建對象Exception,false時不可以,默認false
contentType="text/html;charset=ISO-8849-1" //“輸出到客戶端”時的MIME類型和字符集,默認為<--
pageEncoding="char encoding type" //JSP頁面的字符集編碼
isELIgnored="true | false" //是否支持EL表達式
%>
include 包含靜態文件(jsp,html,txt,java...),
<%@ include file="URL" %>
不能包含URL變量,如:<%@ include file="<%= Expression %>" %>
不能再包含的文件後接任何參數。如:<%@ include file="index.jsp?name=user" %>
所包含文件中避免使用<html> <body>等標簽,防止與原網頁沖突
建議所包含文件後綴名以"f"(fragment)結尾,如jspf,避免jsp編譯器對其編譯
include指令與jsp:include動作區別見:http://blog.sina.com.cn/s/blog_73cdc7a601018x7l.html
taglib 聲明自定義標簽庫
<%@ taglib uri="URI To Tag Library" prefix="pubtag" %>
3,腳本元素
聲明
<%! declaration; [declaration;]+ ... %>
聲明類、方法、變量,全局共享,線程不安全
表達式
<%= java expression %>
表達式不已分號結尾,等價於 <% out.print(expression); %>,可作為其它jsp元素屬性值
腳本小程序
<% java code %>
Scriptlet內的Java語句不一定是完整的,聲明的變量為局部變量
4,模板數據
動作
標准動作
jsp:include 實現請求階段包含靜態或動態資源,只能訪問JspWriter,不能設置響應頭或Cookie,效率比include指令低,
<jsp:include page="URL | <%= Expression %>" flush="true"> //默認flush為false,必須使用true
[<jsp:param name="param name" value="param value | <%= Expression %> " />]?+
</jsp:include>
jsp:forword 將請求轉發到另一個資源,該資源必須和發送者位於請求相同的上下文環境中,遇到此操作時立即轉發
<jsp:forword page="URL | <%= Expression %>">
[<jsp:param name="param name" value="param value | <%= Expression %> " /> ]?+
</jsp:forword>
jsp:useBean
<jsp:useBean
id="beanId"
class="package.class" //實例化類
scope="request" //作用域范圍,默認為Page
type="superclass or interface" //接口或超類的類型
/>
jsp:setProperty
<jsp:setProperty
name="bean name" //該屬性所屬bean的name
property="property name" //屬性名
value="str" //屬性值,也可用EL表達式
/jsp:setProperty>
可采用通配符"*"來設置與HTTP表單屬性同名的JavaBean屬性值,如:
<jsp:setProperty name="user" property="*" />,來代替:
<jsp:setProperty name="user" property="name" value="<%= Request.getParameter("name") %>" />
<jsp:setProperty name="user" property="password" value="<%= Request.getParameter(" password") />
若不同名,可使用Request參數設置,如:
<jsp:setProperty name="user" property="name" param="username" />
jsp:getProperty
<jsp:getProperty
name="bean name" //該屬性所屬bean的name
property="property name" //屬性名
/jsp:getProperty>
jsp:param 新參數的作用域是</jsp:include>和</jsp:forword>
<jsp:param name="param name" value="param value | <%= Expression %> " />
jsp:plugin
<jsp:plugin type="Applet | Bean" codebase="URL" >
[<jsp:param name="param name" value="param value | <%= Expression %> " /> ]?+
[<jsp:callback> arbitary_text </jsp:fallback> ]?+
</jsp:plugin>
注意:
1,使用include指令時,包含文件和被包含文件必須采用一致的編碼方式
2,使用<jsp:forward>和<jsp:include>指令可共享Request作用域范圍內的bean。