<jsp:javabean>動作標簽實例

来源:https://www.cnblogs.com/janeqin/archive/2019/01/05/10225575.html
-Advertisement-
Play Games

\動作標簽實例 之後補齊基礎知識 1. scope屬性 該屬性指定了所創建Bean實例的存取範圍,省略該屬性時的值為page.\標識被執行時,首先會在scope屬性指定的範圍來查找指定的Bean實例,如果該實例已經存在,則引用這個Bean,否則重新創建,並將其存儲在scope屬性指定的範圍內。 sc ...


<jsp:javabean>動作標簽實例

之後補齊基礎知識

  1. scope屬性
    該屬性指定了所創建Bean實例的存取範圍,省略該屬性時的值為page.<jsp:useBean>標識被執行時,首先會在scope屬性指定的範圍來查找指定的Bean實例,如果該實例已經存在,則引用這個Bean,否則重新創建,並將其存儲在scope屬性指定的範圍內。
    scope屬性可選值如下
    • page:(當前頁面範圍)
      制定了所創建的Bean實例只能夠在當前的JSP文件中使用,包括在通過include指令靜態包含(實際上是一個頁面)的頁面中有效
    • request: (請求範圍[^1] )
      指定了所創建的Bean實例可以在請求範圍內進行存取。在請求被轉發至的目標頁面中可通過request對象的getAttribute("id屬性值") 方法獲取創建的Bean實例。一個請求的生命周期是 從客戶端向伺服器發出一個請求到伺服器響應這個請求給用戶後 結束,所以請求結束後,存儲在其中的Bean的實例也就是失效了。
    • session:(一個用戶,多個頁面)
      指定了所創建的Bean實例的有效範圍為session.
      session是當用戶訪問Web應用時,伺服器為用戶創建的一個對象,伺服器通過session的ID值 來區分其他的用戶。針對某一個用戶而言, 在該範圍中的對象可被多個頁面共用。(購物車應用)
      可以使用session對象的getAttribute("id屬性值")方法獲取存儲在session中的Bean實例,也可以使用session對象的getValue("id屬性值")來獲取,但該方法不建議使用。
    • application:(多個用戶,多個頁面)
      該值指定了所創建的Bean實例的有效範圍從伺服器啟動開始到伺服器關閉結束。 application對象是在伺服器啟動時創建的,它被多個用戶共用。所以訪問該application對象的所有用戶共用存儲於該對象中的Bean實例。 (瀏覽人數)
      可以使用application對象的getAttribute(“id屬性值”)方法獲取在application中的Bean實例

先放上本次實例
本次實例主要解決了 :
如果在session範圍和request範圍都存在名為car的ShopCar實例,而存儲在session範圍內的ShopCar實例是通過<jsp:useBean>標識創建的。那麼代碼中的<jsp:setProperty>標識會為哪個範圍中的ShopCar實例賦值呢?

實例工程架構如下
在這裡插入圖片描述
存在一個javaBean,關鍵代碼如下:

package com.bean;

public class ShopCar {
    
    private String name;
    private String maker;
    public ShopCar() {
        name = "noname";
        maker="noplace";
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getMaker() {
        return maker;
    }
    public void setMaker(String maker) {
        this.maker = maker;
    }
    
}

JavaBean:簡單說,它就是一個Java類,這個類可以重覆地使用。

它必須遵循以下規定:

  • 是一個公有類。
  • 具有一個公有的不帶參數構造方法。
  • 每個屬性必須定義一組getXXX()和setXXX()方法, 以便讀取和存儲其屬性值。
  • 符合上述規定的JavaBean,將擁有:事件處理、自省機制、永續儲存等特性。
    參照博主

新建javabean1.jsp 文件:

 <!-- 導入ShopCar類 -->
<%@page import="com.bean.ShopCar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h2>第一種方法實例化javaBean</h2>
    <%
        ShopCar car = new ShopCar(); //創建一個javaBean ShopCar的實例
        session.setAttribute("car",car); //將創建的JavaBean實例存在session範圍內
        
    %>
    
