1.JSP是簡化Servlet編寫的一種技術,它將Java代碼和html語句混合在同一個文件中編寫,只對網頁中的要動態產生的內容採用Java代碼來編寫,而對固定不變的靜態內容採用html編寫。
2.JSP可以放在除web-info以外的任何目錄
3.JSP的本質就是一個Servlet
4.JSP頁面的9個隱含對象:
①Request:HttpServletRequest的一個對象
②Response:HttpServletResponse的一個對象(這個隱含對象一般不用)
③pageContext:頁面的上下文,是PageContext的一個對象,可以從該對象中獲取其他8個隱含對象,也可以從中得到當前頁面的其他信息。
④Session:代表瀏覽器和服務器的一次會話
⑤application:代表當前web應用,是ServletContext對象。
⑥Config:ServletConfig對象
⑦out:JspWriter對象,調用out.println()可以直接把字符串打印到瀏覽器上。
⑧page:指向當前Jsp對應的Servlet對象引用,但爲Object類型,只能調用Object類的方法
⑨exception:在聲明瞭page指令的isErrorPage="true"後才能使用
5.Jsp表達式:<%=某個值>:能將值直接輸出到瀏覽器界面上
<%=date%>
6.腳本片段:腳本片段可以相互嵌套
<!--腳本片段 -->
<%
StringageSrc=request.getParameter("age");
Integerage=Integer.parseInt(ageSrc);
if(age>18){
%>
成年
<%
}else{
%>
未成年
<%
}
%>
7.jsp屬性和相關的方法
(1)相關方法:objectgetAttribute(String name):獲取指定的屬性
EnumerationgetAttributeNames():獲取所有屬性名字組成的Enumeration對象
RemoveAttribute(String name):移出指定的屬性
VoidsetAttribute(String name,Object o)設置屬性
(2)jsp的請求域:pageContext(當前頁面),request(同一個請求,在有請求的轉發的情況下可以跨頁面獲取屬性值),session(同一次會話),application(整個web應用) 他們都有上述方法
8.請求的轉發和重定向
(1)本質區別:請求的轉發只發出了一次請求,重定向則發出了兩次請求
①.請求的轉發:地址是初次發出請求的地址。
請求的重定向:地址欄不再是初次請求的地址,地址爲最終響應的地址
②.請求轉發:在最終的servlet中request對象和煥發的那個request是同一個對象;
請求重定向:在最終的servlet中request對象和煥發的那個request不同一個對象。
③.請求的轉發:只能轉發到當前web應用的資源
請求的重定向:能轉發到任何資源
④.對於請求的轉發而言“/”代表當前web應用的根目錄
對於請求的重定向而言“/”代表當前web站點的根目錄
//請求的轉發
//1.調用HttpServletRequest的getRequestDispatcher()方法獲取RequestDispatcher對象
//調用getRequestDispatcher()需要傳入地址
Stringpath="testServlet";
RequestDispatcherdispatcher=request.getRequestDispatcher("/"+path);
//調用RequestDispatcher的forward(request,response)進行請求的轉發
dispatcher.forward(request,response);
//執行請求的重定向,直接調用response.sendRedirect(path)方法
//path爲要重定向的地址
Stringpath="testServlet";
response.sendRedirect(path);
9.jsp指令
(1)page指令常用的屬性:
①import屬性:指定當前jsp頁面對應的servlet需要導入的類
<%@ page import="java.util.Date"%>
②session屬性:取值爲true或false,指定當前頁面的session隱藏變量是否可用,也可以說訪問當前頁面時是否一定要生成HttpSession對象。
③. errorPage 和 isErrorPage:
> errorPage 指定若當前頁面出現錯誤的實際響應頁面時什麼.其中 / 表示的是當前 WEB 應用的根目錄.
<%@ pageerrorPage="/error.jsp" %>
> 在響應 error.jsp 時,JSP 引擎使用的請求轉發的方式.
> isErrorPage 指定當前頁面是否爲錯誤處理頁面, 可以說明當前頁面是否可以使用 exception 隱藏變量. 需要注意的是: 若指定
isErrorPage="true", 並使用 exception 的方法了, 一般不建議能夠直接訪問該頁面.
> 如何使客戶不能直接訪問某一個頁面呢 ? 對於 Tomcat 服務器而言, WEB-INF 下的文件是不能通過在瀏覽器中直接輸入地址的方式
來訪問的. 但通過請求的轉發是可以的!
> 還可以在 web.xml 文件中配置錯誤頁面:
<error-page>
<!--指定出錯的代碼:404 沒有指定的資源, 500 內部錯誤. -->
<error-code>404</error-code>
<!-- 指定響應頁面的位置 -->
<location>/WEB-INF/error.jsp</location>
</error-page>
<error-page>
<!-- 指定異常的類型 -->
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page>
④. contentType: 指定當前 JSP 頁面的響應類型. 實際調用的是response.setContentType("text/html; charset=UTF-8");
通常情況下, 對於 JSP 頁面而言其取值均爲text/html; charset=UTF-8. charset 指定返回的頁面的字符編碼是什麼. 通常取值爲 UTF-8
⑤. pageEncoding: 指定當前 JSP 頁面的字符編碼. 通常情況下該值和 contentType 中的 charset 一致.
⑥. isELIgnored: 指定當前 JSP 頁面是否可以使用 EL 表達式. 通常取值爲false.
(2).include 指令: <%@ include file="b.jsp" %>
1).include 指令用於通知 JSP 引擎在翻譯當前 JSP 頁面時將其他文件中的內容合併進當前 JSP 頁面轉換成的 Servlet 源文件中,
這種在源文件級別進行引入的方式稱之爲靜態引入, 當前JSP頁面與靜態引入的頁面緊密結合爲一個Servlet。
2).file屬性的設置值必須使用相對路徑
3).如果以 / 開頭,表示相對於當前WEB應用程序的根目錄(注意不是站點根目錄),否則,表示相對於當前文件。