天天看點

Java Web - Jsp内置對象Java Web - Jsp内置對象

Java Web - Jsp内置對象

OUT對象

out對象:

out對象是JspWriter類的執行個體,是向用戶端輸出内容常用的對象。

常用方法如下:

  1. void println()向用戶端答應字元串
  2. void clear()清除緩沖區的内容,如果在flush之後調用會抛出異常。
  3. void clearBuffer()清除緩沖區的内容,如果在flush之後調用,不會抛出異常。
  4. void flush()将緩沖區内容輸出到用戶端。
  5. int getBufferSize()傳回緩沖區以位元組大小,如不設緩沖區則為0
  6. int getBemaining()傳回緩沖區還剩多少可以用。
  7. boolean isAutoFlush 傳回緩沖區滿時,是自動清空還是抛出異常。
  8. void close()關閉輸出流

Demo:

<body>
    <h1>out内置對象</h1>
    <% 
       out.println("<h2>靜夜思</h2>");
       out.println("床前明月光<br>");
       out.println("疑是地上霜<br>");
       out.flush();
       //out.clear();//這裡會抛出異常。
       out.clearBuffer();//這裡不會抛出異常。
       out.println("舉頭望明月<br>");
       out.println("低頭思故鄉<br>");

    %>
        緩沖區大小:<%=out.getBufferSize() %>byte<br>
        緩沖區剩餘大小:<%=out.getRemaining() %>byte<br>
       是否自動清空緩沖區:<%=out.isAutoFlush() %><BR>    
  </body>
           

1、out.println()方法裡面可是使用 一些html 标簽。

2、緩沖區大小:out.getBufferSize()

3、緩沖區剩餘大小:out.getRemaining()

4、是否自動清空緩沖區:out.isAutoFlush() boolean類型

get與post送出方式差別

1、get與post差別

表單有兩種送出方式:get與post

1、get:以明文的方式通過URL送出資料,資料在URL中可以看見。送出的資料最多不超過2kb。安全性較低但是效率比POST要高。适合送出資料量大,安全性不高的資料。比如查詢、搜尋等功能。

2、post:将使用者資訊送出的資訊封裝在HTML HEADER内。适合送出資料量大,安全性高的使用者資訊。比如:注冊、修改、上傳等功能。

request對象

Java Web - Jsp内置對象Java Web - Jsp内置對象

通過配置檔案解決URL傳參的亂碼問題:

如果想要修改URl的傳參的字元編碼可以修改Tomcat目錄下的conf\server.xml下的Connector屬性:

<Connector port="8080" protocol="HTTP/1.1"
   connectionTimeout="20000"
   redirectPort="8443"  URIEncodeing="utf-8"/> 
//加了這個屬性(URIEncodeing),我們就可以解決通過URL傳參的亂碼問題。
           
密碼:<%=request.getAttribute("password") %> //擷取屬性屬性值的方法
 請求體的MIME類型:<%=request.getContentType() %>
 協定類型及版本号:  <%=request.getProtocol() %>
 伺服器主機名 :<%=request.getServerName() %>
 伺服器端口号:<%=request.getServerPort() %>
 請求檔案的長度 :<%=request.getContentLength() %>
 請求用戶端的IP位址:<%=request.getRemoteAddr() %>
 請求的真實路徑:<%=request.getRealPath("request.jsp") %>
 請求的上下文路徑:<%=request.getContextPath() %>
           
Java Web - Jsp内置對象Java Web - Jsp内置對象

response對象

Java Web - Jsp内置對象Java Web - Jsp内置對象
<%
    response.setContentType("text/html;charset=utf-8"); //設定響應的MIMI類型

    out.println("<h1>response内置對象</h1>");
    out.println("<hr>");
    //out.flush();

    PrintWriter outer = response.getWriter(); //獲得輸出流對象
    outer.println("大家好,我是response對象生成的輸出流outer對象");
    //response.sendRedirect("reg.jsp");//請求重定向
    //請求重定向
    //response.sendRedirect("request.jsp");
    //請求轉發
    request.getRequestDispatcher("request.jsp").forward(request, response);
%>
           

知識點:

1、respone對象獲得的writer對象(即給用戶端輸出流的對象)在列印的時候會提前于out的内置對象。

