Jsp開發常用標籤總結
JSP全名爲Java Server Pages,中文名叫java服務器頁面,其根本是一個簡化的Servlet設計,它[1] 是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,後綴名爲(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。
它實現了Html語法中的java擴展(以 <%, %>形式)。JSP與Servlet一樣,是在服務器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。
JSP技術使用Java編程語言編寫類XML的tags和scriptlets,來封裝產生動態網頁的處理邏輯。網頁還能通過tags和scriptlets訪問存在於服務端的資源的應用邏輯。JSP將網頁邏輯與網頁設計的顯示分離,支持可重用的基於組件的設計,使基於Web的應用程序的開發變得迅速和容易。 JSP(JavaServer Pages)是一種動態頁面技術,它的主要目的是將表示邏輯從Servlet中分離出來。
Java Servlet是JSP的技術基礎,而且大型的Web應用程序的開發需要Java Servlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向因特網的所有特點。
1 Jsp標籤作用
Jsp標籤主要在jsp頁面執行java代碼,用於替換jsp腳本。
2 Jsp標籤分類
Jsp內置標籤(動作標籤): 不需要導入標籤庫
JSTL標籤庫: 需要導入標籤庫
自定義標籤: 需要導入標籤庫
3 Jsp內置標籤
<jsp:forward/> 轉發標籤
用於轉發
<jsp:param/> 參數標籤
<jsp:incude/> 包含標籤
用於包含其他頁面
注意:
1)其原理是包含與被包含的頁面先各自翻譯成獨立的java源文件,然後再運行時合併再一起。(先翻譯再合併),這叫動態包含
==== 靜態包含 vs 動態包含====
1)原理不一樣
a)靜態包含(先合併再翻譯)
b)動態包含(先翻譯再合併)
2)語法不一樣
a)靜態包含( includ指令: <%@include%> )
b)動態包含 (include標籤: <jsp:include />)
3)參數傳遞不同
a)靜態包含不能傳遞參數
b)動態包含可以向被包含頁面傳遞參數
4 JSTL標籤
jstl , java starardard tag libarary java標準標籤庫
以前: jsp2.0以前jstl不屬於java規範。屬於第三方的工具。需要導入jar包
現在: jsp2.0 jstl納入javaee規範。不需要導入jar包。
JSTL標籤庫分類:
1)核心標籤庫 (core/c ) 使用最頻繁的
2)國際化互標籤庫(fmt)
3)EL函數庫 (fn)
4)數據庫標籤庫(sql)基本不用
5)Xml標籤庫(x)基本不用
5 JSTL使用步驟
1)確保jstl的支持jar包已經導入到項目中
2)在jsp頁面的頂部導入標籤庫
<%@taglib uri="tld文件的路徑" prefix="標籤庫縮寫"%>
tld文件: 標籤庫的聲明文件(每套標籤都有一個tld文件)
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
3)使用標籤庫中的標籤
<c:set></c:set> |
6 核心標籤庫(開發中經常使用)
保存數據:
<c:set></c:set>
獲取數據
<c:out value=""></c:out>
單條件判斷:
<c:if test=""></c:if>
多條件判斷
<c:choose></c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
數據遍歷
<c:forEach></c:forEach>
<c:forTokens items="" delims=""></c:forTokens>
7 自定義標籤
自定義標籤是用戶定義的JSP語言元素。當JSP頁面包含一個自定義標籤時將被轉化爲servlet,標籤轉化爲對被 稱爲tag handler的對象的操作,即當servlet執行時Web container調用那些操作。
8 自定義標籤步驟
1)編寫一個標籤處理器程序,繼承SimpleTagSupport類(使用自定義標籤顯示ip)
public class ShowIpTag extends SimpleTagSupport{ /** * 執行標籤 */ @Override public void doTag() throws JspException, IOException { //得到request對象 PageContext pageContext = (PageContext)this.getJspContext(); HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); //得到客戶ip String ip = request.getRemoteHost(); //寫出瀏覽器 pageContext.getOut().write("自定義標籤實現獲取客戶端IP地址:"+ip); } } |
2)在WEB-INT目錄下建立tld文件,例如test.tld,內容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1">
<!-- 標籤庫版本 --> <tlib-version>1.1</tlib-version> <!-- 標籤庫的縮寫:簡單名稱 --> <short-name>test</short-name> <!-- tld文件的唯一標記 --> <uri>http://gz.test.cn</uri>
<!--標籤定義 --> <tag> <!-- 標籤名稱 --> <name>showIp</name> <!-- 標籤對應的處理器程序 --> <tag-class>gz.test.c_tag.ShowIpTag</tag-class> <!-- 標籤體輸出格式 --> <body-content>scriptless</body-content> </tag> </taglib> |
3)在jsp頁面中導入自定義標籤庫,再使用標籤庫中的標籤
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib uri="http://gz.itcast.cn" prefix="itcast"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>第一個自定義標籤</title> </head>
<body> <% //得到客戶IP地址 //String ip = request.getRemoteHost(); //out.write("客戶的IP地址爲: "+ip); %>
<test:showIp></test:showIp> </body> </html> |
9 自定義標籤作用
1)控制是否執行標籤體內容
執行:
jspFragment.invoke(null) 把標籤體內容輸出到瀏覽器
不執行:
什麼都不做!!! (不執行jspFragment.invoke(null))
2)控制是否執行標籤餘下的內容
執行:
什麼都不做!!!
不執行:
拋出SkipPageException異常即可!
3)控制重複出現執行標籤體內容