JSP 語法

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

腳本程序

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

腳本程序的語法格式:

<% 代碼片段 %>

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

<jsp:scriptlet>
   代碼片段
</jsp:scriptlet>

任何文本、HTML標簽、JSP元素必須寫在腳本程序的外面。

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

<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>

注意:請確保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é)果:

圖片.png

中文編碼問題

如果我們要在頁面正常顯示中文,我們需要在 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>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
Hello World!<br/>
<%
out.println("你的 IP 地址 " + request.getRemoteAddr());
%>
</body>
</html>

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

    JSP聲明

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

JSP聲明的語法格式:

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

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

<jsp:declaration>
   代碼片段
</jsp:declaration>

程序示例:

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

    JSP表達式

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

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

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

JSP表達式的語法格式:

<%= 表達式 %>

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

<jsp:expression>
   表達式
</jsp:expression>

程序示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
<p>
   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body> 
</html>

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

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

    JSP注釋

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

JSP注釋的語法格式:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
<%-- 該部分注釋在網(wǎng)頁中不會被顯示--%> 
<p>
   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body> 
</html>

運行后得到以下結(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" %>

這里有三種指令標簽:

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

    JSP行為

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

行為標簽只有一種語法格式,它嚴格遵守XML標準:

<jsp:action_name attribute="value" />

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

語法描述
                jsp:include                用于在當前頁面中包含靜態(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支持九個自動定義的變量,江湖人稱隱含對象。這九個隱含對象的簡介見下表:

對象描述
                requestHttpServletRequest類的示例
                responseHttpServletResponse類的示例
                outPrintWriter類的示例,用于把結(jié)果輸出至網(wǎng)頁上
                sessionHttpSession類的示例
                applicationServletContext類的示例,與應(yīng)用上下文有關(guān)
                configServletConfig類的示例
                pageContextPageContext類的示例,提供對JSP頁面所有對象以及命名空間的訪問
                page                類似于Java類中的this關(guān)鍵字
                exceptionexception 類的對象,代表發(fā)生錯誤的 JSP 頁面中對應(yīng)的異常對象

    控制流語句

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; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
<h2>IF...ELSE 示例</h2>
<% if (day == 1 | day == 7) { %>
      <p>今天是周末</p>
<% } else { %>
      <p>今天不是周末</p>
<% } %>
</body> 
</html>

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

IF...ELSE 示例
今天不是周末

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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%! int day = 3; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
<h2>SWITCH...CASE 示例</h2>
<% 
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("星期六");
}
%>
</body> 
</html>

瀏覽器訪問,運行后得出以下結(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; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
<h2>For 循環(huán)示例</h2>
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
   <font color="green" size="<%= fontSize %>">
    菜鳥教程
   </font><br />
<%}%>
</body> 
</html>

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

圖片.png

將上例改用 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>菜鳥教程(cainiaoplus.com)</title>
</head>
<body>
<h2>While 循環(huán)示例</h2>
<%while ( fontSize <= 3){ %>
   <font color="green" size="<%= fontSize %>">
    菜鳥教程
   </font><br />
<%fontSize++;%>
<%}%>
</body> 
</html>

瀏覽器訪問,輸出結(jié)果為(fontSize 初始化為0,所以多輸出了一行):

圖片.png

    JSP運算符

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

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

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

    JSP 字面量

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

  •             布爾值(boolean):true 和 false;

  •             整型(int):與 Java 中的一樣;

  •             浮點型(float):與 Java 中的一樣;

  •             字符串(string):以單引號或雙引號開始和結(jié)束;

  •             Null:null。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清