javaweb九大個內置對象,四大域


   9個內置對象如下:

 

 

 

1.session對象:會話對象


  當客戶端第一次訪問服務器的頁面時,web服務器會自動為該客戶端創建一個session對象並分配一個唯一的id號
常常用它來在多個頁面間共享數據,如我們課可以把訪問權限放在會話中,以免 多次連接數據庫

  jsp中session的讀取方法:
Object obj=session.getAttribute("屬性名");
寫方法:
session.setAttribute("屬性名",obj);
其中屬性名相當於標簽,取出的是Object類需要進行前置轉化:

2.application對象


該對象的父類為:javax.servlet.ServletSontext類。

作用域、聲明周期:
在服務器打開時創建,服務器關閉時銷毀,對應用程序來講是唯一的,因此application也是session共享的

從application中取出的對象類型仍然是Object類型,也需要轉化

常用方法:
getAttribute(String name);返回右name指定的application對象的屬性值
getAttributeNames(); 所有application對的屬性名字,枚舉的實例
getInitParamter(String name);由name指定的屬性的初始值
getServletInfo(); Servlet編譯器的版本信息
getAttribute(String name,Object object);由name指定的屬性值object

在jsp中可以直接使用該實例對象,但是在Servlet中獲取該全局唯一對象的方式:
ServletContext application=this.getServletContext();
該對象相當於系統的緩存,用戶存放共享數據,例如系統分頁數、密碼最小長度、版本信息等

3.request對象

通過該對象獲取用戶提交的信息 request.getParameter();

該對象包含了當前用戶請求的上下文,包括表單信息,傳遞的參數信息等

還可以通過次對象獲取session對象
HttpSession session=request.getSession();


4.response對象:相應對象


  其父類為javax.servlet.ServletRequest,包含了當前web服務器響應的上下文。

  該對象常常被用來完成頁面的跳轉、頁面的自動刷新、頁面的自動跳轉、禁用緩存等功能

  頁面跳轉的方法:
response.sendRedirect("頁面的路徑");
  頁面自動刷新的方法:
response.setHeader("refresh",3);每隔3秒刷新一次
  頁面自動跳轉的方法:
response.setHeader("refresh","3;URL=commom.jsp?ref=aaa");
  指定3秒后自動跳轉到common.jsp頁面並傳遞了值為aaa的參數ref
  禁用緩存的方法:
response.setHeader("Cache=Control","no-cache");
response.serHeader("Pragma","no-cache");
response.setHeader("Expires",0);
禁用緩存后,當我們單擊后退時,客戶端會自動想服務器請求上一次頁面

 

5.out對象

   輸出流對象。

 6.pageContext

  可以通過他獲取其它對象

  EL中:

${pageContext.request.contextPath} :獲取根目錄

 

 

 

7.page【基本不用】

  在編譯的servlet中,Object page = this;

  page對象表示當前一個JSP頁面,可以理解為一個對象本身,即:把一個JSP當作一個對象來看待。page對象在開發中幾乎不用,了解一下即可

 

8.config【ServletConfig】

  獲取servlet配置信息 

 

9.exception對象

  只有page指令中,isErrorPage=true時,才能使用

 

 

jsp中的四大域

setAttribute(), getAttribute(), 用於存儲數據,作用域

  pageContext.getAttribute(key, scope)

搜索范圍:page>request>

1.page

自身

2.request

  作用域為request

  請求結束后,消失

 

3.session

 

4. context

  作用域為application

 

EL表達式

 

<%
//模擬真實情況
User user1=new User();
user1.setUsername("張三");
request.setAttribute("user", user1); //屬性值
%>

 

1. EL表達式的基本形式

  如果在jsp模板文件中使用EL表達式,那么表達式的值回直接輸出到網頁上。

例如:Java表達式:<%=request.getParameter("usernamae") %>
--> ${param.username} (form)

 


2. 使用場景

  既可以直接插入到jsp文件的模板文件中,也可以作為jsp標簽的屬性的值。
e.g. <input type="text" name="username" value="" />

 

3. 直接訪問對象的屬性


e.g. ${request.user.username} <==> ${request.user['username']}

 

4. EL運算符


算數運算符:
+ - * /(不是整除)%
關系運算符:
== < >..
邏輯運算符
! || &&
empty運算符
true :如果var為null,就返回TRUE
條件運算符
a?b:c

 

5. EL 語言中定義了11個隱含對象,他們都是java.util.Map類型,


  網頁制作者通過他們便捷地訪問web應用的特定數據。

隱含對象名 說明

  • application: web應用范圍內的屬性名和屬性值進行映射
  • cookie:  客戶請求中的Cookie名和Cookie對象進行映射
  • header:  請求頭部的項目名和項目值進行映射,例如:

${header.host} 等價於<%=request.getHeader("host") %>

  • headerValues 把Http請求頭部的項目名和所有匹配你的項目值得數組進行映射,例如:

[Ljava.lang.String;@2b08133b 等價於<% request.getHeaders("accept-language") %>
initParam 把web應用的初始化參數名和參數值進行映射

  • pageScope 把頁面范圍內的屬性名和屬性值進行映射
  • param 把客戶請求的參數名和參數值進行映射
  • paramValues 請求參數名對應參數數組
  • requestScope 請求返回內的屬性名和屬性值
  • sessionScope 回話的范圍內的屬性名和屬性值的映射

 

2.分類:


(1)請求范圍內的特定數據:header,headerValues,param,paramValues,cookie
${header["user-agent"]} (必須使用[]訪問,因為不符合變量命名規則) <==> <%=requesst.getHeader("user-agent") %>
${cookie.username.value} <==> 調用名為username的Cookie對象的getValue()方法
與前端cookie的關系
(2)特定范圍的屬性值:pageScope,requestScope,sessionScope和applicationScope
屬性

(3)pageContext,表示PageContext對象


${pageContext.request\.contentPath}
${pageContext.servletContext.serverInfo} <==> <%=application.getServerInfo %>
${pageContext.request.requestURL} <==> <%=request.getRequestURL() %>
${pageContext.response.characterEncoding} <==> <%= response.getCharacterEncoding() %>

 

(4)表示web應用的初始化參數集合,為initParam
<==> <%=appliction.getInitParameter("driver") %>分類:
(1)請求范圍內的特定數據:header,headerValues,param,paramValues,cookie
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 (必須使用[]訪問,因為不符合變量命名規則) <==> <%=requesst.getHeader("user-agent") %>
<==> 調用名為username的Cookie對象的getValue()方法

與前端cookie的關系
(2)特定范圍的屬性值:pageScope,requestScope,sessionScope和applicationScope
屬性

(3)pageContext,表示PageContext對象
${pageContext.request\.contentPath}
${pageContext.servletContext.serverInfo} <==> <%=application.getServerInfo %>
${pageContext.request.requestURL} <==> <%=request.getRequestURL() %>
${pageContext.response.characterEncoding} <==> <%= response.getCharacterEncoding() %>

(4)表示web應用的初始化參數集合,為initParam
<==> <%=appliction.getInitParameter("driver") %>

2.命名變量

EL表達式中的變量成為命名變量,他不是jsp文件的局部變量或實例變量,而是存放在特定范圍內的屬性,
命名變量的名字和屬性名對應。
${username} 找的是特定范圍的屬性(不是參數)
${user.username} 實際上找的不是User的username屬性,而是調用了User的getUsername方法,返回的結果

 

 

end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM