1. 程式人生 > 其它 >JavaWeb(一)JSP原理,組成

JavaWeb(一)JSP原理,組成

JSP(Java sever pages):一種用於開發動態web頁面(資源)的技術。

jsp頁面是在伺服器上執行的一個頁面,一個jsp頁面就是一個類。寫jsp就像在寫html,jsp允許在頁面中編寫java程式碼,並允許開發人員在頁面中獲取request,response等web常用開發物件,實現與瀏覽器的互動。

JSP原理:

JSP 的執行過程:

(1) 客戶端發出Request (請求); (2) JSP Container 將JSP 翻譯成Servlet 的原始碼; (3) 將產生的Servlet 的原始碼經過編譯後,載入到記憶體執行; (4) 把結果Response (響應)傳送至客戶端。

JSP和Servlet的執行效率相差不大,只是第一次執行JSP頁面時需要進行編譯。 一般人都會以為JSP 的執行效能會和Servlet 相差很多,其實執行效能上的差別只在第一次的執行。因為JSP 在執行第一次後,會被編譯成Servlet 的類檔案,即為XXX.class,當再重複呼叫執行時,就直接執行第一次所產生的Servlet,而不用再重新把JSP編譯成Servlet。因此,除了第一次的編譯會花較久的時間之外,之後JSP 和Servlet 的執行速度就幾乎相同了。 在執行JSP 網頁時,通常可分為兩個時期:轉譯時期(Translation Time)和請求時期(Request Time) 。

1. JSP檔案先要被伺服器翻譯成Java檔案(Servlet),在tomcat中翻譯後的Java檔案在tomcat下的 work/Catalina /localhost 中相應名字的應用目錄裡。 2. 編譯成Java(Servlet)檔案 3. 執行.class檔案 Tomcat的全域性配置檔案$CATALINA_HOME/conf/web.xml 在Tomcat下的conf目錄中的web.xml是伺服器全域性的配置檔案,其中要想關閉列表顯示叫要把 <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> 修改為true

JSP的組成元素:

1, 指令 page指令

<%@ page ..........%> 

include指令靜態引入,引入其他的網頁,相當於將兩個頁面合成一個。公用一個request物件。

頁面跳轉可以直接在頁面後面加?變數名=值(test.jsp?name=admin) 的方式傳引數,這種靜態包含不可以。 taglib指令---標準標籤庫(JSTL),Taglib指令用於在JSP頁面中匯入標籤庫

errorPage---定義噹噹前頁面出錯時跳轉的頁面--如果當前頁面出錯則跳轉到該頁面,注意,需要在出現錯誤的提醒介面有   isErrorPage="true"

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" errorPage="error.jsp"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>出現錯誤的提醒頁面</h1>
<h3><%=exception.getMessage() %></h3>
</body>
</html>

2, 表示式 <%=變數名%>

<%=sum %>

3, 指令碼 <% 程式碼內容 %>

<%    
    for(int i=1;i<=5;i++){
        sum=sum*i;
    }
%>

單個指令碼片段的Java語句可以是不完整的,但是整個頁面中組合的Java語句必須是完整的。

4, 宣告 <%! 程式碼宣告 %>

可用於定義jsp頁面轉換成servlet程式的靜態程式碼塊,成員方法和變數。可以單獨定義在一個宣告中,也可以定義到同一個宣告中。宣告中不能使用九大內建物件。

<%!int sum=1;
%>

5, 註釋

JSP註釋:<%-- … --%>,轉化階段消失,只能被開發人員看到

JAVA註釋://、/**/、/***/,編譯階段消失

HTML註釋:<!-- … -->, 不會消失,在頁面中也能看到

6, 一些靜態內容

jsp中html內容稱為模板元素,jsp模板元素定義了網頁基本骨架,即定義了頁面結構和外觀。