小程序是一个小型的以任务为中心的小型应用程序,可在更大的应用程序或程序中运行 在网络上,小程序通常用Java编写,并插入到网页中以提供一些特定的功能。
本教程指导您开发Java Applet,并将该applet嵌入Web应用程序,使其在网站上可见。我将使用以下技术:
在开始本教程之前,我想介绍一下有关技术的内容:
按照这些简单的步骤在Java应用程序中使用NetBeansIDE创建一个Applet:
从File - > NewProject - > ChooseProject - > Java Application打开NetBeansIDE项目,如下所示:
现在,添加项目名称,项目位置:
项目名称: AmitJavaApplication
项目位置: C:\ Users \ amit \ Documents \ NetBeansProjects
主类:amitjavaapplication.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
}
}
目录结构可以在左侧面板的“ 项目 ”和“ 文件 ” 下看到:
要创建Applet,请按照以下步骤操作:
右键点击AmitJavaApplication-> New-> Other
选择Swing GUI窗体 - > JAppletForm,单击Next如下所示:
图5:从Swing GUI窗体中选择“JApplet Form”
完成上述步骤后,输入以下内容:
类名: AmitApplet
包: tutorial.me
该文件在“tutorial.me”包下创建,位于以下位置:
文件位置: C:\ Users \ amit \ Documents \ NetBeansProjects \ AmitJavaApplication \ src \ tutorial \ me
点击完成后点击:
现在可以看到“ AmitApplet.java ” 的设计画面。它配有一个选项“ Palette ”来添加任何Swing容器/控件到Applet:
以下使用以下Swing容器和控件显示Applet的设计:
摆动容器/控制 | 数 | 变量名 |
JPanel(集装箱) | 1 | JPANEL1 |
JLabel(控制) | 1 | jLabel1的 |
JTextField(控件) | 3 | textNum1 textNum2 textResult |
JButton(控制) | 1 | btnMultiply |
“ 设计 ”完成后,“ 源代码编辑器 ” 可以看到以下代码,Applet应用程序的截图和代码如下所示:
这里提供了完整的代码:
/*
* 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 */
//
/* 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);
}
//
/* 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")
//
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))
);
}//
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,如下所示:
完成上述给定步骤后,可以看到Applet,现在输入以下值乘以ie
9 * 7 = 63
在NetBeansIDE中运行Applet应遵循上述步骤。
按照以下简单步骤,使用NetBeansIDE创建Web应用程序:
转到File-> New Project,如下所示:
从New Project开始之后,从Categories中选择Java Web。现在选择Web应用程序并单击下一步:
完成上述步骤后,添加ProjectName,项目位置:
项目名称: AmitWebApplication
项目位置: C:\ Users \ amit \ Documents \ NetBeansProjects
现在,点击下一步:
从“服务器和设置”和Apache Tomcat中选择服务器以运行AmitWebApplication。
单击下一步启动WebApplication项目。它将使用以下代码生成“ index.jsp ”文件:
<%--
Document : index
Created on : Nov 6, 2013, 10:46:24 AM
Author : amit
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
Hello World!
图16:index.jsp
现在通过右键单击AmitWebApplication - >清理和构建运行Web应用程序,如下所示:
现在如上图所示,通过使用功能键“F6”运行项目,或者使用如下图所示的屏幕截图:
该项目将在本地主机上成功运行,即在Google Chrome中的下述地址(您可以考虑使用任何其他浏览器):
localhost:8080/AmitWebApplication/index.jsp
以下屏幕截图显示了我们的Web应用程序的成功运行:
在NetBeansIDE中运行WebApplication应遵循上述步骤。
按照以下简单步骤,使用NetBeansIDE将Applet整合到WebApplication中:
RightClick AmitWebApplication->属性
在“项目属性 ”对话框将打开。
从“ 类别 ”中选择包装,然后单击“ 添加项目 ”。
将显示在NetBeansIDE中开发的项目列表。只需选择一个你要添加的,这里我们将添加“ AmitJavaApplication ”项目。
在添加“ AmitJavaApplication ”时,它将自动添加所选的Project jar文件,即“AmitJavaApplication.jar”,如下面的屏幕截图所示。之后点击“ 添加项目JAR文件”按钮:
注意:仅当项目“AmitJavaApplication”构建时,“AmitJavaApplication”jar文件才可见。
添加jar文件后,单击确定,只需等待几秒钟,直到jar文件被添加到项目中。该过程如下所示。然后按“ 确定 ”:
“jar”文件被添加到项目中,可以在“ AmitWebApplication ”项目的目录结构下看到。build / web文件夹显示添加jar文件:
图25:在AmitWebApplication项目中显示添加jar文件的目录结构
Applet在这里嵌入了applet
标签:
这里,
小程序属性 | 描述 | 项目使用 |
码 | 指定文件名 | tutorial.me.AmitApplet |
档案 | 指定归档文件的位置(此处为jar文件) | AmitJavaApplication.jar |
高度 | 指定小程序高度 | 350 |
宽度 | 指定小程序宽度 | 400 |
码:
<%--
Document : index
Created on : Nov 6, 2013, 10:46:24 AM
Author : amit
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
My first WebApplication using NetBeansIDE
Hello World!
WebApplication using NetBeansIDE...
现在通过右键单击 - > AmitWebApplication - >清理和构建运行Web应用程序项目,如下所示:
项目“成功构建”,可以在“输出”窗口中看到:
现在如上图所示的建筑项目后,使用功能键F6运行项目,或如下所示:
该项目将在本地主机上成功运行,即在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:
来自“ AmitJavaApplication ” 的Applet 可以在这里看到,这样我们可以在WebPage上显示我们的Applet。通过更改applet
标签,可以在“index.jsp”中更改Applet的大小(高度,宽度):
通过这个简单的教程,您应该了解如何在NetBeansIDE中运行程序。我的目标是针对NetBeansIDE用户来帮助他们学习以下功能:
•如何从NetBeans IDE开始
•如何在NetBeansIDE中运行Applet
•了解Applet安全模型
•如何在NetBeansIDE中运行Web应用程序
•将Applet嵌入/集成到JSP页面(Web应用程序)中。