JSP的九大內置對象以及四大做用域

什麼是內置對象?

  • 內置對象:在jsp頁面中不須要經過new關鍵字建立的對象,直接可使用的對象。

1.request:請求對象,包含客戶端的請求信息

  1. 須要在jsp中建立一個表單,用於demo
<form action="page4.jsp">
  		用戶名:<input type="text" name="username"/><br/>
  		<input type="checkbox" name="hob" value="籃球">籃球
  		<input type="checkbox" name="hob" value="足球">足球
  		<input type="checkbox" name="hob" value="羽毛球">羽毛球
  		<input type="checkbox" name="hob" value="游泳">游泳
  		<input type="submit" value="提交"/>
  </form>
  1. request對象經常使用的方法
  • 獲取當前資源的根路徑
request.getContextPath()
  • 獲取客戶端的請求地址
request.getRemoteAddr()
  • 獲取客戶端請求資源路徑
request.getRequestURI()
  • 得到表單提交過來的數據
request.getParameter("參數名")
  • 獲取表單提交過來的數據集合
String[] s = request.getParameterValues("參數名");
  • 解決request得到表單提交數據出現中文亂碼的問題 咱們須要打開tomcat中的conf目錄,編輯server.xml,在Connector標籤中加上URIEncoding="UTF-8"便可。

###2.response:封裝jsp的響應java

  • response的經常使用方法
<!-- response對象 -->
   <%
   		//用於向頁面輸出信息
        PrintWriter pw = response.getWriter();
   		pw.println("hello,response");
   
   		if(s.length>2)
   			//頁面重定向
   			response.sendRedirect("sucess.jsp");
   %>

3.session:用於長期存儲用戶信息保持會話的對象

  1. 向session中添加信息
<!-- session對象 -->
   <%
   		//向session中添加信息
   		session.setAttribute("uname",name);
   %>
  1. 在另外一個jsp頁面中獲取session值
請求成功,歡迎你:<%String name = session.getAttribute("uname").toString();
    out.println(name);
  %>  
  <a href="page5.jsp">page5.jsp</a>

4.application:用於用戶之間共享的數據對象,它開始於服務器的啓動,直到服務器的關閉

  1. 向application中添加信息
//向application中添加信息
application.setAttribute("參數名",值);
  1. 在另外一個jsp頁面中獲取值
application.getAttribute("參數名");

除此以外,咱們能夠繼續在其餘的頁面獲取到這個值,即便咱們關閉當前瀏覽器,而後用另一個瀏覽器打開,還能獲取到application的值。對比request,session能夠看到,當咱們關閉當前瀏覽器,打開一個新的鏈接的時候,利用session和request獲取到的值都已經丟失,而application的值還存在,因此說只要服務器不斷開鏈接這個值就一直存在。web

  1. application的其餘方法
//得到服務器引擎信息
String info = application.getServerInfo();

5.out:從response中獲取的的字符打印流(PrintWriter)對象,用於向頁面輸出信息

  • out實例:實現9*9乘法表
<%
  	  //完成一個九九乘法表,頁面輸出,java實現
  	  String[] colors = {"red","green","blue"};
  	  for(int i=1;i<10;i++){
  		  for(int j=1;j<=i;j++){
  		      out.print("<font color="+colors[j%3]+">"+j+"*"+i+"="+(i*j)+" "+"</font>");  
  		  }
  		  out.println("<br>");
  	  }
  	%>

6.pageContext:提供對jsp頁面全部對象的信息的訪問

7.page:相似於咱們java中對象的this的引用

8.exception:異常對象,當頁面中發生異常包裝了全部異常信息的對象

9.config:獲取當前web.xml配置信息的對象

#jsp內置對象的四大做用域瀏覽器

  1. pageContext:當前頁,存儲在pageContext中的數據默認只能在當前頁面訪問和使用;
  2. requeset:只能在一次請求中保存(若是須要持續保存,則須要請求轉發,將request繼續傳遞);
  3. session:可以在整次會話中都能保存,只要在session的有效時間以內,而且瀏覽器未關閉的狀況下;
  4. application:可以在應用程序級別保存數據,即便客戶端瀏覽器被關閉,都能長期有效,而且全部用戶之間都可以共享數據。除非服務器中止。

請求轉發和重定向tomcat

  1. 請求轉發:發生在服務器端的跳轉,客戶端只發送一次請求,其餘請求過程,由服務器完成,在客戶端地址欄中顯示的客戶端發送的請求路徑,而且請求轉發能夠將請求(request)對象繼續傳遞。
request.serAttribute("參數名","值");
request.getRequestDispatcher("請求地址").forward(request,response);
  1. 發生在客戶端的請求,客戶端發送屢次請求,尋找對應的資源,在客戶端地址欄顯示的是客戶最後一次請求的地址,重定向沒法將請求(request)繼續傳遞。
resposne.sendRedirect("請求的地址")

特要說明的是:若是咱們將參數放在request內置對象中進行傳遞,那麼咱們只能採用請求轉發的方式,由於請求轉發只發生一次請求,而重定向會發送屢次請求,而request對象的值,只能在一次請求中進行傳遞,因此,只能是請求轉發的方式。並且,請求轉發以後網頁欄中顯示的是發送請求的頁面的地址,重定向顯示的是最後一次請求的地址,並且request對象丟失。服務器

相關文章
相關標籤/搜索