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

JavaWeb(一)JSP原理,組成

方法 XML spa 動態 服務器 enc 頁面跳轉 htm tom

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模板元素定義了網頁基本骨架,即定義了頁面結構和外觀。

JavaWeb(一)JSP原理,組成