JavaBean、EL表示式${ }、作用域-自動轉換、常用方法
JavaBean
1.JavaBean本身就是一個類,屬於Java的面向物件程式設計。
2.在JSP中如果要應用JSP提供的Javabean的標籤來操作簡單類的話,則此類必須滿足如下的開發要求:
(1)所有的類必須放在一個包中,在WEB中沒有包的是不存在的;
(2)所有的類必須宣告為public class,這樣才能夠被外部所訪問;
(3)類中所有的屬性都必須封裝,即:使用private宣告;
(4)封裝的屬性如果需要被外部所操作,則必須編寫對應的setter、getter方法;
(5)一個JavaBean中至少存在一個無參構造方法,此為JSP中的標籤所使用。
如下就是一個JavaBean
package com.safly;
public class Customer {
private Integer id;
private String name;
private int age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Customer(){
System.out.println("customer");
}
}
jsp:useBean
<jsp:useBean id="customer" class="com.safly.Customer" scope="session"></jsp:useBean>
屬性用法:
id 命名引用該Bean的變數。如果能夠找到id和scope相同的Bean例項,jsp:useBean動作將使用已有的Bean例項而不是建立新的例項。
class 指定Bean的完整包名。
scope 指定Bean在哪種上下文內可用,可以取下面的四個值之一:page,request,session和application。
預設值是page,表示該Bean只在當前頁面內可用(儲存在當前頁面的PageContext內)。
request表示該Bean在當前的客戶請求內有效(儲存在ServletRequest物件內)。
session表示該Bean對當前HttpSession內的所有頁面都有效。
最後,如果取值application,則表示該Bean對所有具有相同ServletContext的頁面都有效。
我們看一段程式碼:
<body>
<jsp:useBean id="customer" class="com.safly.Customer" scope="session"></jsp:useBean>
<jsp:setProperty property="age" value="10" name="customer" />
age:<jsp:getProperty property="age" name="customer" />
<%
Customer customer1 = (Customer) session.getAttribute("customer");
if (customer1 == null) {
customer1 = (Customer) Class.forName("beans.Customer")
.newInstance();
session.setAttribute("customer", customer1);
}
%>
<%
customer1.setAge(10);
%>
<%=customer1.getAge()%>
</body>
EL表示式
el1.jsp
<body>
<form action="el.jsp" method="post">
username:<input type="text" name="username" value="${param.username }"/>
<input type="submit" value="Submit"/>
</form>
username:<%= request.getParameter("username") %>
<!-- el表示式 -->
<jsp:useBean id="customer" class="com.safly.Customer" scope="session"></jsp:useBean>
<jsp:setProperty property="age" value="12" name="customer"/>
<a href="el2.jsp">to el2.jsp</a>
</body>
el2.jsp
<body>
age:${sessionScope.customer.age }
age:${sessionScope.customer["age"] }
<%
Customer customer = (Customer)session.getAttribute("customer");
out.print(customer.getAge());
%>
</body>
樓上el的隱藏物件的範圍是sessionScope,另外還有pageScope、requestScope、applicationScope
他們基本上和pageContext、request、session、application一樣
El的作用域–及其自動轉換功能
el1.jsp
<body>
<jsp:useBean id="customer" class="com.safly.Customer" scope="session"></jsp:useBean>
<jsp:setProperty property="age" value="10" name="customer"/>
age:<jsp:getProperty property="age" name="customer"/>
<a href="el2.jsp?score=89">To El2.jsp</a>
</body>
el2.jsp
<body>
<!-- getParameter -->
score:${param.score}
score:<%= request.getParameter("score")%>
score:${param.score + 11 }
score:<%= request.getParameter("score")+11 %>
<%
Customer cust = new Customer();
cust.setAge(25);
request.setAttribute("customer",cust);
%>
age:${customer.age }
age:${sessionScope.customer["age"] }
<br>
</body>
大概說一下:
在el1.jsp中,將customer放到了session中
<jsp:useBean id="customer" class="com.safly.Customer" scope="session"></jsp:useBean>
在el2.jsp中從session中取出來customer物件的age屬性
age:${sessionScope.customer["age"] }
在el2.jsp中
<%
Customer cust = new Customer();
cust.setAge(25);
request.setAttribute("customer",cust);
%>
age:${customer.age }
是在customer
先從pageContext、request、session、application依次從小往大找
這裡就是從request中獲取的
El表示式的其他方法
el1.jsp
<body>
<jsp:useBean id="customer" class="com.safly.Customer" scope="session"></jsp:useBean>
<jsp:setProperty property="age" value="10" name="customer"/>
age:<jsp:getProperty property="age" name="customer"/>
<a href="el2.jsp?score=89&name=A&name=B">To El2.jsp</a>
</body>
el2.jsp
<body>
<%
ArrayList<String> names = new ArrayList<String>();
names.add("abc");
request.setAttribute("names",names);
%>
names is empty:${empty requestScope.names }
names is empty:${empty requestScope.names2 }
<!-- pageContext只能讀取屬性 -->
sessinAttributeName:${pageContext.session.attributeNames}<br>
sessionId:${pageContext.session.id }<br>
<%= request.getContextPath() %><br>
contextPath:${pageContext.request.contextPath }<br>
jsession:${cookie.JSESSIONID.name } -- ${cookie.JSESSIONID.value } <br>
score:${param.score}<br>
names:${paramValues.name[0]}<br>
<%= request.getParameterValues("name")[0].getClass().getName() %>
</body>
names is empty:false names is empty:true sessinAttributeName:[email protected]
sessionId:19A0C4DD75349287A283DBABA8EE7EF1
/day01
contextPath:/day01
jsession:JSESSIONID – 19A0C4DD75349287A283DBABA8EE7EF1
score:89
names:A
java.lang.String
相關推薦
JavaBean、EL表示式${ }、作用域-自動轉換、常用方法
JavaBean 1.JavaBean本身就是一個類,屬於Java的面向物件程式設計。 2.在JSP中如果要應用JSP提供的Javabean的標籤來操作簡單類的話,則此類必須滿足如下的開發要求: (1)所有的類必須放在一個包中,在WEB中沒有包的是不存在的
EL表示式的語法、EL取四大作用域中的值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transition
Python的變數作用域、名稱空間和作用域的區別、This inspection detects shadowing names defined in outer scopes警告解決
Python的變數作用域: L(local)區域性作用域: 區域性變數:包含在def關鍵字定義的函式中,即在函式中定義的變數。每當函式被呼叫時都會建立一個新的區域性作用域。在函式內部的變數宣告,除非特別的使用global關鍵字宣告為其全域性變數,否則均預設為區域性變數。
JSP、JavaBean以及EL表示式
1 JSP 1.1 JSP頁面註釋 HTML的註釋,不會消失,可以在瀏覽器中通過檢視原始碼看到 <!-- 註釋 --> JSP註釋:轉化階段就會消失,只能被開發人員看到 <%-- JSP註釋 --%> Java註釋:編譯階段會消
11、函數對象、函數的嵌套、名稱空間與作用域
() update 啟動 nbsp money 有效 產生 strip() return 一、函數對象 函數對象,函數是第一類對象,即函數可以當做數據傳遞 具體特點: 1、可以被引用; 1 def foo(): 2 print(‘from fo
函數對象、函數嵌套、名稱空間與作用域、裝飾器
choice strong .get make wrap strip 內置模塊 正是 rand 一 函數對象 一 函數是第一類對象,即函數可以當作數據傳遞 #1 可以被引用 #2 可以當作參數傳遞 #3 返回值可以是函數 #3 可以當作容器類型的元素
第六篇 函數對象、函數嵌套、名稱空間與作用域、裝飾器
max 數據 多分支 數據傳遞 nbsp urn int clas 什麽 一、函數對象 函數是第一類對象,即函數可以當作數據傳遞 #1 可以被引用 #2 可以當作參數傳遞 #3 返回值可以是函數 #4 可以當作容器類型的元素 利用
python之旅:函數對象、函數嵌套、名稱空間與作用域、裝飾器
分支 名稱空間 數據 返回值 特性 bsp 對象 body clas 一、函數對象 函數是第一類對象,即函數可以當作數據傳遞 #1 可以被引用 #2 可以當作參數傳遞 #3 返回值可以是函數 #3 可以當作容器類型的元素 # 利用該特性,優雅的取代多
函數對象、函數嵌套、名稱空間與作用域
pan oca 函數 三種 locals ice 無法 利用 多分支 一、 函數是第一類對象,即函數可以當作數據傳遞 #1 可以被引用 #2 可以當作參數傳遞 #3 返回值可以是函數 #3 可以當作容器類型的元素 二、 利用該特性,優雅的取代多分支的if def
py11_函數對象、嵌套、名稱空間與作用域
aps spl 不可 數據 true DC 退出 除了 函數定義 一、函數對象 函數是一類對象的含義是函數可以被當作各種數據來進行處理 1.引用 2.當作參數傳給另一個函數 3.當作函數的返回值 4.當作容器類型的元素(如:list) 1 def pay(): 2
JavaWeb - JSTL、EL 表示式
一、EL表示式 簡介 - EL表示式介紹及作用:Expression Language(表示式語言),目的是替代JSP頁面中的複雜程式碼。 - EL表示式語法:“${變數名}”。 EL表示式的語法有兩個要素:$ 和 {}。 例如: 點號記法:${Be
JS中的塊級作用域,var、let、const三者的區別
brush 語句 nbsp light 可見 undefine 函數 true 正常 1. 塊作用域{ } <script type="text/javascript"> { var a = 1; console.log
函式物件、函式巢狀、名稱空間與作用域、閉包函式、裝飾器
一.函式物件 函式時第一類物件,函式可以當作資料傳遞 1.函式可以被引用 2.函式可以作為引數傳入 3.函式可以作為函式的返回值 4.函式可以作為容器型別的元素 二.函式巢狀 1.函式巢狀呼叫:在函式內又呼叫了其他函式 2.函式巢狀定義:在函式內又定義了其他函式(只能在其函式內部呼叫,在其函式
九、EL表示式
EL表示式 一、 EL 全名為Expression Language。EL主要作用: 1、獲取資料 EL表示式主要用於替換JSP頁面中的指令碼表示式,以從各種型別的web域 中檢索java物件、獲取資料。(某個web域 中的物件,訪問javabea
JS中最經典的全域性變數和區域性變數問題(1、作用域和作用域鏈 2、變數宣告提前)
var a = 10; function test(){ a = 100; console.log(a); console.log(this.a); var a; console.log(a); } test(); 1、程式的執行結果為:100
【作用域】apply、call、bind的區別
一、apply、call、bind三者的區別 方法: Function.prototype.apply(thisArg, argArray) Function.prototype.call(thisA
python入門與進階篇(四)之包、模組、函式與變數作用域
python專案的組織結構 包(資料夾)-->模組(檔案)-->類-->函式和變數 seven.c4、six.c4:(seven)包名.模組名(c4) 構成名稱空間 seven包的結構: seven --t(子包) --
Java物件和例項的關係、Java資料封裝、Java繼承和多型、Java抽象類和介面、Java靜態欄位和方法、Java包和作用域、Java的classpath和jar、Java核心類
Java物件和例項的關係: 面向物件程式設計(Object-Oriented Programming),是對現實世界建立計算機模型的一種方法。 class是物件的模板,它定義瞭如何建立例項,class的名字就是資料型別。一個class裡可以有多個欄位(field),欄位用
C++區域性變數、全域性變數的作用域及範圍&動態記憶體管理
本文主要介紹C++中的區域性變數、全域性變數、以及動態記憶體管理的變數。本文不涉及靜態變數static,所以描述的觀點不包括static變數。 區域性變數和全域性變數 區域性變數一般指函式內部的區域性變數,這部分的變數儲存在棧裡面,當函式呼叫結束,這些區域性變數就會
關於變數作用域(內部、外部)及儲存型別(auto、static、register)的總結
可見性就是在在什麼地方可以呼叫,能呼叫的地方就是可見,而存在性,就是在什麼地方什麼時候初始化,然後使用完後在什麼地方什麼時候釋放,存在性一般是在執行時的生命週期內起作用的,這個題目裡除了static其他都是在函式結束時自動釋放了。 一、變數的&n