簡單!JSP基礎知識
JSP基礎
1.JSP 是一種運行在 WEB 服務器的腳本語言,它的本質就是 Servlet .
page.jsp --"翻譯"--> page_jsp.java --"編譯"--> page_jsp.class
2.jsp的作用
* Servlet
> 缺點:不適合設置html響應體,需要大量的response.getWriter().print("html")
> 優點:動態資源,可以編程
* html
> 缺點:html是靜態頁面,不能包含動態信息
> 優點:不用為輸出html標籤而發愁
* jsp(java server pages)
> 優點:在原有html的基礎上添加java腳本,構成jsp頁面
3.jsp和Servlet的分工
* JSP
> 作為請求發起頁面,例如顯示錶單、超鏈接
> 作為請求結束頁面,例如顯示數據。
* Servlet
> 作為請求中處理數據的環節
4.JSP文件中可以出現的 JSP "元素":
--> 指令: 程序通過 JSP 源碼 向 JSP 容器 ( Tomcat ) 下達的命令
<%@ 指令名稱 屬性名稱="屬性值" %>
page指令 --> <%@ page language="java" %>
include指令 --> <%@ include file="inner.jsp" %>
使用 include 指令可以包含 一個 .html 、.jsp 、 .txt 文件(只能是字符文件,不能是圖片等文件,也不能是 Servlet )
使用 include 包含一個文件,包含操作發生在 .jsp 被翻譯成 .java 階段
5.include產生的亂碼問題
pageEncoding和contentType兩種屬性的區別:
1)pageEncoding是jsp文件本身的編碼
2)contentType的charset是指服務器發送給客戶端時的內容編碼
方法一:在html代碼首行加上<%@ page language="java" pageEncoding="UTF-8" %>
taglib指令 -->
<c:forEach begin="1" step="2" end="11" var="x">
${ x }
</c:forEach>
--> 表達式:
<%= 表達式 %>
<%= reqeust.getContextPath() %>
--> 聲明:
<%! 聲明屬性或方法 %>
<%! public String name = "Java Server Pages"; %>
--> 腳本:(java代碼片段)
<% 直接書寫 Java 代碼塊 %>
<%
for( int i = 0 ; i < 10 ; i ++ ) {
System.out.println( i ) ;
}
%>
--> JSP註釋: 只存在於 JSP 文件中,相應的 .java 文件和 .class 文件中都不存在
<%-- JSP註釋的內容 --%>
6.jsp的組成
* jsp = html + java腳本 + jsp標籤(指令)
* jsp中無需創建即可使用的對象一共有9個,被稱之為9大內置對象。例如:request對象,out對象
request、response、session、application、pageContext、config、out、page、exception
* 3種java腳本
> <%...%>:java代碼片段(常用),用於定義0~N條java語句!
方法內能寫什麼,它就能放什麼
> <%=...%>:java表達式,用於輸出(常用),用於輸出一條表達式(或變量)的結果
System.out.println();括號內能放什麼,它就能放什麼
> <%!...%>:聲明,用來創建類的成員變量和成員方法(基本不用,但容易被考到)
class MyClass{
類體中能放什麼,<%!...%>內就能放什麼
}
案例:演示jsp中java腳本的使用
案例:演示jsp與servlet分工
7.jsp原理(理解)
* jsp其實是一種特殊的servlet
> 當jsp頁面第一次被訪問時,服務器會把jsp編譯成java文件(這個java其實是一個servlet類)
> 然後再把java編譯成.class文件
> 然後創建該類對象
> 最後調用它的service()方法
> 第二次請求同一jsp時,直接調用service方法
* 在tomcat的work目錄下可以找到jsp對應的.java源代碼
* 查看jsp對應java文件;
> java腳本
> html
8.jsp註釋
<%-- --%>
JSP 的 9 個標準內置對象
* application
類型:ServletContext
* request
類型: HttpServletRequest
* response
類型:HttpServletResponse
* session
類型:HttpSession
* pageContext
類型:PageContext
* out
類型:JspWriter
* config
類型: ServletConfig
* exception
在可能發生異常的頁面中使用 <%@ page errorPage="catch.jsp" %>; 指定錯誤處理頁面
在錯誤處理頁面:只有聲明瞭 <%@ page isErrorPage="true" %> 的頁面才會有 exception 對象存在
* page
類型: Servlet