2、如果一定需要将out内置對象中的内容提前輸出,可以通過Flush()方法。其作用就是強制清空緩沖區内容,并将内容寫到浏覽器上。

請求重定向與請求轉發的差別

Java Web - Jsp内置對象Java Web - Jsp内置對象

生活中的例子:

Java Web - Jsp内置對象Java Web - Jsp内置對象

Session

Java Web - Jsp内置對象Java Web - Jsp内置對象
Java Web - Jsp内置對象Java Web - Jsp内置對象

Session對象

Java Web - Jsp内置對象Java Web - Jsp内置對象

Session對象的常用方法:

Java Web - Jsp内置對象Java Web - Jsp内置對象
<h1>session内置對象</h1>
    <hr>
    <% 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//模式串
      Date d = new Date(session.getCreationTime());
      session.setAttribute("username", "admin"); 
      session.setAttribute("password", "123456");
      session.setAttribute("age", );

      //設定目前session最大生成期限機關是秒
      //session.setMaxInactiveInterval();//秒鐘

    %>
    Session建立時間:<%=sdf.format(d)%><br>    
    Session的ID編号:<%=session.getId()%><BR>
   從Session中擷取使用者名:<%=session.getAttribute("username") %><br>

    <a href="session_page2.jsp" target="_blank">跳轉到Session_page2.jsp</a>     
           

Session.getValuename()方法:

<body>
    <h1>session内置對象</h1>
    <hr>
    <% 
      //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
      //Date d = new Date(session.getCreationTime());
      //session.setAttribute("username", "admin"); 
    %>

    Session的ID編号:<%=session.getId()%><BR>
         從Session中擷取使用者名:<%=session.getAttribute("username") %><br>
    Session中儲存的屬性有:<% 
                     String[] names =session.getValueNames();
                     for(int i=;i<names.length;i++)
                     {
                        out.println(names[i]+"&nbsp;&nbsp;");
                     }

    %> <br>    
           

Session的生命周期

Java Web - Jsp内置對象Java Web - Jsp内置對象
Java Web - Jsp内置對象Java Web - Jsp内置對象
Java Web - Jsp内置對象Java Web - Jsp内置對象
Java Web - Jsp内置對象Java Web - Jsp内置對象
<!-- 設定會話一分鐘後過期 -->
  <session-config>
    <session-timeout>1</session-timeout>
  </session-config>
           

注意:

1、原有會話仍存在,但隻是這個舊的session仍存在于伺服器端,但再也沒有用戶端會攜帶它然後交給伺服器進行校驗,逾時銷毀。

2、測試本次繪畫的所有頁面都關閉的情況下,再重新通路某個JSP或Servlet時會建立新的會話。

3、 測試隻要目前繪畫頁面沒有全部關閉,重新打開新的浏覽器視窗通路同一個項目資源時,屬于同一次會話。

Application對象

Java Web - Jsp内置對象Java Web - Jsp内置對象
Java Web - Jsp内置對象Java Web - Jsp内置對象
<h1>application内置對象</h1>
    <% 
       application.setAttribute("city", "北京");
       application.setAttribute("postcode", "10000");
       application.setAttribute("email", "[email protected]");

    %>
         所在城市是:<%=application.getAttribute("city") %><br>
    application中的屬性有:<% 
         Enumeration attributes = application.getAttributeNames();
         while(attributes.hasMoreElements())
         {
            out.println(attributes.nextElement()+"&nbsp;&nbsp;");
         }
    %><br>
    JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %><br>              
           

Page對象

Java Web - Jsp内置對象Java Web - Jsp内置對象

PageContext對象&&Config對象

Java Web - Jsp内置對象Java Web - Jsp内置對象
Java Web - Jsp内置對象Java Web - Jsp内置對象

config對象

Java Web - Jsp内置對象Java Web - Jsp内置對象

Exception對象

Java Web - Jsp内置對象Java Web - Jsp内置對象

在使用這個對象的時候需要将腳本語言中的errorPage進行設定,将所需要跳轉的錯誤(Error界面)界面配置在裡面,并在錯誤界面更改頁面的屬性(iserror屬性改為true)。

繼續閱讀