jsp指令和重定向

1 聲明指令
  格式:<%!聲明變量或函數 %>html

  做用:會生成一個成員變量或成員方法,也可使用訪問修飾符修飾,public,private,protectedjava

 

2 註釋指令
  格式:<%--註釋內容 --%>web

  做用:會把jsp頁面內容註釋掉,當在頁面中想要註釋掉一些代碼時須要使用這種方法,而不能使用html形式的註釋。由於html格式的註釋不會註釋掉代碼。express



3 輸出jsp表達式
  格式:<%= 表達式 %>

4 jsp腳本
  <%腳本內容%>

5 jsp編譯指令
  <%@ 編譯指令名 屬性名="屬性值"...%>數組

 

5.1 page指令瀏覽器

        <%@page
        language="Java"
        extends="package.class"
        import="package.class|package.*,..."
        session="true|false"
        buffer="none|8kb|size kb"
        autoFlush="true|false"
        isThreadSafe="true|false"
        info="text"
        errorPage="relativeURL"
        contentType="mimeType;charset=characterSet"|"text/html;charSet=UTF-8"
        pageEncoding="utf-8"
        isErrorPage="true|false"
        %>

 

5.2 include指令
  靜態的include編譯指令<%@include file="relativeURLSpec"%>
    注意:靜態包含會將被包含頁面的編譯指令也包含進來,若是兩個頁面的編譯指令衝突,那麼頁面就會出錯。

  動態的include編譯指令<jsp:include>tomcat

  

  靜態包含和動態包含的區別服務器

  靜態包含:cookie

  原理:先合併再翻譯session

  使用格式:<%@include file=""%>

  參數傳遞:不能夠向目標地址傳遞參數  

 

  動態包含:

  原理:先翻譯再合併

  使用格式:<jsp:include page="/common/header.jsp"></jsp:include>

  參數傳遞:能夠經過參數傳遞向目標地址傳遞參數

 

 

6 jsp7個動做指令
  jsp:forward: 執行頁面轉向,將請求的處理轉發到下一個頁面
  語法:

    jsp:forward:      執行頁面轉向,將請求的處理轉發到下一個頁面
        語法:
            <jsp:forward page="{relativeURL|<%=expression%>}"/> 或者
            <jsp:forward page="{relativeURL|<%=expression%>}">
                {<jsp:param .../>}
            </jsp:forward>
            
        forwad指令轉發請求時,客戶端的請求參數不會丟失。客戶端的url也不會改變,而內容變成了指定的轉向頁面。
        實際上forwad指令並無從新向新頁面發送請求,只是採用了新頁面來對用戶生成響應,請求依然是一次請求,
        因此請求參數、請求屬性都不會丟失
        
    jsp:param:        用於傳遞參數,必須與其餘支持參數的標籤一塊兒使用
    jsp:include:      用於動態引入一個jsp頁面
        將目標頁的body內容插入到原來頁面,與forward的區別是:forward將目標頁替換掉原來頁面
    jsp:plugin          用於下載JavaBean或Applet到客戶端執行
    
    jsp:useBean          建立一個JavaBean的實例
        語法:<jsp:useBean id="name" class="classname" scope="page|request|session|application" />
        id是JavaBean實例名,class是JavaBean實現類,scope是JavaBean做用範圍
        
    jsp:setProperty      設置JavaBean實例的屬性值
        語法:<jsp:setProperty name="BeanName" property="propertyName" value="value"/>
        name是JavaBean實例名,property是屬性名,value是屬性值
        
    jsp:getProperty      輸出JavaBean實例的屬性值
        語法:<jsp:getProperty name="BeanName" property="propertyName"/>

 

7 jsp的config對象,若是但願jsp頁面能夠獲取web.xml配置文件中的配置信息,則必須經過爲該jsp配置的路徑來訪問該頁面,纔可讓配置參數起做用。

 

8 response對象的做用

  1) 獲取輸出流,進而輸出一些圖片、pdf文檔

  2) 重定向,response.sendRedirect()

  3)  設置客戶端cookie,

  

  添加cookie的方法

    《1》生成cookie對象,Cookie構造器,Cookie(String name,String value)

    《2》設置Cookie對象的生命週期setMaxAge()單位爲秒

    《3》向客戶端寫cookie,response.addCookie()

  讀取cookie方法,使用request對象的getCookies()會返回全部Cookie對象組成的數組。遍歷全部便可找到。cookie對象有getName(),getValue()兩個方法。

 

  注意cookie對象不能夠存放中文,若是想要存放中文須要使用java.net.URLEncoder.encode(),java.net.URLDecoder.Decode()兩個方法。

 

