在web應用程式中嵌入Applet
小程式是一個小型的以任務為中心的小型應用程式,可在更大的應用程式或程式中執行 在網路上,小程式通常用Java編寫,並插入到網頁中以提供一些特定的功能。
本教程指導您開發Java Applet,並將該applet嵌入Web應用程式,使其在網站上可見。我將使用以下技術:
- NetBeansIDE 7.3
- Java 1.7
- JSP(Java Server Pages)
- Apache Tomcat伺服器
介紹
在開始本教程之前,我想介紹一下有關技術的內容:
- NetBeansIDE:由Oracle Corporation在Java開發的整合開發環境。它可以在支援相容的Java虛擬機器(JVM)的Windows,Linux,Solaris和其他平臺上執行。
- Java:它是由James Gosling在1995年開發的一種程式語言,它從C和C ++得出其語法。
- Applet:它基本上是一個寫在Web頁面上的程式。可以建立按鈕,標籤,複選框,文字框等控制元件,也可以捕獲滑鼠輸入。
- Web應用程式:Web應用程式使用的客戶端是Web瀏覽器。它主要使用伺服器端指令碼(JSP,ASP)和客戶端指令碼(HTML,JavaScript)的組合,
- JSP(Java Server Pages): JSP用於開發動態生成的網頁。Applet將嵌入JSP頁面。
- Apache Tomcat伺服器:它是一個實現JSP和Java Servlet規範的開源Web伺服器。
在Java應用程式中開發和執行Applet
按照這些簡單的步驟在Java應用程式中使用NetBeansIDE建立一個Applet:
從File - > NewProject - > ChooseProject - > Java Application開啟NetBeansIDE專案,如下所示:
圖1:新的Java應用程式
現在,新增專案名稱,專案位置:
專案名稱: AmitJavaApplication
專案位置: C:\ Users \ amit \ Documents \ NetBeansProjects
主類:amitjavaapplication.AmitJavaApplication
圖2:專案名稱為AmitJavaApplication
當您點選“完成”時,會生成以下程式碼:
軟體包: amitjavaapplication
主類: amitjavaapplication.AmitJavaApplication
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package amitjavaapplication;
/**
*
* @author amit
*/
public class AmitJavaApplication {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
目錄結構可以在左側面板的“ 專案 ”和“ 檔案 ” 下看到:
圖3:AmitJavaApplication.java程式碼
要建立Applet,請按照以下步驟操作:
右鍵點選AmitJavaApplication-> New-> Other
圖4:建立新Applet的步驟
選擇Swing GUI窗體 - > JAppletForm,單擊Next如下所示:
圖5:從Swing GUI窗體中選擇“JApplet Form”
完成上述步驟後,輸入以下內容:
類名: AmitApplet
包: tutorial.me
該檔案在“tutorial.me”包下建立,位於以下位置:
檔案位置: C:\ Users \ amit \ Documents \ NetBeansProjects \ AmitJavaApplication \ src \ tutorial \ me
點選完成後點擊:
圖6:設定類名和包
現在可以看到“ AmitApplet.java ” 的設計畫面。它配有一個選項“ Palette ”來新增任何Swing容器/控制元件到Applet:
圖7:Applet類的設計部分
以下使用以下Swing容器和控制元件顯示Applet的設計:
擺動容器/控制 | 數 | 變數名 |
JPanel(集裝箱) | 1 | JPANEL1 |
JLabel(控制) | 1 | jLabel1的 |
JTextField(控制元件) | 3 |
textNum1 textNum2 textResult |
JButton(控制) | 1 | btnMultiply |
圖8:Applet設計為乘以2個數字
“ 設計 ”完成後,“ 原始碼編輯器 ” 可以看到以下程式碼,Applet應用程式的截圖和程式碼如下所示:
圖9:程式碼截圖
這裡提供了完整的程式碼:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tutorial.me;
/**
*
* @author amit
*/
public class AmitApplet extends javax.swing.JApplet {
/**
* Initializes the applet AmitApplet
*/
@Override
public void init() {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(AmitApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(AmitApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(AmitApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(AmitApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the applet */
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* This method is called from within the init() method to initialize the
* form. WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
textNum1 = new javax.swing.JTextField();
textNum2 = new javax.swing.JTextField();
btnMultiply = new javax.swing.JButton();
textResult = new javax.swing.JTextField();
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel1.setText("Multiply 2 numbers");
textNum1.setText("0");
textNum2.setText("0");
btnMultiply.setText("Multiply");
btnMultiply.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnMultiplyActionPerformed(evt);
}
});
textResult.setText("Result");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(0, 36, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(textNum2, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(textNum1, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(btnMultiply)
.addGap(18, 18, 18)
.addComponent(textResult, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(19, 19, 19))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(28, 28, 28)
.addComponent(textNum1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(textNum2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 34, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnMultiply)
.addComponent(textResult, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(23, 23, 23))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(100, 100, 100)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(155, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(41, 41, 41)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(95, Short.MAX_VALUE))
);
}// </editor-fold>
private void btnMultiplyActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int n1 = Integer.parseInt(textNum1.getText());
int n2 = Integer.parseInt(textNum2.getText());
int mul = n1 * n2;
textResult.setText(Integer.toString(mul));
}
// Variables declaration - do not modify
private javax.swing.JButton btnMultiply;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField textNum1;
private javax.swing.JTextField textNum2;
private javax.swing.JTextField textResult;
// End of variables declaration
}
現在,通過右鍵單擊AmitApplet.java->執行檔案執行Applet,如下所示:
圖10:執行Applet“AmitApplet.java”
完成上述給定步驟後,可以看到Applet,現在輸入以下值乘以ie
9 * 7 = 63
圖11:Applet Viewer
在NetBeansIDE中執行Applet應遵循上述步驟。
開發和執行Web應用程式:
按照以下簡單步驟,使用NetBeansIDE建立Web應用程式:
轉到File-> New Project,如下所示:
圖12:建立新的WebApplication專案
從New Project開始之後,從Categories中選擇Java Web。現在選擇Web應用程式並單擊下一步:
圖13:從類別“Java Web”中選擇Web應用程式
完成上述步驟後,新增ProjectName,專案位置:
專案名稱: AmitWebApplication
專案位置: C:\ Users \ amit \ Documents \ NetBeansProjects
現在,點選下一步:
圖14:專案名稱為“AmitWebApplication”
從“伺服器和設定”和Apache Tomcat中選擇伺服器以執行AmitWebApplication。
圖15:選擇伺服器作為Apache Tomcat
單擊下一步啟動WebApplication專案。它將使用以下程式碼生成“ index.jsp ”檔案:
<%--
Document : index
Created on : Nov 6, 2013, 10:46:24 AM
Author : amit
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
圖16:index.jsp
現在通過右鍵單擊AmitWebApplication - >清理和構建執行Web應用程式,如下所示:
圖17:構建AmitWebApplication專案
現在如上圖所示,通過使用功能鍵“F6”執行專案,或者使用如下圖所示的螢幕截圖:
圖18:執行專案
該專案將在本地主機上成功執行,即在Google Chrome中的下述地址(您可以考慮使用任何其他瀏覽器):
localhost:8080/AmitWebApplication/index.jsp
以下螢幕截圖顯示了我們的Web應用程式的成功執行:
圖19:index.jsp在本地主機上執行
在NetBeansIDE中執行WebApplication應遵循上述步驟。
將Applet嵌入/整合到Web應用程式中
按照以下簡單步驟,使用NetBeansIDE將Applet整合到WebApplication中:
RightClick AmitWebApplication->屬性
圖20:專案屬性
在“專案屬性 ”對話方塊將開啟。
從“ 類別 ”中選擇包裝,然後單擊“ 新增專案 ”。
圖21:按類別轉到包裝,然後點選“新增專案”
將顯示在NetBeansIDE中開發的專案列表。只需選擇一個你要新增的,這裡我們將新增“ AmitJavaApplication ”專案。
在新增“ AmitJavaApplication ”時,它將自動新增所選的Project jar檔案,即“AmitJavaApplication.jar”,如下面的螢幕截圖所示。之後點選“ 新增專案JAR檔案”按鈕:
注意:僅當專案“AmitJavaApplication”構建時,“AmitJavaApplication”jar檔案才可見。
圖22:導航到AmitJavaApplication專案
新增jar檔案後,單擊確定,只需等待幾秒鐘,直到jar檔案被新增到專案中。該過程如下所示。然後按“ 確定 ”:
圖23:將jar檔案新增到專案中
圖24:Applet在WebApplication中的整合
“jar”檔案被新增到專案中,可以在“ AmitWebApplication ”專案的目錄結構下看到。build / web資料夾顯示新增jar檔案:
圖25:在AmitWebApplication專案中顯示新增jar檔案的目錄結構
Applet在這裡嵌入了applet
標籤:
<applet code="tutorial.me.AmitApplet" archive="AmitJavaApplication.jar" width="400" height="350">
</applet>
這裡,
小程式屬性 | 描述 | 專案使用 |
碼 | 指定檔名 | tutorial.me.AmitApplet |
檔案 | 指定歸檔檔案的位置(此處為jar檔案) | AmitJavaApplication.jar |
高度 | 指定小程式高度 | 350 |
寬度 | 指定小程式寬度 | 400 |
圖26:在index.jsp中執行applet的程式碼
碼:
<%--
Document : index
Created on : Nov 6, 2013, 10:46:24 AM
Author : amit
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My first WebApplication using NetBeansIDE</title>
</head>
<body>
<h1>Hello World!</h1>
<br />
<p>WebApplication using NetBeansIDE...</p>
<!-- Embedding Applet -->
<applet code="tutorial.me.AmitApplet" archive="AmitJavaApplication.jar"
width="400" height="350">
</applet>
</body>
</html>
現在通過右鍵單擊 - > AmitWebApplication - >清理和構建執行Web應用程式專案,如下所示:
圖27:構建AmitWebApplication
專案“成功構建”,可以在“輸出”視窗中看到:
圖28:構建成功
現在如上圖所示的建築專案後,使用功能鍵F6執行專案,或如下所示:
圖29:執行專案
該專案將在本地主機上成功執行,即在Google Chrome中的下述地址(您可以考慮使用任何其他瀏覽器):
localhost:8080/AmitWebApplication/index.jsp
現在,下面顯示的安全警告將顯示為applet是無符號的:
“當它在2012年12月11日釋出Java 7 Update 10時,Oracle在其Java Web瀏覽器外掛中引入了新的安全功能。
“執行未簽名的應用程式將在以後的版本中被阻止,因為它可能是不安全的並且具有安全風險”。
為了理解這些安全問題,我們需要澄清與“Java安全模型”相關的概念,其中涵蓋“未簽名小程式”,“簽名小程式”和“自簽名小程式:
無符號小程式:這種小程式無法訪問所有系統屬性,本地檔案系統等。由於小程式未簽名,因此缺少安全性。根據“Java 7 Update 10”(如上所述),使用者在使用它之前被警告。
簽名小程式:在此,小程式由證書籤署,瀏覽器使用證書頒發機構伺服器進行驗證。在成功驗證簽名和使用者批准後,這種小程式獲得更多的權利。與自簽名(下文討論)和無符號小程式(上面討論)相比,它可以執行更多的任務。
自簽名小程式:這些小程式由開發人員簽名,也可以被視為安全問題。Java外掛仍然提供關於執行自簽名小程式的警告,因為只有開發人員保證這些applet的安全性。
有關與Applet安全模型相關的上述概念的更多資訊,請參閱以下連結。差異顯示在以下給出的連結中,有很好的解釋:http://www.mendoweb.be/blog/java-applets-unsigned-vs-self-signed-vs-signed/
要運行當前的專案“AmitWebApplication”,只需在選擇“ 我接受風險並想要執行此應用程式 ” 後單擊“ 執行 ”。 此步驟將成功執行您的Applet:
相關推薦
在web應用程式中嵌入Applet
小程式是一個小型的以任務為中心的小型應用程式,可在更大的應用程式或程式中執行 在網路上,小程式通常用Java編寫,並插入到網頁中以提供一些特定的功能。 本教程指導您開發Java Applet,並將該applet嵌入Web應用程式,使其在網站上可見。我將使用以下技術: N
Java嵌入式資料庫H2學習總結(二)——在Web應用程式中使用H2資料庫
一、搭建測試環境和專案 1.1、搭建JavaWeb測試專案 建立一個【H2DBTest】JavaWeb專案,找到H2資料庫的jar檔案,如下圖所示: H2資料庫就一個jar檔案,這個Jar檔案裡面包含了使用JDBC方式連線H2資料庫時使用的驅動類,將"h2-1.4.183.jar"加入到
使用Boost::Python在C++應用程式中嵌入Python:第二部分
在第1部分中,我們瞭解瞭如何在C++應用程式中嵌入Python,包括從應用程式呼叫Python程式碼的幾種方法。雖然我之前承諾在第2部分中完整實現一個配置解析器,但我認為看一下錯誤解析會更有建設性。一旦我們有一個很好的方法來處理Python程式碼中的錯誤,我將在第3部分中
使用Boost::Python在C++應用程式中嵌入Python:第一部分
在本系列教程的簡介中,我說了將Python程式碼整合到Granola程式碼庫中的動機。簡而言之,它可以使我使用Python語言和標準庫的好處來完成在C++中通常很痛苦或笨拙的任務。當然,底線是我不必移植任何已有的C++程式碼。 今天,我們看一下使用boost::pyth
應用程式中嵌入的網頁執行時出現“指令碼錯誤”解決方法
CComPtr<IWebBrowser2> pWB2; HRESULT hr; hr = m_wndIE.QueryControl(&pWB2); if (pWB2) { CComVariant v; CComBSTR url(
MFC應用程式中嵌入一個谷歌cef瀏覽器
#include "include/base/cef_lock.h" #include "include/cef_client.h" class ClientHandler : public CefClient, public CefDisplayHandler,
【webpack外掛使用】在開發中快速掌握並使用Webpack構建web應用程式
1.webpack-dev-server外掛的基本使用 入門程式 const path = require('path'); // 匯出一個Webpack的配置物件(通過node中的模組操作,向外暴露了一個配置物件) module.exports = { // 需要在這裡手動指定入口
C# MVC中按照業務建立多模組web應用程式(UI)
如果想要UI層根據業務進行模組劃分,UI層釋出的時候能達到UI層根據業務單獨打包成dll檔案, 可以在解決方案中將DataObj、DAL、BLL、UI均放在解決方案資料夾下: 1、DataObj根據業務按照模組建立對應的類庫,釋出的時候各個業務模組的DataObj.dll分開,以減低耦合
C#MVC中建立多模組web應用程式
當一個應用程式有越來越多的子模組後,應用程式將變得越來越大,複雜度也越來越高,應用程式也越來越難維護。如果把每個子模組,獨立分成不同的web應用程式,則這個專案將易於維護。關於這個的好處,我也描述得不好。總之,模組分開,不同程式設計師的不同模組,不互相影響,一個龐大的專案,如果分為多個Web應用程式
ASP.NET Core與Dapper和VS 2017使用JWT身份驗證WEB API並在Angular2客戶端應用程式中使用它
目錄 介紹 背景 步驟1 建立ASP.NET Core Web API專案 Fitness.JWT.API專案說明 使用程式碼 startup.cs JwtIssuerOptions.cs JwtController.cs identity.FindFir
IntelliJ IDEA web應用程式 index.jsp中引用jquery,測試總是無法成功,已解決
首先感謝以下帖子的內容 https://bbs.csdn.net/topics/392054905 使用的版本是IntelliJ IDEA 2018.3.1 以下方式寫入引用路徑 <script type="text/javascript" src="${pageContext
Python中的一個糟糕的Web應用程式
一、不安全的Web程式示例。 下面展示一個不安全的Web應用程式。 這個程式碼採用了Flask框架,但是不安全的原因不是因為使用了Flask。 上面的程式碼很危險,無法抵禦現在Web上諸多向量的重要攻擊。 先引入上述程式碼中出現的四個模板。 更
在web.xml中配置Servlet,Servlet被WEB應用程式載入過程
一,<servlet>元素及其子元素,宣告一個Servlet。 <description>*:為Servlet指定一個文字描述。 &
Web應用程式與Web網站及部署在IIS中
在Visual Studio可以建立 Web 應用程式專案或網站專案。通過選擇 新建專案 或 開啟專案 建立或開啟一個 Web 應用程式專案在Visual Studio 檔案
Spring實戰 | 第二部分 Web中的Spring(第五章 構建Spring Web應用程式)
第五章 構建Spring Web應用程式 對映請求到Spring控制器 透明地繫結表單引數 校驗表單提交 一
【譯】使用 WebView2 將最好的 Web 帶到 .NET 桌面應用程式中
在去年的 Build 大會上,我們引入了 WebView2,這是一個瀏覽器控制元件,可以用新的基於 Chrome 的 Microsoft Edge 來呈現 Web 內容(HTML / CSS / JavaScript)。它最初的範圍僅限於 C/C++ 應用程式。今天,我們很高興地宣佈 .NET 應用程式的
MVC模式在Java Web應用程序中的實例分析
rip run writer fault esp 身份驗證 int 網站 table 結合六個基本質量屬性 可用性: 異常 可修改性: 1.維持語義的一致性,高內聚低耦合 2.維持現有的接口,Login依賴LoginIService接口,LoginService依賴ILog
MVC模式在Java Web應用程序中的實例
simple handler hand resolv let handle 增加 獨立 efault 1.可用性 使用SimpleMappingExceptionResolver實現異常處理 只需要在Spring的配置文件applicationContext.xml中增加
IIS如何讓子web應用程序中繼承根目錄web.config
根目錄 lec DApp color nbsp 如何 應用程序 pan onf 1、一種方式,需要改動根目錄的web.config(不是很推薦) <?xml version="1.0"?> <configuration> <location
XWAF——Web應用程式框架
XWAF框架簡介 版本:V1.0.0.0 XWAF是一個基於java反射和Servlet 技術的Web應用程式框架。其英文全稱為“eXtensible Web Applica