1. 程式人生 > >JavaBean、EL表示式${ }、作用域-自動轉換、常用方法

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

相關推薦

JavaBeanEL表示式${ }作用-自動轉換常用方法

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關鍵字宣告為其全域性變數,否則均預設為區域性變數。

JSPJavaBean以及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 - JSTLEL 表示式

一、EL表示式 簡介   - EL表示式介紹及作用:Expression Language(表示式語言),目的是替代JSP頁面中的複雜程式碼。   - EL表示式語法:“${變數名}”。 EL表示式的語法有兩個要素:$ 和 {}。 例如: 點號記法:${Be

JS中的塊級作用,varletconst三者的區別

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

作用】applycallbind的區別

一、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和jarJava核心類

Java物件和例項的關係: 面向物件程式設計(Object-Oriented Programming),是對現實世界建立計算機模型的一種方法。 class是物件的模板,它定義瞭如何建立例項,class的名字就是資料型別。一個class裡可以有多個欄位(field),欄位用

C++區域性變數全域性變數的作用及範圍&動態記憶體管理

本文主要介紹C++中的區域性變數、全域性變數、以及動態記憶體管理的變數。本文不涉及靜態變數static,所以描述的觀點不包括static變數。 區域性變數和全域性變數 區域性變數一般指函式內部的區域性變數,這部分的變數儲存在棧裡面,當函式呼叫結束,這些區域性變數就會

關於變數作用(內部外部)及儲存型別(autostaticregister)的總結

可見性就是在在什麼地方可以呼叫,能呼叫的地方就是可見,而存在性,就是在什麼地方什麼時候初始化,然後使用完後在什麼地方什麼時候釋放,存在性一般是在執行時的生命週期內起作用的,這個題目裡除了static其他都是在函式結束時自動釋放了。      一、變數的&n