java 服務器頁面java
做用:將內容的生成和信息的展現相分離web
執行原理:運行在服務器端,本質上是一個servlet,被編譯成class面試
jsp腳本格式:sql
<%..%> java代碼片斷apache
<%=..%> 輸入表達式 至關於out.print();數組
<%!..%> 生命成員瀏覽器
jsp的指令緩存
三大指令:page指令、include指令、taglib指令服務器
page指令:cookie
language JSP的語言屬性,默認java,目前也只有java
contentType 設置瀏覽器默認的打開的時候的編碼
pageEncoding 設置JSP文件保存到硬盤,以及翻譯成Servlet保存到硬盤的編碼格式
import 設置JSP中引入其餘的類
extends 設置JSP被翻譯成Servlet後繼承的類,
autoFlush 設置自動刷出緩存
buffer JSP緩衝區的大小,默認8kb
session 默認值是true,設置是否能夠直接使用session對象
isELIgnored 設置JSP是否忽略EL表達式,默認false,JSP中能夠使用EL表達式
isErrorPage 設置JSP頁面中出現錯誤應該如何處理
errorPage 設置JSP頁面中出現錯誤應該如何處理
include指令:用於引入其餘的頁面
file屬性:屬性中不能使用變量,不能傳遞參數
<%@ include file="logo.jsp" %>
taglib指令:用於在JSP中引入標籤庫
<%@ taglib url="" prefix="" %>
JSP的內置對象
內置對象:JSP中能夠直接使用的對象
九大內置對象(面試):
request,response,session,application,page,pageContext,out,config,exception
JSP的四個域對象
pageContext 頁面範圍
request 請求範圍
session 回話範圍
application 應用範圍
JSP的動做標籤
語法:<jsp:動做標籤 屬性="" /> 使用該標籤可以簡化代碼的編寫,儘可能少在JSP中使用<%%>
<jsp:forward page="/demo.jsp"></jsp:forward>
<jsp:include page="/demo.jsp"></jsp:include>
動態包含&靜態包含
靜態包含至關於代碼的copy,最終被翻譯誠意Servlet解釋執行的,動態包含包含了其餘頁面運行的結果,最終翻譯成多個Servlet執行的
EL Expression Language 表達式語言
語法:${ EL 表達式}
JSP中儘可能少的使用<%%>代碼塊,使用EL和JSTL替換頁面中<%%>
用途
1.獲取數據
2.EL執行運算
3.得到經常使用web開發對象
4.調用java中的函數
EL獲取四個域範圍中的值
獲取普通值
獲取數據的數據
獲取List集合
獲取Map集合
[]和.區別:[]獲取帶有下標的數據、list等 .獲取一個對象的屬性,若是屬性中包含了特殊字符,必須使用[]不能使用.
demo
<%
pageContext.setAttribute("pname","zhangsan");
request.setAttribute("rname","lisi");
session.setAttribute("sname","wangwu");
application.setAttribute("aname","zhaner");
%>
----------------傳統方式取值-----------------------------
<%= pageContext.getAttribute("pname")%>
<%= request.getAttribute("pname")%>
<%= session.getAttribute("pname")%>
<%= application.getAttribute("pname")%>
----------------EL 表達式取值----------------------------
${ pageContext.pname }
${ request.rname }
${ session.sname }
${ application.aname }
demo獲取數組數據
<%
String[] arr = {"zhangsan","lisi","wangwu"};
pageContext.setAttribute("arr",arr)
%>
%{ arr[1] }
demo獲取List集合數據
<%
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
%>
${ list[1] }
demo獲取Map集合
<%
Map<String,String> map = new HashMap<String,String>();
map.put("a","zhangsan");
map.put("b","wangwu");
map.put("c","lisi");
%>
${ map["a"] }
demo獲取JavaBean中的數據
<%
Person p = new person();
p.setId(1);
p.setName("zhangsan");
p.setPassword("root");
pageContext.setAttribute("person",p);
%>
${ person.name }
EL標籤還能夠執行運算,包括算術運算和邏輯運算
EL得到WEB開發的經常使用的對象(EL的內置對象)
11個
${pageScope}
${requestScope}
${sessionScope}
${applicationScope}
${param} 至關於request.getParameter
${paramValues} 至關於request.getParameterValues
${header} 得到請求頭 一個key對應一個value
${headerValues} 得到請求頭 一個key對應多個value
${initParam} 得到初始化參數
${cookie} 得到cookie信息
${pageContext} 至關於pageContext對象
JSTL標籤庫
JSTL是一個不斷完善的開放源代碼的JSP標籤庫,是由apache的Jakarta小組維護的,從Servlet2.0開始
做用:結合EL替換頁面中的<% %>
使用JSTL標籤庫
JSTL五大標籤庫:core、fmt、xml、sql、fn
引入標籤庫
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
經常使用標籤
c:set
c:if
c:forEach
c:choose