• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    動態調用動態語言,第 2 部分: 在運行時尋找、執行和修改腳本

    發布: 2008-6-30 14:55 | 作者: 不詳 | 來源: 測試時代編輯整理 | 查看: 74次 | 進入軟件測試論壇討論

    領測軟件測試網

    如果您當過 Web CGI 腳本程序員,那么一定知道必須注意傳遞給 ScriptEngine 的 eval() 方法的東西。腳本引擎會立即執行傳遞給 eval 方法的代碼。因此,絕不要把來自不可信來源的字符串或 Reader 對象傳遞給腳本引擎。

    例如,假設我們使用腳本編程 API 遠程監視一個 Web 應用程序。我們讓腳本引擎能夠訪問關鍵的 Java 對象,這些對象提供 Web 應用程序的狀態信息。還創建一個簡單的 Web 頁面,這個頁面接受任意腳本表達式,它將這些表達式傳遞給腳本引擎進行計算并在 Web 頁面上顯示輸出。這樣就可以對正在運行的 Java 對象進行查詢并執行對象上的方法,從而幫助判斷應用程序的狀態。

    但是,在這種情況下,能夠訪問這個 Web 頁面的任何人都可以執行任意腳本語句,可以訪問任意共享 Java 對象。編程時的失誤、錯誤的配置和安全漏洞會把機密信息泄露給未授權用戶,或者讓應用程序遭遇拒絕服務攻擊(例如,攻擊者可以執行與 System.exit 或 /bin/rm -fr / 等效的腳本語句)。與任何強大的工具一樣,Java 腳本編程 API 要求您保持謹慎,注意安全。

    進一步開拓的方向

    本文主要關注讓 Java 應用程序能夠在運行時動態地讀取并執行外部腳本,以及讓腳本能夠訪問顯式提供給它們的 Java 對象。Java 腳本編程 API 還提供了其他特性。例如:

    可以使用腳本語言實現一個 Java 接口,然后像使用任何其他 Java 接口引用一樣從 Java 代碼調用腳本代碼。
    可以在腳本中實例化并使用 Java 對象,還可以讓 Java 應用程序能夠訪問這些對象。
    可以在裝載動態腳本時進行預編譯,這可以讓以后的執行過程更快。
    可以設置腳本使用的輸入流和輸出流,這樣就很容易將文件用作腳本的控制臺輸入源,以及將腳本的控制臺輸出轉發到文件或其他流。
    可以設置位置參數,腳本可以將這些參數用作命令行參數。
     分享這篇文章……

     
      提交到 Digg 
     
      發布到 del.icio.us 
     
      提交到 Slashdot!  
       
     
    Java 腳本編程 API 定義了腳本引擎可以選擇實現的一些功能,所以并非所有腳本引擎都提供這些功能。在 參考資料 中可以找到關于這些特性和其他特性的讀物和在線參考資料。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>