Jsp基礎語法
在JSP頁面中執行的java代碼。
<% Java代碼%>
在JSP頁面中定義變量或者方法
<%! Java代碼 %>
在JSP頁面中執行的表達式
<%= 表達式 %>
JSP內置對象是Web容器創建的一組對象,不使用new關鍵字就可以使用的內置對象。
out request response session application pagepageContext exception config
out對象是JspWriter類的實例,是向客戶端輸出內容常用的對象。
println(); clear(); clearBuffer(); flush();getBufferSize(); getRemaining(); isAutoFlush(); close();
request對象是HttpServletRequest類的實例。客戶端的請求信息被封裝在request對象中。
String getParameter(String name); String[]getParameterValues(String name); void setAttribute(String, Object); objectgetAttribute();
response對象包含了響應客戶請求的有關信息,具有頁面作用域。
String getCharacterEncoding(); voidsetContentType(); PrintWriter getWriter(); sendRedirect(String location);
請求重定向:客戶端行爲,response.sendRedirect(),從本質上講等同於兩次請求,前一次請求的對象不會保存。
請求轉發:服務器行爲,request.getRequestDispatcher().forward(req,resp); 是一次請求,轉發後請求對象會保存,地址欄的URL地址不會改變。
session表示客戶端與服務器的一次會話
Web中的session指的是用戶在瀏覽某個網站時,從進入網站到瀏覽器關閉所經過的這段時間,也就是用戶瀏覽這個網站所花費的時間
session對象在第一個JSP頁面被裝載時被自動創建,完成會話期管理
long getCreationTime(); public StringgetId(); public Object setAttribute(String name, Object value); public ObjectgetAttribute(String name); String[] getValueNames(); intgetMaxInactiveInterval()
session的生命週期
銷燬三種方式:session.invalidate();過期,服務器重新啓動
application對象實現了用戶間數據的共享,可存放全局變量。服務器的啓動和關閉決定了application對象的生命。
public void setAttribute(String name,Object value); public Object getAttribute(String name); EnumerationgetAttributeNames(); String getServerInfo();
page對象就是指向當前JSP頁面本身,是java.lang.Object類的實例。
pageContext對象提供了對JSP頁面內所有對象及名稱空間的訪問。pageContext對象的本類名也叫pageContext。
Object getPage(); void forward(StringrelativeUrlPath); void include(String relativeUrlPath)
Config對象是一個Servlet初始化時,JSP引擎向它傳遞信息用的。
JSP動作元素爲請求處理階段提供信息。動作元素遵循XML元素的語法。
在JSP頁面中使用Javabeans
1. 像使用普通java類一樣,創建javabean實例。
2. 在JSP頁面中通常使用jsp動作標籤使用javabean。
<jsp:useBeanid=”” class=”” scope=”” />
<jsp:setPropertyname = “java實例名” property= “*” />
<jsp:setPropertyname = “” property = “javabean屬性名” />
<jsp:setPropertyname = “” property = “javabean屬性名” value = “” />
<jsp:setPropertyname = “” property = “javabean屬性名” param = “request對象中的參數名” />
<jsp:getProperty name = “” property = “” />
Javabean的四個作用域範圍
page, request,session, application
Jsp中創建與使用Cookie
Cookie newCookie= new Cookie(String key, Object value);
response.addCookie(newCookie);
Cookie[] cookies= request.getCookies();
include指令
<%@ includefile=”URL” %>
include動作
<jsp:includepage=”URL” flush=”true|false” />
forward動作
<jsp:forwardpage=”URL” />
param動作
<jsp:param name=”參數名” value=”參數值”>
Servlet
Tomcat的容器分爲四個等級,Servlet的容器管理Context容器,一個Context對應一個Web工程。
Servlet生命週期
1. 初始化階段,調用init()方法。
2. 響應客戶請求階段,調用service()方法。由service()方法根據提交方式選擇執行doGet()或者doPost()方法。
3. 終止階段,調用destroy()方法。
在下列時刻Servlet容器裝載Servlet:
Servlet容器啓動時自動裝載某些Servlet,實現它只需要在web.xml文件中的<Servlet></Servlet>之間添加如下代碼:<loadon-startup>1</loadon-startup>,數字越小表示優先級別越高。
在Servlet容器啓動後,客戶端首次向Servlet發送請求。
Servlet類文件被更新後,重新裝載Servlet。
Servlet路徑跳轉
<a href=”servlet/HelloServlet”>訪問</a><br>
<ahref=”<%=path%>/servlet/HelloServlet”>訪問</a><br>
response.sendRedirect(request.getContextPath()+ “test.jsp”);
request.getRequestDispather(“test.jsp”).forward(request,response);
request.getRequestDispather(“../test.jsp”).forward(request,response);
過濾器
過濾器是一個服務端的組件,它可以截取用戶端的請求與響應信息,並對這些信息過濾。
過濾器的分類:
request用戶直接訪問頁面時,Web容器將會調用過濾器,
forward目標資源是通過RequestDispather的forward訪問時,該過濾器將被調用,
include目標資源是通過RequestDispather的include方法調用時,過濾器將被調用,
error目標資源是通過聲明式異常處理機制調用時,過濾器將被調用。
async支持異步處理
@WebFilter用於將一個類聲明爲過濾器,該註解將會在部署時被容器處理,容器將根據具體的屬性配置將相應的類部署爲過濾器。
Web監聽器
Servlet中定義的一種特殊類,用戶監聽ServletContext、HttpSession和ServletRequest等域對象的創建與銷燬事件,用於監聽域對象的屬性發生修改的事件。
啓動順序:監聽器,過濾器,Servlet
ServletContextListenercontextInitialized(); contextDestroyed();
HttpSessionListener sessionCreated(); sessionDestroyed();
統計在線人數,記錄訪問日誌
ServletRequestListener requestInitialized()requestDestroyed()
讀取參數,記錄訪問歷史
ServletContextAttributeListener attributeAdded(); attributeRemoved();attributeReplaced();
Session鈍化機制。本質就在於把服務器中不經常使用的Session對象暫時序列化到系統文件系統或是數據庫系統中,當被使用時反序列化到內存中,整個過程由服務器自動完成。
Session鈍化機制由SessionManager管理。可以配置主流內存的Session對象數目,將不常使用的Session對象保存到文件系統或數據庫。
Tomcat提供兩個鈍化驅動類,FileStore和JDBCstore
HttpSessionBindingListener valueBound(); valueUnbound();
HttpSessionActivationListener sessionWillPassivate(); sessionDidActivate();
Servlet3.0下監聽器的用法
@WebListener用於將類聲明爲監聽器,必須實現至少一個接口
<listener>
<listener-class>footmark.servlet.SimpleListener</listener-class>
</listener>
@WebListener(“a demo listener”)
Public class SimpleListener impliementsServletContextListener{}