JSP最終會變成一個servlet
MyJSP.jsp ->MyJSP_jsp.java -> MyJSP_jsp.class -> myJSP_jsp(Servlet對象)
Scriptlet:<% %> 在JSP中放入常規的Java代碼
指令:<%@ @>
表達式: <%= %> 表達式會成爲out.print()的參數
聲明: <%! %> 每次運行服務器方法時都會重新初始化。在JSP變成servlet時成爲成員變量(方法)
JSP中的隱式對象
容器把JSP轉換爲servlet時,服務方法最前面有一堆隱式對象聲明和賦值
JspWriter – out
HttpServletRequest –-request
HttpServletResponse --response
HttpSession – session
ServletContext –application
ServletConfig – config
Throwable – exception
PageContext – pageContext
Object – page
頁面作用域屬性都存儲在pageContext
PageConext還封裝了其他隱式對象
如:獲取一個會話作用域屬性
<%= pageContext.getAttribute(“test”,PageContext.SESSION_SCOPE) %>
等價於 session.getAttribute(“test”);
不加作用域的話,從最嚴格的作用域開始找
<%= pageContext.getAttribute(“test”) %>
只有指定的“錯誤頁面”才能使用exception隱式對象
JspWriter不在PrintWriter的類層次中,不能取代PrintWriter.不過大多數打印方法都與PrintWriter相同,只不過增加了一些緩衝功能.
爲JSP配置servlet初始化參數
覆蓋jspInit()
JSP預編譯協議
在請求時追加一個查詢串”?jsp_precompile”,容器(如果支持)會立即完成轉換/編
譯