JSP備忘

一、基本概念:

JSP是一門腳本語言。
JSP擁有Java語言的所有特性。
JSP運行於JSP容器之中:Tomcat8、Jetty9。
JSP==》Servlet==》class文件。
JSR:Java規範請求。
JCP:Java社區組織。


二、腳本程序:

腳本程序可以包含任意量的Java語句、變量、方法或表達式,只要它們在腳本語言中是有效的。
腳本程序的語法格式:

<% 代碼片段 %>

三、JSP聲明:

一個聲明語句可以聲明一個或多個變量、方法,供後面的Java代碼使用。在JSP文件中,您必須先聲明這些變量和方法然後才能使用它們。
JSP聲明的語法格式:

<%! declaration; [ declaration; ]+ ... %>

示例:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 

四、JSP表達式:

一個JSP表達式中包含的腳本語言表達式,先被轉化成String,然後插入到表達式出現的地方。
由於表達式的值會被轉化成String,所以您可以在一個文本行中使用表達式而不用去管它是否是HTML標籤。
表達式元素中可以包含任何符合Java語言規範的表達式,但是不能使用分號來結束表達式。
JSP表達式的語法格式:

<%= 表達式 %>

示例:

<p>
   Today's date: <%= (new java.util.Date()).toLocaleString()%>
</p>

五、JSP註釋:

JSP註釋主要有兩個作用:爲代碼作註釋以及將某段代碼註釋掉。
JSP註釋的語法格式:

<%-- 這裏可以填寫 JSP 註釋 --%>

六、JSP指令:

JSP指令用來設置與整個JSP頁面相關的屬性。
JSP指令語法格式:

<%@ directive attribute="value" %>

這裏有三種指令標籤:

<%@ page ... %> 定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等
<%@ include ... %>  包含其他文件
<%@ taglib ... %>   引入標籤庫的定義,可以是自定義標籤

示例:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

七、JSP行爲:

JSP行爲標籤使用XML語法結構來控制servlet引擎。它能夠動態插入一個文件,重用JavaBean組件,引導用戶去另一個頁面,爲Java插件產生相關的HTML等等。
行爲標籤只有一種語法格式,它嚴格遵守XML標準:

<jsp:action_name attribute="value" />

行爲標籤基本上是一些預先就定義好的函數,下表羅列出了一些可用的JSP行爲標籤::

jsp:include 用於在當前頁面中包含靜態或動態資源
jsp:useBean 尋找和初始化一個JavaBean組件
jsp:setProperty 設置 JavaBean組件的值
jsp:getPropertyJavaBean組件的值插入到 outputjsp:forward 從一個JSP文件向另一個文件傳遞一個包含用戶請求的request對象
jsp:plugin  用於在生成的HTML頁面中包含AppletJavaBean對象
jsp:element 動態創建一個XML元素
jsp:attribute   定義動態創建的XML元素的屬性
jsp:body    定義動態創建的XML元素的主體
jsp:text    用於封裝模板數據

幾個示例:

<jsp:include page="{urlSpec | <%= expression %>}" flush="true | false " />
<jsp:forward page={"relativeURL" | "<%= expression %>"} />
<jsp:param name="ParameterName" value="ParameterValue" />

該部分可以參考文章:jsp行爲元素介紹


八、JSP隱含對象:

JSP支持九個自動定義的變量,江湖人稱隱含對象。這九個隱含對象的簡介見下表:

對象 描述
request HttpServletRequest類的實例
response HttpServletResponse類的實例
out PrintWriter類的實例,用於把結果輸出至網頁上
session HttpSession類的實例
application ServletContext類的實例,與應用上下文有關
config ServletConfig類的實例
pageContext PageContext類的實例,提供對JSP頁面所有對象以及命名空間的訪問
page 類似於Java類中的this關鍵字
Exception Exception類的對象,代表發生錯誤的JSP頁面中對應的異常對象

九、控制流語句:

判斷語句
If…else塊,請看下面這個例子:

<%! int day = 3; %> 
<html> 
<head><title>IF...ELSE Example</title></head> 
<body>
<% if (day == 1 | day == 7) { %>
      <p> Today is weekend</p>
<% } else { %>
      <p> Today is not weekend</p>
<% } %>
</body> 
</html> 

switch…case塊:

<body>
<% 
switch(day) {
case 0:
   out.println("It\'s Sunday.");
   break;
case 1:
   out.println("It\'s Monday.");
   break;
case 2:
   out.println("It\'s Tuesday.");
   break;
case 3:
   out.println("It\'s Wednesday.");
   break;
case 4:
   out.println("It\'s Thursday.");
   break;
case 5:
   out.println("It\'s Friday.");
   break;
default:
   out.println("It's Saturday.");
}
%>
</body> 

循環語句:

<%! int fontSize; %> 
<html> 
<head><title>FOR LOOP Example</title></head> 
<body>
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
   <font color="green" size="<%= fontSize %>">
    JSP Tutorial
   </font><br />
<%}%>
</body> 
</html> 

十、JSP運算符:

這裏寫圖片描述


十一、JSP 標準標籤庫(JSTL):

JSP標準標籤庫(JSTL)是一個JSP標籤集合,它封裝了JSP應用的通用核心功能。
JSTL支持通用的、結構化的任務,比如迭代,條件判斷,XML文檔操作,國際化標籤,SQL標籤。 除了這些,它還提供了一個框架來使用集成JSTL的自定義標籤。
在使用時,需要將standard.jar和jstl.jar文件拷貝到web服務器下。
引用語法:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

常用的如下:
這裏寫圖片描述
這裏寫圖片描述


十二、自定義標籤:

定義文件格式示例:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
  <description>JSTL 1.1 functions library</description>
  <display-name>JSTL functions cms</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>fnc</short-name>
  <uri>http://java.sun.com/jsp/jstl/functionsc</uri>

  <function>
    <description>獲取站點</description>
    <name>getSite</name>
    <function-class>com.thinkgem.jeesite.modules.cms.utils.CmsUtils</function-class>
    <function-signature>com.thinkgem.jeesite.modules.cms.entity.Site getSite(java.lang.String)</function-signature>
    <example>${fnc:getSite(siteId)}</example>  
  </function>

</taglib>

引入自定義標籤:

<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %>

使用實例:

<ul>
    <c:forEach items="${fnc:getArticleList(site.id, 2, 8, '')}" var="article">
            <li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span>
            <a href="${article.url}" style="color:${article.color}">${fns:abbr(article.title,28)}</a>
            </li>
    </c:forEach>
</ul>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章