20.jsp语法
JSP 語法
本小節(jié)將會(huì)簡(jiǎn)單地介紹一下JSP開發(fā)中的基礎(chǔ)語法。
腳本程序
腳本程序可以包含任意量的Java語句、變量、方法或表達(dá)式,只要它們?cè)谀_本語言中是有效的。
腳本程序的語法格式:
<% 代碼片段 %>或者,您也可以編寫與其等價(jià)的XML語句,就像下面這樣:
<jsp:scriptlet>代碼片段 </jsp:scriptlet>任何文本、HTML標(biāo)簽、JSP元素必須寫在腳本程序的外面。
下面給出一個(gè)示例,同時(shí)也是本教程的第一個(gè)JSP示例:
<html> <head><title>Hello World</title></head> <body> Hello World!<br/> <% out.println("Your IP address is " + request.getRemoteAddr()); %> </body> </html>運(yùn)行結(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"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>歌謠</title> </head> <body> Hello World!<br/> <% out.println("你的 IP 地址 " + request.getRemoteAddr()); %> </body> </html>JSP聲明
一個(gè)聲明語句可以聲明一個(gè)或多個(gè)變量、方法,供后面的Java代碼使用。在JSP文件中,您必須先聲明這些變量和方法然后才能使用它們。
JSP聲明的語法格式:
<%! declaration; [ declaration; ]+ ... %>或者,您也可以編寫與其等價(jià)的XML語句,就像下面這樣:
<jsp:declaration>代碼片段 </jsp:declaration>程序示例:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>JSP表達(dá)式
一個(gè)JSP表達(dá)式中包含的腳本語言表達(dá)式,先被轉(zhuǎn)化成String,然后插入到表達(dá)式出現(xiàn)的地方。
由于表達(dá)式的值會(huì)被轉(zhuǎn)化成String,所以您可以在一個(gè)文本行中使用表達(dá)式而不用去管它是否是HTML標(biāo)簽。
表達(dá)式元素中可以包含任何符合Java語言規(guī)范的表達(dá)式,但是不能使用分號(hào)來結(jié)束表達(dá)式。
JSP表達(dá)式的語法格式:
<%= 表達(dá)式 %>同樣,您也可以編寫與之等價(jià)的XML語句:
<jsp:expression>表達(dá)式 </jsp:expression>程序示例:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>歌謠</title> </head> <body> <p>今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p> </body> </html>運(yùn)行結(jié)果
JSP注釋
JSP注釋主要有兩個(gè)作用:為代碼作注釋以及將某段代碼注釋掉。
JSP注釋的語法格式
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>歌謠</title> </head> <body> <%-- 該部分注釋在網(wǎng)頁中不會(huì)被顯示--%> <p>今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p> </body> </html>運(yùn)行結(jié)果
不同情況下使用注釋的語法規(guī)則:
| <%-- 注釋 --%> | JSP注釋,注釋內(nèi)容不會(huì)被發(fā)送至瀏覽器甚至不會(huì)被編譯 |
| <!-- 注釋 --> | HTML注釋,通過瀏覽器查看網(wǎng)頁源代碼時(shí)可以看見注釋內(nèi)容 |
| <\% | 代表靜態(tài) <%常量 |
| %\> | 代表靜態(tài) %> 常量 |
| \' | 在屬性中使用的單引號(hào) |
| \" | 在屬性中使用的雙引號(hào) |
JSP指令
JSP指令用來設(shè)置與整個(gè)JSP頁面相關(guān)的屬性。
JSP指令語法格式:
<%@ directive attribute="value" %>這里有三種指令標(biāo)簽:
| <%@ page ... %> | 定義頁面的依賴屬性,比如腳本語言、error頁面、緩存需求等等 |
| <%@ include ... %> | 包含其他文件 |
| <%@ taglib ... %> | 引入標(biāo)簽庫(kù)的定義,可以是自定義標(biāo)簽 |
JSP行為
JSP行為標(biāo)簽使用XML語法結(jié)構(gòu)來控制servlet引擎。它能夠動(dòng)態(tài)插入一個(gè)文件,重用JavaBean組件,引導(dǎo)用戶去另一個(gè)頁面,為Java插件產(chǎn)生相關(guān)的HTML等等。
行為標(biāo)簽只有一種語法格式,它嚴(yán)格遵守XML標(biāo)準(zhǔn):
<jsp:action_name attribute="value" />行為標(biāo)簽基本上是一些預(yù)先就定義好的函數(shù),下表羅列出了一些可用的JSP行為標(biāo)簽::
| jsp:include | 用于在當(dāng)前頁面中包含靜態(tài)或動(dòng)態(tài)資源 |
| jsp:useBean | 尋找和初始化一個(gè)JavaBean組件 |
| jsp:setProperty | 設(shè)置 JavaBean組件的值 |
| jsp:getProperty | 將?JavaBean組件的值插入到 output中 |
| jsp:forward | 從一個(gè)JSP文件向另一個(gè)文件傳遞一個(gè)包含用戶請(qǐng)求的request對(duì)象 |
| jsp:plugin | 用于在生成的HTML頁面中包含Applet和JavaBean對(duì)象 |
| jsp:element | 動(dòng)態(tài)創(chuàng)建一個(gè)XML元素 |
| jsp:attribute | 定義動(dòng)態(tài)創(chuàng)建的XML元素的屬性 |
| jsp:body | 定義動(dòng)態(tài)創(chuàng)建的XML元素的主體 |
| jsp:text | 用于封裝模板數(shù)據(jù) |
JSP隱含對(duì)象
JSP支持九個(gè)自動(dòng)定義的變量,江湖人稱隱含對(duì)象。這九個(gè)隱含對(duì)象的簡(jiǎn)介見下表:
| request | HttpServletRequest類的實(shí)例 |
| response | HttpServletResponse類的實(shí)例 |
| out | PrintWriter類的實(shí)例,用于把結(jié)果輸出至網(wǎng)頁上 |
| session | HttpSession類的實(shí)例 |
| application | ServletContext類的實(shí)例,與應(yīng)用上下文有關(guān) |
| config | ServletConfig類的實(shí)例 |
| pageContext | PageContext類的實(shí)例,提供對(duì)JSP頁面所有對(duì)象以及命名空間的訪問 |
| page | 類似于Java類中的this關(guān)鍵字 |
| Exception | Exception類的對(duì)象,代表發(fā)生錯(cuò)誤的JSP頁面中對(duì)應(yīng)的異常對(duì)象 |
控制流語句
JSP提供對(duì)Java語言的全面支持。您可以在JSP程序中使用Java API甚至建立Java代碼塊,包括判斷語句和循環(huán)語句等等。
判斷語句
If…else塊,請(qǐng)看下面這個(gè)例子:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%! int day = 3; %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>歌謠</title> </head> <body> <h3>IF...ELSE 實(shí)例</h3> <% if (day == 1 | day == 7) { %><p>今天是周末</p> <% } else { %><p>今天不是周末</p> <% } %> </body> </html>運(yùn)行結(jié)果
現(xiàn)在來看看switch…case塊,與if…else塊有很大的不同,它使用out.println(),并且整個(gè)都裝在腳本程序的標(biāo)簽中,就像下面這樣:
循環(huán)語句
在JSP程序中可以使用Java的三個(gè)基本循環(huán)類型:for,while,和 do…while。
讓我們來看看for循環(huán)的例子,以下輸出的不同字體大小的"歌謠":
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%! int fontSize; %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>歌謠</title> </head> <body> <h3>For 循環(huán)實(shí)例</h3> <%for ( fontSize = 1; fontSize <= 3; fontSize++){ %><font color="green" size="<%= fontSize %>">歌謠是最棒的</font><br /> <%}%> </body> </html>運(yùn)行結(jié)果
將上例改用 while 循環(huán)來寫:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%! int fontSize=0; %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>歌謠</title> </head> <body> <h3>While 循環(huán)實(shí)例</h3> <%while ( fontSize <= 3){ %><font color="green" size="<%= fontSize %>">歌謠是最棒的</font><br /> <%fontSize++;%> <%}%> </body> </html>運(yùn)行結(jié)果
JSP運(yùn)算符
JSP支持所有Java邏輯和算術(shù)運(yùn)算符。
下表羅列出了JSP常見運(yùn)算符,優(yōu)先級(jí)從高到底:
| 后綴 | () [] . (點(diǎn)運(yùn)算符) | 左到右 |
| 一元 | ++ - - ! ~ | 右到左 |
| 可乘性 | * / %? | 左到右 |
| 可加性 | + -? | 左到右 |
| 移位 | >> >>> << ? | 左到右? |
| 關(guān)系 | > >= < <= ? | 左到右 |
| 相等/不等 | == !=? | 左到右 |
| 位與 | &? | 左到右 |
| 位異或 | ^? | 左到右 |
| 位或 | |? | 左到右 |
| 邏輯與 | &&? | 左到右 |
| 邏輯或 | ||? | 左到右 |
| 條件判斷 | ?:? | 右到左 |
| 賦值 | = += -= *= /= %= >>= <<= &= ^= |=? | 右到左 |
| 逗號(hào)? | ,? | 左到右? |
JSP 字面量
JSP語言定義了以下幾個(gè)字面量:
- 布爾值(boolean):true 和 false;
- 整型(int):與 Java 中的一樣;
- 浮點(diǎn)型(float):與 Java 中的一樣;
- 字符串(string):以單引號(hào)或雙引號(hào)開始和結(jié)束;
- Null:null。
?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: Spring DAO之JDBC
- 下一篇: c语言-背包问题贪心算法