jsp 一點點

jsp學習

jsp -處理

  • 做爲正常的頁面,你的瀏覽器發送一個http請求道web服務器。
  • web 服務器認可一個JSP頁面的HTTP請求,並將其轉發給一個JSP引擎。
  • JSP引擎從磁盤加載JSP頁面並將其轉換爲一個servlet的內容。將全部的模板文本轉換爲printIn()語句,全部JSP元素轉化爲JAVA代碼實現頁面的相應的動態行爲。(這種行爲相似前端模板,基於字符串的模板引擎的實現,如將模板寫入<script>標籤之中。)
  • JSP 引擎編譯servlet到一個可執行的類中,並將原始請求轉發給一個servlet引擎(相對於php而言,多了一個引擎的處理)。
  • 調用servlet引擎的web服務器的一部分加載到Servlet類並執行它。執行期間,Servlet產生一個Html格式的輸出,servlet引擎將該輸出傳遞到http響應內的web服務器中。
  • web服務器將http響應以靜態html內容的形式轉發到客戶端的瀏覽器中。
  • 最後web瀏覽器處理Http響應中的動態生成的html頁面,就好像它是一個靜態頁面。

因此在某種程度上來講,一個 JSP 頁面只是用另外一種方式來寫 servlet,而不須要成爲一個 Java 編程奇才。除了翻譯階段,處理 JSP 頁面徹底就像處理一個普通的 servlet 同樣。php

能夠認爲是一個語法糖,能夠類比react之中的jsx,實際上就是一個js函數。html

jsp -生命週期

理解 JSP 的低級功能的關鍵是理解它們遵循的簡單的生命週期。前端

JSP 生命週期能夠被定義爲從建立到銷燬的整個過程,這相似於一個 servlet 的生命週期與一個額外的步驟,該步驟將一個 JSP 編譯成 servlet。vue

當瀏覽器請求一個 JSP,JSP 引擎首先檢查是否須要編譯頁面。若是頁面從未被編譯,或者 JSP 自上次編譯後被修改了,那麼 JSP 引擎就會編譯頁面。java

jsp -語法

jsp - scriptlet

scriptlet 能夠包含任意數量的 JAVA語言語句,變量或方法聲明,或者咋頁面的腳本語言中有效的表達式。下面是scriptlet的語法。react

<% code fragment %>

<jsp:scriptlet>
   code fragment
<jsp:scriptlet>

任何文本、html標籤或編寫的jsp元素必須在scriptlet以外。下面是jsp的第一個簡單的例子:web

<html>
<head><title> Hello world </title></head>
<body>
Hello world ! <br/>
<%
out.printIn("your IP address is " + request.getRemoteAddr())
%>
</body>
</html>

JSP 聲明

在JSP文件中使用變量或方法以前,必須聲明。jsp聲明能夠同時聲明一個或多個,方法以下:express

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

<jsp:declaration>
  code fragment
</jsp:declaration>

如下是JSP聲明的一些簡單的例子:編程

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

JSP 表達式

JSP 表達式元素包含一個腳本語言表達式,該表達式被賦值,轉換成一個字符串,並插入到表達式出如今JSP文件中的位置。
由於表達式的值轉換爲一個字符串,你能夠在JSP文件中的文本的一行使用一個表達式,不管該文本是不是HTML標籤標記。
根據JAVA語言規範,表達式元素能夠包含任何有效的表達式,但你不能使用分號來結束一個表達式。
JSP表達式的語法以下:瀏覽器

<%= expression %>

<jsp:expression>
  expression
</jsp:expression>

例子:

<html>
<head><title> A comment Test </title></head>
<body>
<p>
Today's data: <%= (new java.util.Date()).toLocaleString() %>
</p>
</body>
</html>

JSP 註釋

JSP 註釋指的式 JSP容器應該忽略的文本或語句。當你想要隱藏或註釋掉JSP頁面的一份分時,JSP註釋很是有用。語法以下:

<%-- This is a JSP commnet --%>

JSP 指令

JSP指令影響servlet類的整體結構。一般形式以下:

<%@ directive attribute="value" %>

