jsp基礎

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{}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章