JSP 中9 大內置對象
- PageContext? ? ? ? ??// 用來存東西
- Request? ? ? ? ? ? ? ? ?// 用來存東西
- Response
- Session? ? ? ? ? ? ??// 用來存東西
- Application? (ServletContext)? // 用來存東西
- config? ? ? ? ?(ServletConfig)
- out
- page
- exception
有? 存取功能的內置對象? 的實例:
先創建一個?pageContextDemo01.jsp 文件 :
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%--內置對象--%> <%pageContext.setAttribute("name1","小許1號");//保存的數據只在一個頁面中有效request.setAttribute("name2","小許2號"); //保存的數據只在一次請求中有效,請求轉發會攜帶這個數據session.setAttribute("name3","小許3號");//保存的數據只在一次會話中有效,從打開瀏覽器到關閉瀏覽器application.setAttribute("name4","小許4號");//保存的數據只在服務器中有效,從打開服務器到關閉服務器,數據才回丟失 %><%--腳本片段中的代碼,會被原封不動的生成到 .JSP文件 .java文件中 要求:腳本片段中的代碼:必須保證Java語法的正確性 --%><%//從pageContext 取出,我們通過尋找的方式(findAttribute)來取//從作用域的底層到高層尋找 page --> request --> session --> applicationString name1 = (String) pageContext.findAttribute("name1");String name2 = (String) pageContext.findAttribute("name2");String name3 = (String) pageContext.findAttribute("name3");String name4 = (String) pageContext.findAttribute("name4");String name5 = (String) pageContext.findAttribute("name5"); //不存在 %><%--使用EL表達式 輸出 ${}--%> <h1>取出的值為:</h1> <h3>${name1}</h3> <h3>${name2}</h3> <h3>${name3}</h3> <h3>${name4}</h3> <%--<h3>${name5}</h3> //EL表達式會過濾掉不存在值--%> <%--使用JSP表達式取不存在的值,不會被過濾,會在網頁上顯示 默認值null--%> <h3><%=name5%></h3></body> </html>
運行結果:
作用域等級:
?從底層到高層: page --> request --> session --> application
我們可以用? pageContext.setAttribute( )? ?來指定它的作用域
<%//設置作用域為 session /**public static final int PAGE_SCOPE = 1;*public static final int REQUEST_SCOPE = 2;*public static final int SESSION_SCOPE = 3;*public static final int APPLICATION_SCOPE = 4;*/pageContext.setAttribute("hello1","hello1",PageContext.SESSION_SCOPE); %>
兩種頁面跳轉的實現方式,新建一個 jsp 文件 ,增加以下代碼,可使其跳轉到 indext.jsp 文件頁面?
<%//在前端 jsp中可直接通過pageContext.forward() 就可以實現頁面轉發pageContext.forward("/indext.jsp");//上下這兩句代碼的效果都是一樣的,兩種不同的實現方式//request.getRequestDispatcher("/indext.jsp").forward(request,response); %>
常用內置對象的應用場景
- page(用不上,不用了解)
- request:客戶端向服務器發送請求,產生的數據,用戶看完就沒用了,比如:新聞,用戶看完就沒用的
- session:客戶端向服務器發送請求,產生的數據,用戶用完一會還有用,比如:;購物車;
- application:客戶端向服務器發送請求,產生的數據,一個用戶用完了,其他用戶還可能使用,比如:聊天數據;