JSP就是Servlet。如果不會Servlet,就無法理解JSP。通過本文,你將學到如何實現第一個JSP程序,以及JSP程序的實現原理。
JSP全稱是Java Server Pages,它和Servlet技術一樣,都是SUN公司定義的一種用於開發動態web資源的技術。
JSP誕生背景
雖然servlet技術能夠開發出動態效果的網頁,但是有一個問題,就是通過servlet開發時很冗雜,例如,下一個如下頁面:
需要在一個Servlet類中寫如此多得輸出語句,使得編寫很繁瑣;尤其是當做一個龐大的網站時,更是顯得無力。
於是,SUN公司推出了一種JSP技術:在JSP頁面寫HTML和Java代碼。JSP自動完成上圖中的轉換。
提高了程序員的開發效率。
JSP核心特性:
- JSP的核心就是servlet!!!
- 寫JSP就像在寫html,但JSP技術允許在頁面中嵌套java代碼,爲用戶提供動態數據。
- 相比servlet而言,servlet很難對數據進行排版,而JSP除了可以用java代碼產生動態數據的同時,也很容易對數據進行排版。
第一個JSP程序
創建一個dynamic web project,在【WebContent】的根目錄下利用eclipse的工具模板創建一個jsp文件;
第一個JSP程序
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<font color=red>這是我的第一個JSP頁面。</font>
</body>
</html>
執行結果:
第一行代碼解析:
- language指定頁面中使用哪種作爲第二語言;
- contentType、charset:告訴瀏覽器我是什麼內容類型,以及使用什麼編碼
- pageEncoding:JSP內容編碼;
JSP實現原理
JSP的特點
1)JSP的運行必須交給tomcat服務器!!!!
tomcat的work目錄: tomcat服務器存放JSP運行時的臨時文件
2)JSP頁面既可以寫html代碼,也可以寫java代碼。
(html頁面不能寫java代碼 。而JSP頁面可以寫java代碼)
執行過程
問題: 訪問http://localhost:8080/day12/hello.JSP 如何顯示效果?
- 訪問到hello.JSP頁面,tomcat掃描到JSP文件,在%tomcat%/work把JSP文件翻譯成java源文件,並
存於 ”Tomcat安裝目錄/work/Catalina/localhost/項目名/org/apache/JSP”
裏;
(hello.JSP -> hello_JSP.java) (翻譯) - tomcat服務器把java源文件編譯成class字節碼文件 (編譯)
(hello_JSP.java -> hello_JSP.class) - tomcat服務器構造hello_JSP類對象(反射)
- tomcat服務器調用hello_JSP類裏面方法,返回內容顯示到瀏覽器。
爲什麼JSP就是Servlet
JSP把01.hello.JSP翻譯的java文件:
其中的HttpJSPBase類():
public abstract class org.apache.jasper.runtime.HttpJSPBase
extends javax.servlet.http.HttpServlet
implements javax.servlet.JSP.HttpJSPPage {
}
結論:
- JSP就是一個servlet程序!!!
- servlet的技術可以用在JSP程序中!
- JSP的技術並不是全部適用於servlet程序!
生命週期
Servlet的生命週期:
1)構造方法(第1次訪問)
2)init方法(第1次訪問)
3)service方法
4)destroy方法
JSP的生命週期
- 翻譯: JSP->java文件
- 編譯: java文件->class文件(servlet程序)
- 走Servlet的生命週期
- 構造方法(第1次訪問)
- init方法(第1次訪問):在JSP中叫:_JSPInit()
- service方法:_JSPService()
- destroy方法:_JSPDestroy()