JSP和EL運算式
來源:互聯網
上載者:User
一、JSP的幾個動作元素:3個(JSP內建的自訂標籤,給伺服器用的)1、jsp:include作用:實現動態包含屬性:page.包含的目標組件的URL地址。以“/”開頭,就表示絕對路徑了。2、jsp:forward作用:實現轉寄屬性:page.轉向的目標組件的URL地址。以“/”開頭,就表示絕對路徑了。3、jsp:param作用:添加請求參數屬性:name參數名 value參數值<jsp:forward page="/2.jsp">
<jsp:param value="mjc" name="name"/><jsp:param value="123" name="password"/> </jsp:forward>以上代碼說明,轉向2.jsp時,傳遞一個name的請求參數二、JSP中的9個隱式對象(在JSP中的Java指令碼中,不用定義直接可以使用的對象。---JSP對應的Servlet的service方法中的變數)內建對象(變數名) 對應的類型request
javax.servlet.http.HttpServletRequestresponse
javax.servlet.http.HttpServletResponsesession
javax.servlet.http.HttpSession(前提page指令的session="true")application
javax.servlet.ServletContextconfig
javax.servlet.ServletConfigpage
thisexception
java.lang.Throwable(前提page指令的isErrorPage="true")-------------------------------------------------------------out
javax.servlet.jsp.JspWriterpageContext
javax.servlet.jsp.PageContext;1、out內建對象(javax.servlet.jsp.JspWriter)詳解字元輸出資料流,作用等同於PrintWriter(ServletResponse.getWriter())使用者看到的結果資料:都是從ServletResponse的流的緩衝中取到的。2、pageContext內建對象(javax.servlet.jsp.PageContext)詳解三大作用:a、擷取其他JSP中的8大隱式對象:在普通類中擷取JSP9個隱式對象用的。b、提供包含和轉寄的簡易方法request.getRequestDispatcher("url").forward(request,response);request.getRequestDispatcher("url").include(request,response);PageContext.forward("url"):轉寄PageContext.include("url"):包含c、本身是一個域對象,還能操作其他域對象中的資料c.1本身是一個域對象,想象內部有一個Map<String,Object>void setAttribute(String str,Object obj)Object getAttribute(String str)void removeAttribute(String str)注意:向PageContext域對象存放的東東,只在當前頁面有效。c.2操作其他域對象中的資料(其他的域對象ServletContext HttpSession ServletRequest)void setAttribute(String str,Object obj,int scope)Object getAttribute(String str,int scope)void removeAttribute(String str,int scope)注意:參數scope是整數,他是PageContext中定義的常量(PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE)c.3非常重要的方法:Object findAttribute(String s):按照頁面、請求、會話、應用範圍的順序依次尋找s的資料,找到位置。三、四大域(範圍)對象(作用:封裝資料,傳遞資料)域對象的類型 jsp中的引用名稱 表示的範圍PageContext pageContext pageServletRequest request requestHttpSession session sessionServletContext application application四、JavaBean的概念就是一個普通的Java類(POJO、DO--Data Object、VO--Value Object、域(領域)對象)一般放到domain的包中特點:1、類必須有預設的構造方法。2、類中的欄位都是私人的。3、提供公用的getter或者setter方法(屬性)4、類一般是public聲明的。5、一般需要實現java.io.Serializable介面在JavaEE開發中,JavaBean的主要作用就是封裝資料注意:遵守Java的命名規範。五、JSP中使用JavaBean:3個動作元素1、jsp:useBean作用:從指定的域範圍尋找指定名稱的對象;找到了,返回對象的應用;沒有找到,建立一個新的對象,存放到域範圍中去屬性:id:必須的。代表要尋找的對象引用名稱。class:物件類型。scope:指定的範圍。預設是page。可選值:page|request|session|application2、jsp:setProperty作用:給指定的屬性設定值。屬性:property:JavaBean的屬性(對應JavaBean的setter方法:比如setName,此處寫name)針對請求參數,還支援萬用字元*name:指定是為哪個JavaBean設定屬性(使用該標籤時,需要先調用jsp:useBean)value:設定的屬性值。還能自動類型轉換(僅限基本類型)(支援Java運算式賦值)param:請求參數的名稱3、jsp:getProperty作用:擷取指定屬性的值屬性:name:指定擷取哪個JavaBean的屬性(使用該標籤時,需要先調用jsp:useBean)property:JavaBean的屬性(對應JavaBean的getter方法:比如getName,此處寫name)註:如果某個屬性的值為null,用此標籤輸出時就顯示null(這樣不好)六、SUN公司的JavaWeb兩個設計模型1、模型1:JSP+JavaBean開發2、模型2:Servlet+JSP+JavaBean開發。MVC+三層架構Model:JavaBean View:JSPController:Servlet七、EL運算式1、為什麼要學習EL運算式?目的就是替換掉JSP中的Java運算式(<%=運算式%>)2、基本的文法:${EL運算式},作用是將運算式的運算結果輸出到頁面上。3、詳細功能:a、擷取對象的屬性a.1EL運算式只能擷取域中的對象或對象的屬性。運算子:.運算子:取對象的屬性(調用對象的getter方法)[]運算子:取對象的屬性,屬性要用引號引起來。.運算子能乾的[]都能幹,[]運算子能乾的,.運算子不一定能幹。擷取的屬性或key的值命名不符合java命名規範的情況。注意:EL擷取的對象如果不存在,不會報null 指標異常,什麼都不輸出。如果取的屬性不存在,則報異常。b、進行簡單的數學和邏輯運算b.1empty運算子:結果為true或false。用於判斷一個對象或集合是否為空白或者是""字串,如果是返回true。特別注意:如果判斷的是集合類型,即使集合對象本身不是空的,如果其中沒有任何的元素,empty運算子也返回true。b.1三元運算子:${邏輯運算式?為true是執行:為false時執行}
注意:EL運算式中不支援字串串連操作。c、擷取JavaWeb開發常用的對象(EL有11個隱式對象)注意:一定要與JSP的內建對象分清楚這11個EL內建對象,只有一個是表示對象本身,其餘10個都是表示一個Map結構的對象。pageContext:類型javax.servlet.jsp.PageContext。--------------------------------------------------------pageScope:PageContext對象中維護的那個Map域。requestScope:sessionScope:applicationScope:param:代表封裝了請求參數的Map<String,String>。key是請求參數名。value請求參數值,他是一個String字串。paramValues:代表封裝了請求參數的Map<String,String[]>。key是請求參數名。value請求參數值數組。header:代表封裝了請求訊息頭的Map<String,String>。key是要求標頭名。value要求標頭值,他是一個String字串。headerValues:代表封裝了請求訊息頭的Map<String,String[]>。key是要求標頭名。value要求標頭值數組。cookie:代表了封裝了Cookie的Map<String,Cookie>。key是Cookie的name,value是Cookie對象本身。initParam:代表了初始化參數的Map<String,String>。key是參數名,value是參數值。參數:web.xml<context-param><param-name>encoding</param-name><param-value>UTF-8</param-value></context-param>d、調用普通Java類的靜態方法(自訂EL函數)八、JSTL的核心標籤:c:if c:forEach目標:JSP中不能出現一行Java指令碼和運算式購物車簡單案例:MVC+三層架構來實現.資料庫:記憶體資料庫;JSP+Servlet實現。使用者的註冊和登入案例:MVC+三層架構來實現。資料庫:XML;JSP+Servlet實現。