1、JSP技術
1.jsp腳本和註釋
jsp腳本:
1)<%java代碼%> ----- 內部的java代碼翻譯到service方法的內部
2)<%=java變量或表達式> ----- 會被翻譯成service方法內部out.print()
3)<%!java代碼%> ---- 會被翻譯成servlet的成員的內容html
jsp註釋: 不一樣的註釋可見範圍是不一樣
1)Html註釋:<!--註釋內容--> ---可見範圍 jsp源碼、翻譯後的servlet、頁面 顯示html源碼
2)java註釋://單行註釋 /多行註釋/ --可見範圍 jsp源碼 翻譯後的servlet
3)jsp註釋:<%--註釋內容--%> ----- 可見範圍 jsp源碼可見java
2.jsp運行原理-----jsp本質就是servlet(面試)
jsp在第一次被訪問時會被Web容器翻譯成servlet,在執行
過程:
第一次訪問---->helloServlet.jsp---->helloServlet_jsp.java---->編譯運行
PS:被翻譯後的servlet在Tomcat的work目錄中能夠找到web
3.jsp指令(3個)
jsp的指令是指導jsp翻譯和運行的命令,jsp包括三大指令:
1)page指令 --- 屬性最多的指令(實際開發中page指令默認)
屬性最多的一個指令,根據不一樣的屬性,指導整個頁面特性
格式:<%@ page 屬性名1= "屬性值1" 屬性名2= "屬性值2" ...%>
經常使用屬性以下:
language:jsp腳本中能夠嵌入的語言種類
pageEncoding:當前jsp文件的自己編碼---內部能夠包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻譯時自動建立session
import:導入java的包
errorPage:噹噹前頁面出錯後跳轉到哪一個頁面
isErrorPage:當前頁面是一個處理錯誤的頁面面試
2)include指令
頁面包含(靜態包含)指令,能夠將一個jsp頁面包含到另外一個jsp頁面中
格式:<%@ include file="被包含的文件地址"%>sql
3)taglib指令
在jsp頁面中引入標籤庫(jstl標籤庫、struts2標籤庫)
格式:<%@ taglib uri="標籤庫地址" prefix="前綴"%>apache
4.jsp內置/隱式對象(9個)----- 筆試
jsp被翻譯成servlet以後,service方法中有9個對象定義並初始化完畢,咱們在jsp 腳本中能夠直接使用這9個對象
名稱 類型 描述
out javax.servlet.jsp.JspWriter 用於頁面輸出
request javax.servlet.http.HttpServletRequest 獲得用戶請求信息,
response javax.servlet.http.HttpServletResponse 服務器向客戶端的迴應信息
config javax.servlet.ServletConfig 服務器配置,能夠取得初始化參數
session javax.servlet.http.HttpSession 用來保存用戶的信息
application javax.servlet.ServletContext 全部用戶的共享信息
page java.lang.Object 指當前頁面轉換後的Servlet類的實例
pageContext javax.servlet.jsp.PageContext JSP的頁面容器
exception java.lang.Throwable 表示JSP頁面所發生的異常,在錯誤頁中才起做用服務器
(1)out對象
out的類型:JspWriter
out做用就是想客戶端輸出內容----out.write()
out緩衝區默認8kb 能夠設置成0 表明關閉out緩衝區 內容直接寫到respons緩衝 器cookie
(2)pageContext對象
jsp頁面的上下文對象,做用以下:
page對象與pageContext對象不是一回事
1)pageContext是一個域對象
setAttribute(String name,Object obj)
getAttribute(String name)
removeAttrbute(String name)session
pageContext能夠向指定的其餘域中存取數據
setAttribute(String name,Object obj,int scope)
getAttribute(String name,int scope)
removeAttrbute(String name,int scope)
findAttribute(String name)
---依次從pageContext域,request域,session域,application域中獲 取屬性,在某個域中獲取後將不在向後尋找app
四大做用域的總結:
page域:當前jsp頁面範圍
request域:一次請求
session域:一次會話
application域:整個web應用
2)能夠得到其餘8大隱式對象
例如: pageContext.getRequest()
pageContext.getSession()
5.jsp標籤(動做)
1)頁面包含(動態包含):<jsp:include page="被包含的頁面"/>
2)請求轉發:<jsp:forward page="要轉發的資源" />
靜態包含與動態包含的區別?
2、EL技術
1.EL 表達式概述
EL(Express Lanuage)表達式能夠嵌入在jsp頁面內部,減小jsp腳本的編寫,EL 出現的目的是要替代jsp頁面中腳本的編寫。
2.EL從域中取出數據
EL最主要的做用是得到四大域中的數據,格式${EL表達式}
EL得到pageContext域中的值:$(pageContextScope.key);
EL得到request域中的值:$(request.key);
EL得到session域中的值:$(session.key);
EL得到application域中的值:$(application.key);
EL從四個域中得到某個值$(key);
---一樣是依次從pageContext域,request域,session域,application域中 獲取屬性,在某個域中獲取後將不在向後尋找
示例:
1)EL得到普通字符串
2)EL得到User對象的值
3)EL得到List<String>的值
4)EL得到List<User>的值
5)EL得到Map<String,String>的值
6)EL得到Map<String,User>的值
3.EL的內置對象
pageScope,requestScope,sessionScope,applicationScope
---- 獲取JSP中域中的數據
param,paramValues - 接收參數.
header,headerValues - 獲取請求頭信息
initParam - 獲取全局初始化參數
cookie - WEB開發中cookie
pageContext - WEB開發中的pageContext.
$(pageContext.request.contextPath)
至關於
<%=pageContext.getRequest().getContextPath%>
得到WEB應用的名稱
3、JSTL技術
1.JSTL概述
JSTL(JSP Standard Tag Library),JSP標準標籤庫,能夠嵌入在jsp頁面中使用標籤的形式完成業務邏輯等功能。jstl出現的目的同el同樣也是要提到jsp頁面中的腳本代碼。JSTL標準標準標籤庫有5個子庫,但隨着發展,目前常使用的是他的核心庫
標籤庫 標籤庫的URI 前綴
Core http://java.sun.com/jsp/jstl/... c
I18N http://java.sun.com/jsp/jstl/fmt fmt
SQL http://java.sun.com/jsp/jstl/sql sql
XML http://java.sun.com/jsp/jstl/xml x
Functions http://java.sun.com/jsp/jstl/... fn
2.JSTL下載與導入
JSTL下載:
從Apache的網站下載JSTL的JAR包。進入 「http://archive.apache.org/dis...」網址下載 JSTL的安裝包。jakarta-taglibs-standard-1.1.2.zip,而後將下載好的JSTL安裝包 進行解壓,此時,在lib目錄下能夠看到兩個JAR文件,分別爲jstl.jar和standard.jar。 其中,jstl.jar文件包含JSTL規範中定義的接口和相關類,standard.jar文件包含用於 實現JSTL的.class文件以及JSTL中5個標籤庫描述符文件(TLD)
將兩個jar包導入咱們工程的lib中
3.JSTL核心庫的經常使用標籤
1)<c:if>標籤
2)<c:for>標籤