JSP 語法


本小節(jié)將會簡單地介紹一下jsp開發(fā)中的基礎(chǔ)語法。

腳本程序

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

腳本程序的語法格式:

<% 代碼片段 %>

或者,您也可以編寫與其等價的xml語句,就像下面這樣:

    代碼片段 

任何文本、html標(biāo)簽、jsp元素必須寫在腳本程序的外面。

下面給出一個示例,同時也是本教程的第一個jsp示例:

 hello world hello world!

<%
out.println("your ip address is " + request.getremoteaddr());
%>

注意:請確保apache tomcat已經(jīng)安裝在c:\apache-tomcat-7.0.2目錄下并且運行環(huán)境已經(jīng)正確設(shè)置。

將以上代碼保存在hello.jsp中,然后將它放置在 c:\apache-tomcat-7.0.2\webapps\root目錄下,打開瀏覽器并在地址欄中輸入http://localhost:8080/hello.jsp。運行后得到以下結(jié)果:

中文編碼問題

如果我們要在頁面正常顯示中文,我們需要在 jsp 文件頭部添加以下代碼:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>

接下來我們將以上程序修改為:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%> 碩編程(yapf.com) hello world!

<%
out.println("你的 ip 地址 " + request.getremoteaddr());
%>

這樣中文就可以正常顯示了。

jsp聲明

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

jsp聲明的語法格式:

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

或者,您也可以編寫與其等價的xml語句,就像下面這樣:

    代碼片段 

程序示例:

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

jsp表達式

一個jsp表達式中包含的腳本語言表達式,先被轉(zhuǎn)化成string,然后插入到表達式出現(xiàn)的地方。

由于表達式的值會被轉(zhuǎn)化成string,所以您可以在一個文本行中使用表達式而不用去管它是否是html標(biāo)簽。

表達式元素中可以包含任何符合java語言規(guī)范的表達式,但是不能使用分號來結(jié)束表達式。

jsp表達式的語法格式:

<%= 表達式 %>

同樣,您也可以編寫與之等價的xml語句:

    表達式 

程序示例:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%> 碩編程(yapf.com) 

今天的日期是: <%= (new java.util.date()).tolocalestring()%>

運行后得到以下結(jié)果:

今天的日期是: 2016-6-25 13:40:07

jsp注釋

jsp注釋主要有兩個作用:為代碼作注釋以及將某段代碼注釋掉。

jsp注釋的語法格式:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%> 碩編程(yapf.com) <%-- 該部分注釋在網(wǎng)頁中不會被顯示--%> 

今天的日期是: <%= (new java.util.date()).tolocalestring()%>

運行后得到以下結(jié)果:

今天的日期是: 2016-6-25 13:41:26

不同情況下使用注釋的語法規(guī)則:

語法 描述
<%-- 注釋 --%> jsp注釋,注釋內(nèi)容不會被發(fā)送至瀏覽器甚至不會被編譯
html注釋,通過瀏覽器查看網(wǎng)頁源代碼時可以看見注釋內(nèi)容
<\% 代表靜態(tài) <%常量
%\> 代表靜態(tài) %> 常量
\' 在屬性中使用的單引號
\" 在屬性中使用的雙引號

jsp指令

jsp指令用來設(shè)置與整個jsp頁面相關(guān)的屬性。

jsp指令語法格式:

<%@ directive attribute="value" %>

這里有三種指令標(biāo)簽:

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

jsp行為

jsp行為標(biāo)簽使用xml語法結(jié)構(gòu)來控制servlet引擎。它能夠動態(tài)插入一個文件,重用javabean組件,引導(dǎo)用戶去另一個頁面,為java插件產(chǎn)生相關(guān)的html等等。

行為標(biāo)簽只有一種語法格式,它嚴(yán)格遵守xml標(biāo)準(zhǔn):

 

行為標(biāo)簽基本上是一些預(yù)先就定義好的函數(shù),下表羅列出了一些可用的jsp行為標(biāo)簽::

語法 描述
jsp:include 用于在當(dāng)前頁面中包含靜態(tài)或動態(tài)資源
jsp:usebean 尋找和初始化一個javabean組件
jsp:setproperty 設(shè)置 javabean組件的值
jsp:getproperty 將 javabean組件的值插入到 output中
jsp:forward 從一個jsp文件向另一個文件傳遞一個包含用戶請求的request對象
jsp:plugin 用于在生成的html頁面中包含applet和javabean對象
jsp:element 動態(tài)創(chuàng)建一個xml元素
jsp:attribute 定義動態(tài)創(chuàng)建的xml元素的屬性
jsp:body 定義動態(tài)創(chuàng)建的xml元素的主體
jsp:text 用于封裝模板數(shù)據(jù)

