JSP概述:
1.1什麼是jsp:它的英文全稱java server pages ,java服務端 頁面,它是創建在servlet規範基礎上的動態網頁開發技術。html
1.2編寫第一個jsp文件: jsp生 成java文件,編譯成class文件,存在tomcat服務 器的work目錄。
注意:修改jsp的默認編碼格式: wind-------->perferee-----> 搜索jsp ---->選中編碼進行修改java
1.3 JSP運行原理:
1.經過瀏覽器首次訪問jsp時
2.JSP容器會生成對應的Servlet文件,也就是.java文件
3.JSP容器,會把java文件編譯對應的class文件
4.JSP容器,會生成對應的servlet對象
5.經過生成的servlet對象,去處理瀏覽器發送的請求,響應數據給瀏覽器。瀏覽器
JSP基本語法
1.1 JSP腳本元素
在jsp頁面書寫java的三種形式:
1.能夠聲明語句和方法
2.能夠書寫java代碼段
3.能夠書寫表達式tomcat
1.2 JSP註釋:
在jsp裏面,能夠書寫htm1,能夠書寫java,能夠書寫jsp自身的一些內容。
在jsp裏面寫註釋三種形式:服務器
- html註釋: <!-- html註釋-->:在任何地方都存在了。
2.java註釋:單行,多行,文檔註釋:它存在jsp頁面,也存在java文件 裏面,對應生成的html就消失了- jsp註釋: <%-- jsp註釋-->:只存在jsp頁面,在生成對應的java文件時,它就消失了。
3.JSP 指令: page指令、include指令、taglib指令
1.1 page指令
page指令的用途是設置與jsp頁面相關的信息,好比說設置jsp頁面的編碼,jsp頁 面的默認語言等
基本語法格式: <@ page屬性-"屬性值"屬性-"屬住值"屬性-"屬性值" %>
好比:
<%@ page language="java" contentType=" text/html; charset-UTF-8" pageEncoding="UTF-8"%>
經常使用屬性:
language:默認語言java,也就是隻有java-種語言。
pageEncoding:設置jsp的編碼格式。_ 般狀況下能夠省略contentType這個屬性。
session屬性:值得類型是boolean,若是對應的值是true,在jsp頁面可使用session對象,反之就不能使用。
import屬性:到包,和在java裏面使用同樣,若是想使用某個類,前提導入某個類的包名。
。。。。。。session
1.2 include指令:| I 在jsp頁面一般會須要顯示其它頁面的信息,因此能夠經過這個include指令把其它頁面包含過來。 基本語法: <%@ include file="被包含文件的url" %> 建立兩個jsp頁面: date. jsp頁面,include. jsp頁面. 使用jsp的include指令實現的包含,又稱爲靜態包含,靜態包含的特色: 1.把多個頁面的內容,合併輸出,好比把date.jsp 和include.jsp內容合併輸出。 2.多個頁面對應生成一個java文件,編譯後,對應一個class文件。
JSP隱式對象
1.1 什麼是隱式對象:在jsp頁面裏面,jsp提供了一-些對象,不用我們本身建立,能夠直接使用的對象。
jsp常見的九大隱式對象:
request: HttpServletRequest, 請求對象,它同時也是域對象,做用範圍一次請求
response :HttpServletResponse,響應對象
session: HttpSession , 會話對象,它同時也是域對象,做用範圍一次會話
application:ServletContext,上下文對象,它同時也是域對象,做用範圍整個項目
config:ServletConfig,配置對象
out: JspWriter ,其實和PrintWriter做用差很少。
page:0bject , 表明當前jsp的頁面對象
pageContext:PageContext , jsp容器
exception: Throwable,異常對象,用來捕獲異常信息。
只有當前jsp頁面有isErrorPage="true"這個屬性時,才能使用exception對象。app
1.2 out對象
out對象在輸出內容到網頁上面去,最終是經過reponse緩衝區給輸出。jsp
1.3 pageContext對象
第一個功能:獲取其它八個隱式對象ide
1.獲取請求對象: getRequest();
2.獲取響應對象: getResponse();ui
獲取輸出對象: getout();
第二個功能:操做其它三個域對象: request. session. application.
pageContext也是一個域對象: 做用範圍在當前jsp頁面. .
操做其它三個域對象的方法:
1.存值: setAttribute(String key,0bject obj,int scope);
APPLICATION SCOPE : 對應的是application
REQUEST SCOPE:對應的是request
SESSION SCOPE: 對應的是session
PAGE SCOPE: 對應的是本身pageContext
2.取值: getAttr ibute(String key,int scope);
結論:在pageContext域對 象使用findAttribute方法獲取值,進行了全域查找, 查找的範圍: pageContext --->request----->session----->applicat ion 首先找域做用範圍小的對象,若是有值,獲取到,若是域做用範圍小的對象,不存在對應的值,就繼續向下尋找。
1.4 exception對象I
它是用來捕獲異常信息的。
會用到兩個屬性:
errorPage:屬性對應的值,處理異常信息的頁面,就是說在當前頁面發生了異常,跳轉處處理異常信息的頁面
好比:
<%@ page language=" java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC " -//M3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/htm14/loose.dtd">;
<html>
<head>
<meta http- equiv="Content-Type" content="text/html; charset=UTF-8" >
<title>Insert title here</title>
</head>
<body>
<%
int a=3;
int b=0;
%>
輸出: <%=(a/b) %>
isErrorPage: 屬性對應的值是true或者false,若是爲true,在當前頁面可使用exception對象
好比: <%@ 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/htm14/1oose.dtd"> <html> <head> <meta http- equiv="Content- Type" content=" text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 輸出異常信息: <%=exception.getMessage()> </body> </html>
5.JSP動做元素
1.1 <jsp: include>動做元素:動態包含
動態包含:把其它資源頁面的內容,合併到當前要包含的頁面,最後- -塊輸出。
基本語法格式: <jsp: include page="被包含頁面的url" flush="true或者 false" ><jsp: include>
動態包含特色:多個頁面的內容合併輸出,多個jsp頁面生成多個java文件,編譯成多個class文件
靜態包含特色:多個頁面的內容合併輸出,多個jsp頁面最終生成一個java文件, 編譯一個class文件。
1.2 <jsp: forward>動做元素:請求轉發。 它的做用實現請求轉發,效果等同於RequestDispathcer對象的forward方法。 基本語法格式: <jsp: forward page="轉發頁面的ur1地址"></jsp: forward> 轉發頁面的ur1地址:不須要攜帶項目名稱,由於轉發動做是服務器內部行爲。
6.階段案例:傳智書城JSP頁面1.實現首頁面注意事項:1.在html網頁不能書寫與jsp相關的內容。2.${pageContext . request. contextPath}:做用就是獲取項目名稱的路徑,好比: /chapter06設計首頁面步驟:1.建立一個index. jsp頁面,在這裏實現跳轉到首頁面的效果<jsp: forward page=" 」></jsp:forward>2.修改client目錄下面的全部html文件,修改爲jsp,爲了 就是jsp知識點。3.把client目錄下面的首頁面分離出來幾個jsp文件,分離的jsp文件比較通用性,在其它頁面也能用到,分離的目的:提升代碼的複用性。分離index. jsp頁面:第一部分:導航菜單,對應head.jsp第二部分:搜索欄,對應menu_ search.jsp第三部分:底部信息,對應foot.jsp在index. jsp頁面引入分離的文件: <%@ include file="" %>