1. 程式人生 > >JSP+EL表示式學習

JSP+EL表示式學習


    jsp是可以在傳統 HTML頁面插入java程式碼


  1.JSP原理 
        (1)當用戶訪問一個JSP頁面時,回想一個Servlet容器(Tomcat)發出請求;


        (2)如果是第一次請求頁面,或頁面有所改動,則servlet容器首先要把JSP頁面(假設為test.jsp)轉化為Servlet程式碼(test.java),再將其轉化為(test.class檔案);因為這個過程(編譯)會耗費一定時間,所以第一次訪問或jsp檔案有改動時,訪問時間有些長;


        (3)JSP容器負責呼叫從JSP轉換來的servlet,這些servlet負責提供服務相應使用者請求(比如客戶端傳送表單,要求servlet:formprocessor.java來處理,則容器會建立一個執行緒,呼叫formprocessor.java來處理該請求);如果使用者有多個請求,則容器會建立多個執行緒處理多個請求;


        (4)容器執行位元組碼檔案(包括呼叫的servlet:formprocessor.java位元組嗎),並將其結果返回到客戶端;(返回的最終方式是有servlet輸出html格式的檔案流)





   2.JSP組成  
        (1)靜態部分:標準的HTML標籤、靜態的頁面內容,這些內容與靜態HTML頁面相同.

        (2)動態部分:Java程式控制的內容,這些內容由Java程式來動態生成。


二、JSP的基本語法 


    1.JSP指令碼表示式:
         語法<%=表示式%>
    例如:<%=new Date().toLocaleString()%>  
   作用:在網頁上輸出資料
    2.JSP指令碼片段:
          語法<% 程式碼1;程式碼2 ....%> 
 對應Servlet 出現在JspServlet()中
         作用:在JSP中輸出java程式碼
  
    3.JSP宣告 
作用:定義一些類成員(變數 )
語法  <%!  定義的變數 、方法 %>


    4、JSP註釋 
           語法<%--內容--%>
  與html註釋不同他不會把註釋的內容翻譯到Servlet中


三、JSP的指令

指令是為了致使伺服器如何處理JSP頁面的內容


     1.指令
page   taglib include
語法<%@指令名稱 指令屬性="值" ....%>
     
     2.指令作用
  1.page指令  定義JSP頁面的屬性
   屬性 import:匯入JSP頁面中java指令碼
   import:匯入JSP頁面中java指令碼需要用到的類或包。
<%@page import=”java.util.Date,java.util.UUID”%>
或者
<%@page import=”java.util.Date”%>
<%@page import=”java.util.UUID”%>
注意:伺服器會自動匯入
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
session:指示是否產生HttpSession物件。預設值是true。
 buffer:JSP中的HTML的輸出都是用的JspWriter的字元輸出流。該屬性指定輸出流的快取大小。預設8Kb
 errorPage:指定當JSP出現異常時轉向(請求轉發)的頁面地址。該地址如果以”/”開頭,“/”代表著當前應用;如果不是以”/”開頭,表示的是相對路徑。
另外一種方式:配置全域性錯誤提示頁面。
修改web.xml

      isErrorPage:指示是否產生exception內建物件。預設值是false
      contentType:和響應訊息頭Content-Type作用一樣。HttpServletResponse.setContentType();   text/html;charset=UTF-8
     pageEncoding:指示伺服器在翻譯JSP時採用的編碼
 
        特點:還有contentType的作用
      isELIgnored:是否忽略EL表示式。預設是false(不忽略)


      2.taglib指令:
作用:引入外部的標籤庫(JSTL)
屬性:
uri:外部標籤的名稱空間
prefix:字首
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

      3.include指令:
作用:包含。靜態包含
屬性:
file:被包含的頁面的地址。”/”表示當前應用。不以”/”開頭,表示相對路徑


四、JSP的動作元素

       動作元素就是JSP內建標籤
       
      jsp:include:實現動態包含
