Java之JSP教程九大內置對象詳解(上篇)
目錄
- JSP九大內置對象一覽表
- 九大內置對象
- 四大域對象
- JSP request對象
- 示例
- JSP response對象
- 示例
- JSP out對象
- 示例
JSP九大內置對象一覽表
為了簡化頁面的開發過程,JSP 提供了一些內置對象。
JSP 內置對象又稱為隱式對象,它們由容器實現和管理。
在 JSP 頁面中,這些內置對象不需要預先聲明,也不需要進行實例化,我們可以直接在腳本和表達式中使用。
注意:JSP 內置對象只能在腳本和表達式中使用,在聲明中不能使用。
九大內置對象
JSP 中定義了 9 個內置對象。
它們分別是:request、response、session、application、out、pagecontext、config、page 和 exception,這些對象在客戶端和服務器端交互的過程中分別完成不同的功能。
JSP 的內置對象主要有以下特點:
- 由 JSP 規范提供,不用編寫者實例化;
- 通過 Web 容器實現和管理;
- 所有 JSP 頁面均可使用;
- 只有在腳本元素的表達式或代碼段中才能使用。
四大域對象
在 JSP 九大內置對象中,包含四個域對象。
它們分別是:pageContext(page 域對象)、request(request 域對象)、session(session 域對象)、以及 application(application 域對象)。
JSP 中的 4 個域對象都能通過以下 3 個方法,對屬性進行保存、獲取和移除操作。
- void:setAttribute(String name, Object o) 將屬性保存到域對象中
- Object:getAttribute(String name) 獲取域對象中的屬性值
- void:removeAttribute(String name) 將屬性從域對象中移除
JSP 中的 4 個域對象的作用域各不相同,如下。
page:如果把屬性保存到 pageContext 中,則它的作用域是 page。
該作用域中的屬性只在當前 JSP 頁面有效,跳轉頁面后失效。
request:如果把屬性保存到 request 中,則它的作用域是 request。
該作用域中的屬性只在當前請求范圍內有效。服務器跳轉頁面后有效,例如jsp:forward;客戶端跳轉頁面后無效,例如超鏈接。
session:如果把屬性保存到 session 中,則它的作用域是 session。
該作用域中的屬性只在當前會話范圍內有效,網頁關閉后失效。
application如果把屬性保存到 application 中,則它的作用域是 application。
該作用域中的屬性在整個應用范圍內有效,服務器重啟后失效。
JSP request對象
JSP request 是 javax.servlet.http.HttpServletRequest 的實例對象,主要用來獲取客戶端提交的數據。
request 對象提供了一系列方法,可以獲取請求參數信息、表單數據、HTTP 頭信息、cookie 和 HTTP 請求方法等。
示例
在 index.jsp 頁面使用 getHeaderNames() 方法獲取 HTTP 頭信息,并遍歷輸出參數名稱和對應值。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.util.*"%><!DOCTYPE html><html><head></head><body> <h2>獲取HTTP請求頭信息</h2> <table width="100%" border="1" align="center"><tr bgcolor="#949494"> <th>參數名稱</th> <th>參數值</th></tr><% Enumeration headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) {String paramName = (String) headerNames.nextElement();out.print("<tr><td>" + paramName + "</td>\n");String paramValue = request.getHeader(paramName);out.println("<td> " + paramValue + "</td></tr>\n"); }%> </table></body></html>
運行結果如下:
JSP response對象
JSP response 是 javax.servlet.http.HttpServletResponse 的實例對象。response 對象和 request 對象相對應,主要用于響應客戶端請求,將處理信息返回到客戶端。
response 對象的常用方法如下:
- void addHeader(String name, String value):添加頭信息(參數名稱和對應值)
- void addCookie(Cookie cookie):添加 cookie 信息
- void sendRedirect(String location):實現頁面重定向
- void setStatus(int sc):實現頁面的響應狀態代碼
- void setContentType(String type):設置頁面的 MIME 類型和字符集
- void setCharacterEncoding(String charset):設定頁面響應的編碼類型
示例
下面在 login.jsp 新建表單,在 checkdetails.jsp 接收 login.jsp 提交的用戶名和密碼,與指定的用戶名和密碼相比,相同則登錄成功,重定向到 success.jsp;反之登錄失敗,重定向到 failed.jsp。
login.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head></head><body> <h2>用戶登錄</h2> <form action="checkdetails.jsp">用戶名: <input type="text" name="username" /> 密碼: <input type="text" name="pass" /> <input type="submit" value="登錄" /> </form></body></html>
checkdetails.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head></head><body> <%String username = request.getParameter("username");String password = request.getParameter("pass");if (username.equals("biancheng") && password.equals("bianchengbang")) { response.sendRedirect("success.jsp");} else { response.sendRedirect("failed.jsp");} %></body></html>
success.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head></head><body> <h2>登錄成功!</h2></body></html>
failed.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html><head></head><body> <h2>登錄失敗,用戶名或密碼錯誤!</h2></body></html>
運行結果如下所示:
登錄頁面(輸入正確的用戶名和密碼)
登錄成功頁面
登錄頁面(輸入錯誤的用戶名)
登錄失敗頁面
JSP out對象
JSP out 是 javax.servlet.jsp.JspWriter 的實例對象。
out 對象包含了很多 IO 流中的方法和特性,最常用的就是輸出內容到 HTML 中。
out 對象的常用方法如下:
- void print():將內容直接打印在 HTML 標簽中
- void println():類似于 print,唯一區別是 println 方法添加了換行符
- void newLine():輸出換行字符
- void clear():清除頁面緩沖區
- boolean isAutoFlush():檢查頁面是否自動清除緩沖區
示例
out 對象的方法相對比較簡單,一般情況下很少使用。
下面我們使用 out 對象的 print、println 和 newLine 方法將內容輸出到 HTML 中。index.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.util.*"%><!DOCTYPE html><html><head></head><body> <%out.print("歡迎來到編程幫,");out.newLine();out.println("我們的網址是:");out.print("www.biancheng.net"); %></body></html>
運行結果如下:
index.jsp運行結果
注意:這里的 println 與 newLine 換行指的是 HTML 代碼換行,并不是頁面顯示的換行。頁面顯示換行需要在代碼后面加標簽。
到此這篇關于Java之JSP教程九大內置對象詳解(上篇)的文章就介紹到這了,其他兩個部分的內容(中、下篇)請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!