JSP指令爲容器提供方向和指導,告訴它如何處理JSP過程的某些方面。

三種指令標籤:










指令 描述
<%@ page ... %> 定義page-dependent屬性,好比腳本語言,錯誤頁面和緩衝要求。
<%@ include ... %> 包含轉換階段的一個文件。
<%@ taglib ... %> 聲明一個在頁面中使用的標籤庫,包含自定義操做。

頁面指令 page

頁面指令用於爲屬於當前JSP頁面的容器提供指示。你能夠在JSP頁面的任何地方編寫頁面指令代碼。能夠將整個頁面當成一個對象,page指令就是設置當前頁面的一些屬性。
按照慣例,一般在JSP頁面的頂部編寫頁面指令代碼。下面是頁面指令的基本語法:

<%@ page attribute="value" %>

<jsp:directive.page attribute="value" />

包含指令 include

包含指令用於在轉換階段包含一個文件。這個指令告訴容器在轉換階段將其餘外部文件的內容與當前JSP合併。可在JSP頁面中的任何位置編寫include指令。
功能相似於模塊化。
通常使用這個指令的形式以下:

<%@ include file="relative url" %>

<jsp:directive.include file="relative url" />

taglib 指令 taglib

JSP API 允許用戶定義自定義的JSP標籤,看起來像HTML或XML標籤,且標籤庫是一組用戶定義的標籤,可以實現自定義的行爲。
很是相似於react、vue中的組件封裝。
uri 屬性值解析爲容器理解的一個位置,prefix 屬性通知容器什麼標記是自定義操做。語法以下:

<%@ taglib uri ="uri" prefix="prefixOfTag"%>

<jsp:directive.taglib uri="uri" prefix="preOfTag">

用例以下:

<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public" %>

<public:loop>

</public:loop>

JSP操做

JSP 操做 使用XML 語法結構來控制servlet引擎的行爲。能夠動態地插入一個文件,重用javabean組件,將用戶轉到另外一個頁面,或爲java插件生成HTML。
語法:

<jsp:action_name attribute="value" />

操做元素基本上是預約義的函數。

JSP隱式對象

JSP支持9個自動定義的變量,這也成爲隱式對象,相似於php之中的魔術變量。目前JSP只涉及v部分,不考慮這些。

控制流語句

JSP 提供了強有力的 Java 工具來嵌入到你的 web 應用程序中。你能夠在 JSP 編程中使用全部的 API 和 Jave 構建塊,包括決策語句、循環等。(就是流程、循環等模板語法)

決策的語句

if...else 像普通的scriptlet 同樣開始,但scriptlet結束於scriptlet標籤間的html文本每一行。

<%! int day = 3; %>

<html>
<head><title>IF ...ELSE ...</title></head>
<body>
<% if(day ==1 | day == 7) { %>

    <p> Today is weekend </p>

<% }else{ %>

  <p> Today is not weekend </p>

<% } %>
</body>
</html>

switch ...case

<%! int day = 3; %>

<html>
<head><title>switch ...case ...</title></head>
<body>
<%
switch(day){
    case 0:
      out.printIn("It\'s Sunday.");
      break;

    case 1:
      out.printIn("It\'s Sunday.");
      break;

    case 1:
      out.printIn("It\'s Sunday.");
      break;
}
%>
</body>
</html>

循環語句

三種基本類型來實現JSP編程:for,while和do...while

for
<%! int fontSize; %>

<html> 
<head><title>FOR LOOP Example</title></head> 
<body>
<% for(fontSize = 1; fontSize <= 3; fontSize++ >){ %>
    <font color="green" size="<%= fontSize %>">
      字體逐漸增長
    </font><br/>
<% } %>
</body> 
</html>
while
<%! int fontSize; %> 
<html> 
<head><title>WHILE LOOP Example</title></head> 
<body>
<%while ( fontSize <= 3){ %>
   <font color="green" size="<%= fontSize %>">
    字體逐漸增長
   </font><br />
<%fontSize++;%>
<%}%>
</body> 
</html>

JSP 運算符

JSP支持全部的java支持的邏輯和算術運算符。

相關文章
相關標籤/搜索