servlet中的三大作用域以及 jsp el jstl

servlet中的三大作用域
request

​ 創建:

​ 請求來的時候

​ 銷燬:

​ 響應信息生成的時候

​ 作用域範圍:

​ 當前請求

session

​ 創建:

​ 請求不攜帶jsessionId就會創建session對象

​ 請求攜帶jsessionId,但未找到對應的session空間

​ 銷燬:

​ 服務器非正常關閉

​ session超時

​ 手動銷燬(session.invalidate)

​ 作用域範圍:

​ 當前請求

servletContext

​ 創建:

​ 服務器啓動時

​ 銷燬:

​ 服務器關閉時,或項目從服務器上移除時

​ 作用範圍:

​ 當前項目

jsp執行流程:
第一次訪問jsp頁面時,服務器接收請求,由jspservlet來處理此請求,
1,jspSevlet回去查找對應的jsp文件
2,找到之後,服務器會將jsp文件轉換成java文件
3,服務器編譯java文件生成class文件.
4,服務器運行class文件,生成動態的內容,並返回給瀏覽器.
<% 編寫java代碼   %>  //中的代碼將會複製到_jspService方法中
<%! 聲明全局變量也可定義方法  %>
<%=  輸出  %>
jsp特有內容(三大指令,四大作用域,九大內置對象)
三大指令:page,taglib,include
四大作用域:

​ pageContext(pageContext)

​ request(HttpServletRequest)

​ session(httpSession)

​ application(servletContext)

九大內置對象

​ request

​ response

​ session

​ page

​ pageContext

​ out

​ exception

​ application

​ config

EL表達式(jsp2.0後內置)
作用就是代替<%= %> 也就是代替輸出
格式:${表達式}
常用功能:

​ 獲取作用域中的數據

<%  pageContext.setAttribute("pkey","pvalue");
    request.setAttribute("rkey","rvalue");
	request.setAttribute("aa.bb","ralue");
%>
  原始方法獲取:
	<%=pageContext.getAttribute("pkey")%>
	<%=request.getAttribute("rkey")%>
	<%=request.getAttribute("aa.bb")%>
  EL獲取:
	${pageScope.pkey};
	${requestScope.rkey}
	${requestScope["aa.bb"]}
注意:如果域中沒有,原始的方法取出來的是null而EL取出來的是空字符

​ 便攜方式獲取

<%  pageContext.setAttribute("key","pvalue");
    request.setAttribute("key","rvalue");
	session.setAttribute("keyralue");
	appllication.setAttribute("key","ralue");
	appllication.setAttribute("aa.bb","ralue");
%>
  ${applicationScope["aa.bb"]}//如果參數名稱中有特殊字符那麼便捷查找方式不好用,只能用域對象取值
  ${key}獲取出來的是pvalue
  因爲會從四個域中查找數據信息(從小到大)找到即返回
  pageContext<request<session<application

​ 獲取複雜的數據

數組:${屬性名稱[index]}
list:${屬性名稱[index]}
map:${屬性名稱.key}
實體對象:${屬性名稱.key}//本質上調用的是實體類的get方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章