jsp 隱含對象

jsp 支持九個自動定義的變量,江湖人稱隱含對象,它們是在 jsp 頁面中自動可用的對象,無需額外的聲明或初始化。

這九個隱含對象的簡介見下表:

對象 描述
request httpservletrequest類的實例,代表 http 請求的對象,包含客戶端發(fā)送到服務(wù)器的信息,如表單數(shù)據(jù)、url參數(shù)等。
response httpservletresponse類的實例,代表 http 響應(yīng)的對象,用于向客戶端發(fā)送數(shù)據(jù)和響應(yīng)。
out jspwriter類的實例,用于向客戶端輸出文本內(nèi)容的對象,通常用于生成html。
session httpsession類的實例,代表用戶會話的對象,可用于存儲和檢索用戶特定的數(shù)據(jù),跨多個頁面。
application servletcontext類的實例,代表 web 應(yīng)用程序的上下文,可以用于存儲和檢索全局應(yīng)用程序數(shù)據(jù)。
config servletconfig類的實例,包含有關(guān)當(dāng)前 jsp 頁面的配置信息,例如初始化參數(shù)。
pagecontext pagecontext類的實例,提供對jsp頁面所有對象以及命名空間的訪問
page 類似于 java 類中的 this 關(guān)鍵字,代表當(dāng)前 jsp 頁面的實例,可以用于調(diào)用頁面的方法。
exception exception 類的對象,代表發(fā)生錯誤的 jsp 頁面中對應(yīng)的異常對象,用于處理 jsp 頁面中的異常情況,可用于捕獲和處理頁面中發(fā)生的異常。

控制流語句

jsp提供對java語言的全面支持。您可以在jsp程序中使用java api甚至建立java代碼塊,包括判斷語句和循環(huán)語句等等。

判斷語句

if…else 塊,請看下面這個例子:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<%! int day = 3; %>  碩編程(yapf.com) 

if...else 實例

<% if (day == 1 || day == 7) { %>

今天是周末

<% } else { %>

今天不是周末

<% } %>

運行后得到以下結(jié)果:

if...else 實例
今天不是周末

現(xiàn)在來看看switch…case塊,與if…else塊有很大的不同,它使用out.println(),并且整個都裝在腳本程序的標(biāo)簽中,就像下面這樣:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<%! int day = 3; %>  碩編程(yapf.com) 

switch...case 實例

<% switch(day) { case 0: out.println("星期天"); break; case 1: out.println("星期一"); break; case 2: out.println("星期二"); break; case 3: out.println("星期三"); break; case 4: out.println("星期四"); break; case 5: out.println("星期五"); break; default: out.println("星期六"); } %>

瀏覽器訪問,運行后得出以下結(jié)果:

switch...case 實例

星期三

循環(huán)語句

在jsp程序中可以使用java的三個基本循環(huán)類型:for,while,和 do…while。

讓我們來看看for循環(huán)的例子,以下輸出的不同字體大小的"碩編程":

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<%! int fontsize; %>  碩編程(yapf.com) 

for 循環(huán)實例

<%for ( fontsize = 1; fontsize <= 3; fontsize++){ %> 碩編程 <%}%>

運行后得到以下結(jié)果:

將上例改用 while 循環(huán)來寫:

<%@ page language="java" contenttype="text/html; charset=utf-8"
    pageencoding="utf-8"%>
<%! int fontsize=0; %>  碩編程(yapf.com) 

while 循環(huán)實例

<%while ( fontsize <= 3){ %> 碩編程 <%fontsize++;%> <%}%>
瀏覽器訪問,輸出結(jié)果為(fontsize 初始化為0,所以多輸出了一行):

jsp運算符

jsp支持所有java邏輯和算術(shù)運算符。

下表羅列出了jsp常見運算符,優(yōu)先級從高到底:

類別 操作符 結(jié)合性
后綴 () [] . (點運算符) 左到右
一元 ++ - - ! ~ 右到左
可乘性 * / %  左到右
可加性 + -  左到右
移位 >> >>> <<   左到右 
關(guān)系 > >= < <=   左到右
相等/不等 == !=  左到右
位與 左到右
位異或 左到右
位或 左到右
邏輯與 &&  左到右
邏輯或 ||  左到右
條件判斷 ?:  右到左
賦值 = += -= *= /= %= >>= <<= &= ^= |=  右到左
逗號  左到右 

jsp 字面量

jsp語言定義了以下幾個字面量:

  • 布爾值(boolean):true 和 false;
  • 整型(int):與 java 中的一樣;
  • 浮點型(float):與 java 中的一樣;
  • 字符串(string):以單引號或雙引號開始和結(jié)束;
  • null:null。
相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频