    <h2>第二種方法實例化javaBean</h2>
    <%-- 這裡的id就是javaBean實例的名字 相當於ShopCar car = new ShopCar() 
    兩種方法作用一致 --%>
    <%--<jsp:useBean id="car" class="com.bean.ShopCar" scope="session"/> --%>
    <jsp:setProperty name="car" property="*"/>
    
    
    
    <%
        ShopCar r_car = new ShopCar();
        request.setAttribute("car", r_car);  //作用域範圍是request
    %>
    <jsp:setProperty name="car" property="name" value="Panax"/>
    <jsp:setProperty name="car" property="maker" value="JiLin"/>
    
    Request範圍內:<br>
    車名: <%=r_car.getName() %>
    地址:<%=r_car.getMaker() %>
    <br>
    Session範圍內:<br>
    車名: <%=car.getName() %>
    地址: <%=car.getMaker() %>
    
</body>
</html>

  • id指的是實例化的對象,class就是Java類。這一行相當於
    ShopCar car = new ShopCar();

  • name是對象,property是屬性,value是屬性的值。

==實驗結果==:
在這裡插入圖片描述

從結果得知:
<jsp:setProperty>標識被執行時,會按照page、request、session和application的順序來查找由name屬性指定的Bean實例,並且返回第一個被找到的實例;若任何範圍內不存在這個Bean實例,就會拋出異常
[^1]:客戶端和伺服器的一次通信就是一次請求(發送請求或得到相應)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python開發IDE:pycharm ,eclipse 快捷鍵:Ctrl+?整體註釋 一·運算符 +(加) -(減) *(乘) /(除) **(冪) %(餘) //(商) 判斷某個東西是否在某個東西裡邊 in not in 結果:布爾值 ==(等於) >(大於) <(小於) >=(大於等於) <= ...
  • Python的基本數據類型有數字(Number),字元串(string),列表(List)、集合(Set),元組(Tuple)和字典(Dictionary)。 數字:1.包括了整型、浮點型和布爾型,還加入了複數(int、float、bool、complex); 2.若是想知道它具體是什麼類型,可以調 ...
  • [原創]使用python對視頻/音頻文件進行詳細信息採集,併進行去重操作 轉載請註明出處 一.關於為什麼用pymediainfo以及pymediainfo的安裝 使用python對視頻/音頻文件進行詳細信息採集,併進行去重操作的核心是使用pymediainfo這個庫 之前本人一直在試著用moviep ...
  • 題意 "題目鏈接" Sol 設$f[i]$表示炸彈到達$i$這個點的概率,轉移的時候考慮從哪個點轉移而來 $f[i] = \sum_{\frac{f(j) (1 \frac{p}{q})}{deg(j)}}$ $f[1]$需要+1(炸彈一開始在1) cpp // luogu judger enabl ...
  • 字典dict字典是由大括弧{鍵:值}組成.字典是無序的.字典的鍵是不可變的,不能使用列表作為鍵.但可以使用元祖作為字典的鍵.例如: 新增 setdefault(鍵,值):如果只寫鍵不寫值將列印該鍵所對應的值,如果沒有找到鍵返回Note fromkeys(字典鍵列表,值):如果值是列表,是可變的那麼如 ...
  • 引言 - 背景 2016 年寫過一篇關於 linux 共用記憶體 shm api 掃盲文. C擴展 從共用記憶體shm到memcache外部記憶體 比較簡單. 沒有深入分析(能力有限, 也深入分析不了). 3年(2019)過去了. 本質而言共用記憶體這種編程活化石般 雙刃劍, 像 "redis" 這種分散式 ...
  • 在寫高併發交易代碼時要謹慎使用strncpy和sprintf 原因及建議實踐 ...
  • 1. 下載 下載地址,選擇穩定的版本,比如3.4.13,beta為在測版本 2. 複製到任意的目錄,解壓 3. 修改配置文件 配置文件位於conf目錄下,原配置文件為zoo_sample.cfg,更改為zoo.cfg才能被識別。 在配置文件末尾加上 : server.1=bogon:2888:388 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...