Java Web - Jsp内置對象
OUT對象
out對象:
out對象是JspWriter類的執行個體,是向用戶端輸出内容常用的對象。
常用方法如下:
- void println()向用戶端答應字元串
- void clear()清除緩沖區的内容,如果在flush之後調用會抛出異常。
- void clearBuffer()清除緩沖區的内容,如果在flush之後調用,不會抛出異常。
- void flush()将緩沖區内容輸出到用戶端。
- int getBufferSize()傳回緩沖區以位元組大小,如不設緩沖區則為0
- int getBemaining()傳回緩沖區還剩多少可以用。
- boolean isAutoFlush 傳回緩沖區滿時,是自動清空還是抛出異常。
- 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對象
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiMycTNyADMwIzNwgDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
通過配置檔案解決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() %>
response對象
<%
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()方法。其作用就是強制清空緩沖區内容,并将内容寫到浏覽器上。
請求重定向與請求轉發的差別
生活中的例子:
Session
Session對象
Session對象的常用方法:
<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]+" ");
}
%> <br>
Session的生命周期
<!-- 設定會話一分鐘後過期 -->
<session-config>
<session-timeout>1</session-timeout>
</session-config>
注意:
1、原有會話仍存在,但隻是這個舊的session仍存在于伺服器端,但再也沒有用戶端會攜帶它然後交給伺服器進行校驗,逾時銷毀。
2、測試本次繪畫的所有頁面都關閉的情況下,再重新通路某個JSP或Servlet時會建立新的會話。
3、 測試隻要目前繪畫頁面沒有全部關閉,重新打開新的浏覽器視窗通路同一個項目資源時,屬于同一次會話。
Application對象
<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()+" ");
}
%><br>
JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %><br>
Page對象
PageContext對象&&Config對象
config對象
Exception對象
在使用這個對象的時候需要将腳本語言中的errorPage進行設定,将所需要跳轉的錯誤(Error界面)界面配置在裡面,并在錯誤界面更改頁面的屬性(iserror屬性改為true)。