jsp 隱含對象

來源:互聯網
上載者:User

1.引言

為了方便程式員對常用對象的訪問,在JSP中規範了就中隱含對象,這些對象不用聲明可以直接拿來使用,在從JSP轉換為servlet時,他們會轉換為對應的servlet類型。

out:表示輸出,相當於servlet中的PrintWriter,對應的類型是javax.servlet.jsp.JspWriter

request:表示請求資訊,對用的類型是javax.servlet.http.HttpServletRequest

response:表示響應資訊,對應的類型是javax.servlet.http.HttpServletResponse

session:和servlet中的HttpSession一樣。對應的類型是javax.servlet.http.HttpSession

application:表示整個應用的上下文,和getServletConfig().getServletContext()等效。對應類型為javax..servlet.jsp.PageContext

exception:頁面異常,可以通過它獲得異常的資訊,對應的類型是java.lang.Throwable;

page:表示此JSP頁面,和java類中的this含義一樣

pageContext:表示此JSP的上下文,對應的類型是javax.servlet.jsp.PageContext

config:表示此JSP的servletconfig,對應的類型是javax.servlet.ServletConfig

其中pageContext, request, session, application為四個範圍對象。

2.request對象

這裡說說用他來傳值。

request.setAttribute("name","guo");
request.getRequestDispatcher("地址").forward(request,response);

在另外的頁子中可以接收:request.getAttribute("name");

3.session對象

session對象對應於HttpSession對象,在JSP中,page指令有一個屬性和session相關,這個屬性的名字也叫做session,倘若他的值被設定為false,
那麼在這個JSP頁面中就不能使用session。

注意這裡因為是內建對象,所以不用再產生,直接使用即可。

setAttribute(java.lang.String name, java.lang.Object value)

getAttribute(java.lang.String name) 傳回值為object

4.application

application對象時一個對web應用有效全域變數,他實現了ServletContext介面,注意他是全域的,也就是說所有的用戶端訪問的都是同一對象

setAttribute(java.lang.String name, java.lang.Object value)

getAttribute(java.lang.String name) 傳回值為object

5.四個範圍對象的總結

如果把變數放到pageContext裡,就說明它的範圍是page,它的有效範圍只在當前jsp頁面裡,從把變數放到pageContext開始,到jsp頁面結束,你都可以使用這個變數。

如果把變數放到request裡,就說明它的範圍是request,它的有效範圍是當前請求周期。 所謂請求周期,就是指從http請求發起,到伺服器處理結束,返迴響應的整個過程。在這個過程中可能使

用forward的方式跳轉了多個jsp頁面,在這些頁面裡你都可以使用這個變數。

如果把變數放到session裡,就說明它的範圍是session,它的有效範圍是當前會話。 所謂當前會話,就是指從使用者開啟瀏覽器開始,到使用者關閉瀏覽器這中間的過程。這個過程可能包含多個
請求響應。也就是說,只要使用者不關瀏覽器,伺服器就有辦法知道這些請求是一個人發起的,整個過程被稱為一個會話(session),而放到會話中的變數,就可以在當前會話的所有請求裡使用。

如果把變數放到application裡,就說明它的範圍是application,它的有效範圍是整個應用,整個應用是指從應用啟動,到應用結束,可以簡單理解為從伺服器啟動,到伺服器關閉 。

 

6.exception

exception對象是Throwable的執行個體,他表示的是JSP中的異常資訊,注意exception這個隱含對象並非在所有的JSP頁面中都可以用,如果要使用
這個對象,必須將此JSP的page指令的isErrorPage屬性值設定為true。

他的使用我舉個例子:

error.jsp中:

設定他為錯誤頁面:<%@ page isErrorPage="true" %>

jsp代碼:<%
  Date date=new Date();
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");
  String s=sdf.format(date);
  out.println("您出錯了,請您檢查");
  out.println("錯誤時間:"+s+"<br>");
  out.println("錯誤類型:"+exception);
  %>

web.xml檔案中:

<error-page>
  <exception-type>java.lang.Throwable</exception-type>
  <location>/error.jsp</location>>
  </error-page>

通過上面的設定,整個網站的錯誤資訊都可以集中到error.jsp中取處理。自己試著弄一個錯誤頁面:index.jsp

  <%
    int a=3;
    out.println(a/0);
    %>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.