標籤:顯示 簡單介紹 span tty 包含 伺服器 htm 檔案的 另一個
一、JSP編程介紹
JSP是實現普通靜態HTML和動態HTML混合編碼的技術,可以說是Servlet的一種變形,相比Servlet它更像普通的Web頁面。JSP在第一次運行時會花費很長時間,原因在與其本質還是Servlet,也就是說JSP會由伺服器Tomcat自動轉換為Servlet後載入運行。
JSP頁面中除了普通的HTML代碼外還包含其他三種主要成分:指令碼元素、指令和動作。指令碼元素用於在JSP頁面中嵌入Java代碼,指令用於從整體上控制Servlet的結構,動作用來引入現有的組件來控制Web容器的行為。
二、JSP指令碼元素(1)、輸出運算式
文法:<%=運算式%>
作用:輸出運算式的計算結果
注意事項:運算式中所有的變數必須是已經聲明過的變數,%與=號之間不能有空格且運算式後面不需要分號
舉例:
1 <%for(int i = 1;i < 7; i++){%>2 <h <%=i%> >Hello!</h <%=i%> > <br>3 <%}%>
(2)、注釋
文法:<!--注釋-->與<%--注釋--%>兩種
作用:前者是輸出到用戶端的注釋;後者不輸出到用戶端,僅表示JSP注釋,在運行時這種注釋不會轉化為HTML的注釋即在用戶端查看源碼時是不可見的。
舉例:
1 <!--用戶端看得到的注釋-->2 <%--用戶端看不到的注釋--%>
(3)、聲明變數、方法和類①、聲明變數
文法:<%!聲明代碼%>
注意事項:
1.JSP中聲明的變數範圍為整個頁面,故只要在頁面中聲明變數即可無需主義聲明與使用的先後順序,但習慣上我們一般先聲明後使用變數。
2.JSP中聲明的變數在伺服器上為全域變數。我們都知道JSP運行時是自動轉化為Servlet,而每個Servlet運行期間在伺服器的容器內部僅僅只有一個執行個體,對於不同的用戶端請求會產生不同的線程響應,因此JSP中聲明的變數的任何修改均會影響到所有訪問該JSP頁面的用戶端。
舉例:
1 <%--JSP變數聲明--%>2 <h1>JSP變數聲明</h1>3 <%i++; %>4 <p>你是第個<%=i %>訪問本網站的使用者!</p>5 <!--JSP聲明變數的範圍為整個頁面,故聲明語句可放在後面.-->6 <%!int i=0;%>
②、聲明方法
文法:<%!聲明代碼%>
注意事項:在JSP頁面中聲明的方法在整個頁面中都有效,但在該方法中定義的變數僅在該方法中有效。
舉例:
1 <%--JSP方法聲明--%>2 <h1>JSP方法聲明</h1>3 <%!String sayHello(){4 return "Hello";5 }%>6 <%=sayHello() %>
③、聲明類
文法:<%!聲明代碼%>
注意事項:在JSP頁面中聲明的類在整個頁面中都有效。
舉例:
1 <%--JSP類聲明--%> 2 <h1>JSP方法聲明</h1> 3 <%!public class sayHello{ 4 boolean county; 5 sayHello(boolean county){ 6 this.county=county; 7 } 8 String Hello(){ 9 if(county)10 return "Hello";11 else12 return "Hi";13 }14 }%>15 <%sayHello sHello = new sayHello(false); %>16 <%=sHello.Hello()%>
三、JSP指令(一)、page指令
Page指令用於定義整個JSP頁面的全域屬性。一下是一些常用屬性:
1.language屬性
文法:<%@page language="語言"%>
說明:用於指明JSP指令碼使用的程式設計語言即檔案編譯語言。目前該屬性的屬性值只有“java”。
2.contentType屬性
文法:<%@page contentType="語言"%>
說明:指定MIME類型和JSP的編碼方式
3.pageEncoding屬性
文法:<%@page pageEncoding="語言"%>
說明:指定編碼方式
用法樣本:
1 <%@page language="java" contentType="text/html;charset=UTF-8"2 pageEncoding="UTF-8"%> <%--1.指明JSP頁面指令碼使用的程式設計語言,即設定編譯語言3 2.指定MIME的類型及JSP檔案的字元編碼方式4 3.指定JSP檔案本身的編碼方式--%>
4.import屬性
文法:<%@page import="java包"%>
說明:匯入Java包,可以只匯入一個也可匯入多個,匯入多個Java包時中間用逗號隔開。
用法樣本:
1 <%@page import="javax.websocket.Session"%>2 <%@page import="java.util.*,java.lang.*" %> <%--匯入Java包--%>
5.session屬性
文法:<%@page session="true"%>或<%@page session="false"%>
說明:設定JSP頁面是否支援會話,預設情況允許會話即session值為true。
1 <%@page session="false"%> <%--指明JSP頁面是否支援會話(預設支援)--%>
6.errorPage屬性
文法:<%@page errorPage="程式"%>
說明:指定當JSP頁面程式發生錯誤時用來處理的程式。
用法樣本:
1 <%@page errorPage="error.jsp"%> <%--出現錯誤時由error.jsp處理--%>
7.isThreadSafe屬性
文法:<%@page isThreadSafe="true"%>或<%@page isThreadSafe="false"%>
說明:設定JSP檔案是否能同時處理多個使用者的請求,預設情況一個JSP能處理多個進程,即session值為true。
用法樣本:
1 <%@page isThreadSafe="false"%> <%--只允許單線程,預設為True即預設允許多線程--%>
(二)、include指令
說明:include指令向JSP頁面內嵌入一個檔案,改檔案可以是HTML檔案、JSP檔案或其他文字檔。
用法樣本:
1 <h3><%@include file="copyright.html" %></h3>
(三)、taglib指令四、JSP動作
JSP動作組件是一些XML文法格式的標記,被用於控制Web容器的行為。利用JSP動作組件可動態地向頁面中插入檔案、重用JavaBean組件、把使用者重新導向到另外的頁面等。
常見的JSP動作組件有以下幾種:
(一)、include動作組件
文法:<jsp:include page="檔案名稱" flush=“true”/>
說明:flush參數必須為true不能用false。
注意事項:include動作組件和include指令元素十分不同。
include動作組件在執行時才對其所包含的檔案進行處理,故JSP頁面與包含的檔案在邏輯上和物理上均是獨立的,若對檔案進行修改則在運行時就可看到檔案修改後的結果。
include指令中包含的檔案若發生修改必須重新將JSP頁面轉譯成Java檔案才可以看到修改後的內容,否則只能看到修改前的檔案內容。
(二)、forward動作組件
文法:<jsp:forword page="網頁名稱"/>
說明:將瀏覽器顯示的網頁導至另一個HTML或JSP網頁,用戶端看到的地址為A頁面的地址而實際內容卻是B頁面的內容。
注意事項:在使用forward組件之前不能有任何內容已輸出到用戶端,否則會有意外拋出。而<jsp:forword>標記後的代碼將不再執行。
(三)、param動作組件
文法:<jsp:param name="參數名稱" value="值"/>
說明:用於傳遞參數資訊,必須配合include和forward動作組件一起使用。
(四)、plugin動作組件
文法:<jsp:plugin type="bean|applet" code="classFileName" codevase="classFileDirectoryName">
說明:執行一個Applet或Bean
(五)、setProperty、getProperty及useBean動作組件(這裡簡單介紹在JavaBean後再詳細記錄)
setProperty:<jsp:setProperty>設定JavaBean的屬性
getProperty:<jsp:getProperty>輸出某個JavaBean的屬性
useBean:<jsp:useBean>尋找或執行個體化一個JavaBean
Java EE JSP編程基礎