項目
|
PHP
|
JAVA
|
可複用性 |
低
|
高
|
開發速度
|
快
|
慢
|
易維護性
|
差
|
優
|
可移植性
|
優-Linux
|
Windows、Unix
|
Unix 安全性
|
低
|
高
|
開發費用
|
低
|
高
|
多層架構
|
差
|
優
|
數據庫訪問
|
接口不統一
|
接口統一
|
可擴展性
|
差
|
優
|
面向對象
|
差
|
優
|
(5) jspService()方法執行後會將HTML內容返回給客戶端。php
(6) 若是JSP文件被修改了,服務器將對該文件進行從新編譯。若是須要從新編譯,則將編譯結果取代內存中的Servlet,並繼續上述處理過程。 若是在任什麼時候候因爲系統資源不足,JSP引擎將以某種不肯定的方式將Servlet從內存中移去。當這種狀況發生時,先調用jspDestroy()方法, 而後Servlet實例便被標記加入「垃圾收集」處理。html
(1) 內置對象特色java
分類 |
對象
|
輸出輸入對象
|
request、response、out |
通訊控制對象
|
pageContext、session、application |
Servlet對象 |
page、config |
錯誤處理對象
|
exception
|
做用域 | 對象 |
request
|
request
|
session
|
session
|
page
|
response、out、pageContext、config、page、exception
|
application
|
application、 |
JSP編譯指令是通知JSP引擎的消息,在將JSP編譯成 Servlet 時起做用,處理指令一般可替換成 Java腳本,是 JSP腳本的標準化寫法。它不直接生成輸出。編譯指令都有默認值。sql
語法格式:<%@ 編譯指令名 屬性名="屬性值"...%>數據庫
(1) page指令:該指令是針對當前頁面的指令,對整個頁面有效,主要用來設定一些參數,好比contentType,language等。編程
(2) include指令:用於指定包含另外一個頁面(靜態包含),在進行jsp向servlet轉換以前,首先是將inclue file裏面的內容執行,而後再進行轉換,最終只會轉換成爲一個單一的servlet。設計模式
(3) taglib指令:用於定義和訪問自定義標籤。瀏覽器
動做指令與編譯指令不間,編譯指令是通知 Servlet 引擎的處理消息,而動做指令只是運行時的腳本動做。安全
(1) forward指令:用於將頁面響應轉發給另外的頁面。既能夠轉發給靜態的HTML頁面,也能夠轉發到動態的JSP頁面,或者轉發到容器中的Servlet。服務器
執行forward指令轉發請求時,客戶端的請求參數不會丟失。
執行forward指令轉發請求時,用戶請求的地址沒有發生變化,但頁面內容徹底變爲被forward目標頁的內容。
(2) include指令:是一個動態include指令,也用於導入某個頁面,它不會導入被include頁面的編譯指令,僅僅將被導入頁面的body內容插入本頁面。
靜態include和動態include的區別:靜態include是把父頁面和包含進來的頁面,代碼合併後,才一塊兒翻譯成servlet,反饋到前臺,造成一個HTML頁面(編譯是發生)。動態include是把父頁面和包含進來的頁面單獨編譯,單獨翻譯成servlet後,在前臺拼成一個HTML頁面(請求時發生)。
(3) useBean指令:表示用來在JSP頁面中建立一個BEAN實例並指定它的名字以及做用範圍。
(4) getProperty指令:表示獲取BEAN的屬性的值並將之轉化爲一個字符串,而後將其插入到輸出的頁面中。
(5) setProperty指令:表示用來設置Bean中的屬性值。
(6) plugin指令:表示執行一個applet或Bean,有可能的話還要下載一個Java插件用於執行它。
(7) param指令:用於設置參數值。
JSP的標籤函數庫主要分爲五大類:
JSTL |
前置名稱 |
URI |
範例 |
核心標籤庫 |
c |
http://java.sun.com/jsp/jstl/core |
<c:out> |
I18N格式標籤庫 |
fmt |
http://java.sun.com/jsp/jstl/fmt |
<fmt:formatDate> |
SQL標籤庫 |
sql |
http://java.sun.com/jsp/jstl/sql |
<sql:query> |
XML標籤庫 |
Xml |
http://java.sun.com/jsp/jstl/xml |
<x:forEach> |
函數標籤庫 |
fn |
http://java.sun.com/jsp/jstl/functions |
<fn:split> |
核心標籤庫:
功能分類 |
標籤名稱 |
表達式操做 |
out、set、remove、catch |
流程控制 |
if、choose、when、otherwise |
迭代操做 |
forEach、forTokens |
URL操做 |
import、param、url、redirect |
全部EL都是以${爲起始、以}爲結尾的。
EL 提供 . 和 [ ] 兩種運算符來導航數據。下列二者所表明的意思是同樣的:${sessionScope.user.sex}等於${sessionScope.user["sex"]}
. 和 [ ] 也能夠同時混合使用:${sessionScope.shoppingCart[0].price}