page:指定被包含的目標資源的URL地址。如果以”/”,代表著當前應用。否則表示的是相對路徑

      jsp:forward:實現請求轉發
page:指定轉發的目標資源的URL地址。如果以”/”,代表著當前應用。否則表示的是相對路徑

      jsp:param:包含或轉發時傳遞請求引數


 五、JSP的九大隱式物件
1.JSP對應Servlet的service的區域性變數
2.JSP的就九大隱式物件

(1) HttpSession類的session物件    如果Page指令的session屬性是false就沒有這個物件
作用:主要用於來分別儲存每個使用者資訊,與請求關聯的會話;
         會話狀態維持是Web應用開發者必須面對的問題。


(2) HttpServletRequest類的request物件
作用:代表請求物件,主要用於接受客戶端通過HTTP協議連線傳輸到伺服器端的資料。


(3) HttpServletResponse類的respone物件
作用:代表響應物件,主要用於向客戶端傳送資料


(4) JspWriter類的out物件
作用:主要用於向客戶端輸出資料; 
        Out的基類是JspWriter


(5) ServletContex類的application物件
作用:主要用於儲存使用者資訊,程式碼片段的執行環境;
        它是一個共享的內建物件,即一個容器中的多個使用者共享一個application物件,故其儲存的資訊被所有使用者所共享.


(6) PageContext類的pageContext物件
作用:管理網頁屬性,為JSP頁面包裝頁面的上下文,管理對屬於JSP中特殊可見部分中已命名物件的訪問,它的建立和初始化都是由容器來完成的。


(7) ServletConfig類的config物件
作用:程式碼片段配置物件,表示Servlet的配置。


(8) Object類的page(相當於this)物件
作用:處理JSP網頁,是Object類的一個例項,指的是JSP實現類的例項,即它也是JSP本身,只有在JSP頁面範圍之內才是合法的。
 
(9)Exception      如果page指令的isErrorpage屬性是false就沒有這物件
作用:處理JSP檔案執行時發生的錯誤和異常




3.pageContext隱式物件作用

是一個頁面範圍的域物件,能操作其他三個域物件的資料(ServletRequest ServletSession ServletContext)
方法
    void setAttribute(String key,Object value) 
    void removeAttribute(String key)
                     Object getAttribute(String key)
                     pageContext頁面域(作用域)範圍。pageContext.setAttribute("p", "ppp");//只能本頁中能取出來
    void setAttribute(String key,Object value,int scope)
    void removeAttribute(String key,int scope)
    Object getAttribute(String key,int scope)


    int Scope:是一個常量
         PageContext.PAGE_SCOPE表示頁面範圍
 PageContext.REQUEST_SCOPE表示請求範圍
 PageContext.SESSION_SCOPE表示回話範圍
 PageContext.APPLICATION SCOPE表示應用範圍


 注意:
<%
pageContext.setAttribute(“g”,”gg”,PageContext.APPLICATION_SCOPE);
//application.setAttribute(“g”,”gg”); 功能和上面一樣
%>


Object findAttribute(String key):依次從頁面、請求、會話、應用範圍查詢指定名稱的資料。找到為止。


PageContext可以獲取其他八個JSP隱式物件
ServletRequest request = pageContext.getRequest()
  
提供了包含和轉發的簡單方式
pageContext.forward("/demo.jsp");
pageContext.include("/demo.jsp");




六:四大域物件
    PageContext:存放的資料只能在當頁中取出
    ServletRequest:存放的資料在一次會話請求中取出
    ServletSession:存放的資料只能在一次回話中取出
    ServletContext:存放的資料在當前應用中取出




七:EL表示式
   1.EL主要作用:向介面輸出資料 替換JSP中的表示式<%= %>


   基本語法形式
          ${11}
 和<%=11%>效果一樣
    要先把資料存放到四大域  然後再獲取
     El表示式能從四大域物件中獲取資料
         1.獲取資料