9 jsp中重定向和轉發(forward)區別

  forward

    1) 執行forward後,依然是上一次請求

    2) forward目標頁能夠訪問原請求的請求參數,由於依然是同一次請求,全部原請求的請求參數、request範圍的屬性所有存在(能夠經過request保存共享數據)

    3) 地址欄裏的請求URL不會改變

    4) 只能在當前應用內部進行轉發,即轉發不到應用外部資源

  response.sendRedirect()

    1)  執行redirect後生成第二次請求

    2) redirect目標頁不能訪問原始請求的請求參數,由於是第二次請求了,原始請求的請求參數、request範圍屬性也會所有丟失(不能夠經過request對象共享數據)

    3) 地址欄改成重定向的目標URL,至關於在瀏覽器地址欄裏輸入新的URL後按回車鍵。

    4) 能夠重定向到當前應用外部,例如百度網站上。sendRedirect("www.baidu.com")

  

  若是想要在servlet的響應中設置瀏覽器隔一段時間再重定向, 可使用設置響應頭信息的方式。好比:response.setHeader("refresh", "3;url=index.html");

  就會在響應中停3秒後跳轉到index.html頁面上。若是不添加url則會定時刷新當前頁面。

 注意:在 java web 應用中若是使用到 url 路徑一概使用絕對路徑比較好。其中開始的"/"表示的含義有所不一樣

若是URL是讓瀏覽器使用的,URL的開頭的「/」表示 webapps 目錄下,若是是讓服務器使用"/" 表示當前 web app 的根目錄。

「.」表示相對路徑,就是 java 命令的運行目錄。在java web項目中,「.」表示服務器的bin目錄,例如tomcat就是在 tomcat/bin 目錄中。

對於 java web 中的資源文件。src目錄下的文件在java web 目錄下的文件會轉移到 WEB-INF/classes 目錄下。 

 

10 session對象

  session對象是一個經常使用的對象,表明一次用戶會話。含義是從客戶端瀏覽器鏈接服務器開始,到客戶端瀏覽器與服務器斷開鏈接爲止,這個過程就是一次會話。

  session一般用於跟中用戶會話信息,好比判斷是不是登陸用戶、購物車應用

  session範圍的屬性能夠在多個頁面跳轉之間共享,一旦關閉瀏覽器,即session結束。

注意session的屬性值須要是可序列化的java對象。

 

11 jsp中9個內置對象,在servlet中獲取方法?

  application:javax.servlet.ServletContext的實例,表明jsp所屬web應用自己,經常使用方法getAttribute(),setAttribute(),getInitParameter();在servlet中使用getServletConfig().getServletContext()方法獲取。

  

  config:javax.servlet.ServletConfig的實例,表明jsp的配置信息,經常使用方法:getInitParameter(),getInitParameterNames();在servlet中使用getServletConfig()獲取。

 

  exception:java.lang.Throwable的實例,表明頁面中的異常和錯誤。只有頁面是錯誤處理頁面,即編譯指令page的isErrorPage爲true時,該對象纔可使用。經常使用方法是getMessage(),printStackTrace().

 

  out:javax.servlet.jsp.JspWriter的實例,表明jsp頁面輸出流,用於輸出內容,造成html頁面。在servlet中使用PrintWriter out = response.getWriter();來獲取

  他們之間的區別是jspWriter 是一個帶緩衝的輸出,而PrintWriter對象是不帶緩衝的輸出。能夠經過page指令設置buffer的大小。

 

  page:表明頁面自己,是Servlet實例。在Servlet中就是this。

 

  pageContext:javax.servlet.jsp.PageContext的實例,表明jsp頁面上下文,能夠訪問頁面中的共享數據。經常使用方法有getServletContext(),getServletConfig()等。

  做用:1)能夠獲取其餘8個內置對象,應用場景---常常應用於自定義標籤中

    2) 是一個域對象,用於共享數據

 

  session:javax.servlet.http.HttpSession實例,表明一次會話。經常使用方法getAttribute(),setAttribute()。在servlet中使用request.getSession();來獲取。

 

  域對象有4個:page,request,session,context

  page:

  做用範圍:在當前頁中

 

  request:

  做用範圍:在同一次請求中

 

  session:

  做用範圍:同一次會話中。一次會話,是從打開瀏覽器訪問一個web應用,會話開始,到關閉瀏覽器,會話結束。

 

  context

  做用範圍:同一個web應用中。

相關文章
相關標籤/搜索