Servlet是j2ee提供的動態資源開發技術,是以java的程序的形式進行開發,在java中書寫HTML標籤是一件十分頭疼的事情,因此人們開發出了JSP,看起來像是HTML同樣,可是經過服務器的編譯最終能夠生成Servlet。html
輸出當前時間:java
<% Date date = new Date(); String dateStr = date.toLocaleString(); out.write(dateStr); %>
直接書寫在JSP中的HTML內容,看起來就像寫HTML同樣的方便,可是最終會在被翻譯成Servlet的過程當中 out.write()直接輸出。web
<%= 表達式%> 接受的是一段java表達式,在JSP翻譯到Servlet的過程當中,將會計算表達式的值,利用out.write()輸出出去。segmentfault
輸出當前時間:瀏覽器
<%= new Date().toLocaleString() %>
<% %>直接能夠在腳本片斷中書寫java源代碼,其中的源代碼將會直接拷貝到翻譯過來的servlet中的響應位置上。服務器
<%! %>在其中能夠寫java代碼,其中的源代碼會被拷貝到servlet中的service方法以外,能夠利用它來爲servlet增長成員方法、成員變量、靜態代碼塊。session
<%-- --%>被jsp註釋包圍起來的內容將不會被服務器翻譯到servlet之中,要注意區分html註釋和java註釋的區別。
1)jsp註釋不會被翻譯到servlet中,會在翻譯時遺棄。
2)java註釋(<%// %>)不會被編譯到class文件中,會在編譯時遺棄。
3)html註釋(<!-- -->)將會看成模版元素,直接輸出到瀏覽器中,瀏覽器將不會顯示html註釋中的內容。app
<% int i = 0; %> <!-- <% i=i+100; %> --> <%=i %> 瀏覽器輸出:100 由於是HTML註釋,會被執行,當時不會顯示,因此i+100會被執行,最後輸出100
page指令(https://segmentfault.com/a/11...jsp
1.errorPage能夠設置錯誤提示界面url
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="/error.jsp" %>
也能夠在web.xml中配置
<error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page>
2.pageEncoding="utf-8"能夠解決JSP中全部的中文亂碼問題
<%@ incluede file=""%> 靜態引入其餘頁面的內容
靜態引入:在源文件級別進行合併,多個jsp生成一個servlet,最終由這一個servlet生成響應,推薦使用。
能夠將它理解成response.getWriter()得到的PrintWriter,在JSP頁面中,只用它去輸出數據,不要用response.getWriter()
<% Date date = new Date(); String dateStr = date.toLocaleString(); out.write(dateStr); %>
(1)獲取其它八大隱式對象,能夠認爲是一個入口對象。(在自定義標籤中使用)
getException方法返回exception隱式對象
getPage方法返回page隱式對象
getRequest方法返回request隱式對象
getResponse方法返回response隱式對象
getServletConfig方法返回config隱式對象
getServletContext方法返回application隱式對象
getSession方法返回session隱式對象
getOut方法返回out隱式對象
(2)域對象,四大做用域的入口,能夠操做四大做用域中的域屬性
做用範圍: 當前jsp頁面
生命週期: 當對jsp頁面的訪問開始時,建立表明當前jsp的
PageContext,當對當前jsp頁面訪問結束時銷燬表明當前jsp的pageContext
做用:在當前jsp中共享數據
public void setAttribute(java.lang.String name,java.lang.Object value) public java.lang.Object getAttribute(java.lang.String name) public void removeAttribute(java.lang.String name) public void setAttribute(java.lang.String name, java.lang.Object value,int scope) public java.lang.Object getAttribute(java.lang.String name,int scope) public void removeAttribute(java.lang.String name,int scope) PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE
(3)findAttribute(name)方法 -- 搜尋四大做用域中的屬性,若是找到則返回該值,若是四大做用域中都找不到則返回一個null,搜尋的順序是從最小的域開始向最大的域開始尋找(application>session>request>pageContext)
(4)提供了請求請求包含和轉發的快捷方法
pageContext.include("/index.jsp"); pageContext.forward("/index.jsp");
1.JSP映射
<servlet> <servlet-name>index</servlet-name> <jsp-file>/index.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>index</servlet-name> <url-pattern>/jsp/*</url-pattern> </servlet-mapping> 經過"http://localhost:8080/Day01/jsp/任意字符"均可以訪問這個jsp。
2.域的總結(由大到小)
servletContext (application)
session (session)
request (request)
pageContext
若是一個數據只在當前jsp頁面使用,可使用pageContext域存儲。
若是一個數據,除了在當前Servlet中使用,還要在請求轉發時帶到其餘Servlet處理或jsp中顯示,這個時候用request域。
若是一個數據,除了如今我本身要用,過一會我本身還要用,存在session域。
若是一個數據,除了如今我本身要用過一會其餘人也要用,存在ServletContext域中。