在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项目,如下所示:

appletfig1
图1:新的Java应用程序

现在,添加项目名称,项目位置:

项目名称: AmitJavaApplication 
项目位置: C:\ Users \ amit \ Documents \ NetBeansProjects 
主类:amitjavaapplication.AmitJavaApplication

appletfig2
图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
    }
}

目录结构可以在左侧面板的“ 项目 ”和“ 文件 ” 下看到

appletfig3
图3:AmitJavaApplication.java代码

要创建Applet,请按照以下步骤操作:

右键点击AmitJavaApplication-> New-> Other

appletfig4
图4:创建新Applet的步骤

选择Swing GUI窗体 - > JAppletForm,单击Next如下所示:

appletfig5
图5:从Swing GUI窗体中选择“JApplet Form”

完成上述步骤后,输入以下内容:

类名: AmitApplet 
包: tutorial.me

该文件在“tutorial.me”包下创建,位于以下位置:

文件位置: C:\ Users \ amit \ Documents \ NetBeansProjects \ AmitJavaApplication \ src \ tutorial \ me

点击完成后点击

appletfig6
图6:设置类名和包

现在可以看到“ AmitApplet.java ” 的设计画面它配有一个选项“ Palette ”来添加任何Swing容器/控件到Applet:

appletfig7
图7:Applet类的设计部分

以下使用以下Swing容器和控件显示Applet的设计:

摆动容器/控制 变量名
JPanel(集装箱) 1 JPANEL1
JLabel(控制) 1 jLabel1的
JTextField(控件) 3 textNum1 
textNum2 
textResult
JButton(控制) 1 btnMultiply

appletfig8
图8:Applet设计为乘以2个数字

“ 设计 ”完成后,“ 源代码编辑器 ” 可以看到以下代码,Applet应用程序的截图和代码如下所示:

appletfig9
图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,如下所示:

appletfig10
图10:运行Applet“AmitApplet.java”

完成上述给定步骤后,可以看到Applet,现在输入以下值乘以ie

9 * 7 = 63

appletfig11
图11:Applet Viewer

在NetBeansIDE中运行Applet应遵循上述步骤。

开发和运行Web应用程序:

按照以下简单步骤,使用NetBeansIDE创建Web应用程序:

转到File-> New Project,如下所示:

appletfig12
图12:创建新的WebApplication项目

New Project开始之后Categories中选择Java Web现在选择Web应用程序并单击下一步

appletfig13
图13:从类别“Java Web”中选择Web应用程序

完成上述步骤后,添加ProjectName,项目位置:

项目名称: AmitWebApplication 
项目位置: C:\ Users \ amit \ Documents \ NetBeansProjects

现在,点击下一步

appletfig14
图14:项目名称为“AmitWebApplication”

从“服务器和设置”和Apache Tomcat中选择服务器以运行AmitWebApplication

appletfig15
图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>

appletfig16
图16:index.jsp

现在通过右键单击AmitWebApplication - >清理和构建运行Web应用程序,如下所示:

appletfig17
图17:构建AmitWebApplication项目

现在如上图所示,通过使用功能键“F6”运行项目,或者使用如下图所示的屏幕截图:

appletfig18
图18:运行项目

该项目将在本地主机上成功运行,即在Google Chrome中的下述地址(您可以考虑使用任何其他浏览器):

localhost:8080/AmitWebApplication/index.jsp

以下屏幕截图显示了我们的Web应用程序的成功运行:

appletfig19
图19:index.jsp在本地主机上运行

在NetBeansIDE中运行WebApplication应遵循上述步骤。

将Applet嵌入/集成到Web应用程序中

按照以下简单步骤,使用NetBeansIDE将Applet整合到WebApplication中:

RightClick AmitWebApplication->属性

appletfig20
图20:项目属性

“项目属性 ”对话框将打开。

从“ 类别 ”中选择包装,然后单击“ 添加项目 ”。

appletfig21
图21:按类别转到包装,然后点击“添加项目”

将显示在NetBeansIDE中开发的项目列表。只需选择一个你要添加的,这里我们将添加“ AmitJavaApplication ”项目。

在添加“ AmitJavaApplication ”时,它将自动添加所选的Project jar文件,即“AmitJavaApplication.jar”,如下面的屏幕截图所示。之后点击“ 添加项目JAR文件”按钮:

注意:仅当项目“AmitJavaApplication”构建时,“AmitJavaApplication”jar文件才可见。

appletfig22
图22:导航到AmitJavaApplication项目

添加jar文件后,单击确定,只需等待几秒钟,直到jar文件被添加到项目中。该过程如下所示。然后按“ 确定 ”:

appletfig23
图23:将jar文件添加到项目中

appletfig24
图24:Applet在WebApplication中的集成

“jar”文件被添加到项目中,可以在“ AmitWebApplication ”项目的目录结构下看到build / web文件夹显示添加jar文件:

appletfig25
图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

appletfig26
图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应用程序项目,如下所示:

appletfig27
图27:构建AmitWebApplication

项目“成功构建”,可以在“输出”窗口中看到:

appletfig28
图28:构建成功

现在如上图所示的建筑项目后,使用功能键F6运行项目,或如下所示:

appletfig29
图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:

appletfig30
图30:选择“我接受风险并希望运行此应用程序”框

来自“ AmitJavaApplication ” 的Applet 可以在这里看到,这样我们可以在WebPage上显示我们的Applet。通过更改applet标签,可以在“index.jsp”中更改Applet的大小(高度,宽度)

<applet code="tutorial.me.AmitApplet" archive="AmitJavaApplication.jar" width="400" height="350">
</applet>

appletfig31
图31:Applet在JSP页面上成功运行

结论

通过这个简单的教程,您应该了解如何在NetBeansIDE中运行程序。我的目标是针对NetBeansIDE用户来帮助他们学习以下功能:

•如何从NetBeans IDE开始
•如何在NetBeansIDE中运行Applet 
•了解Applet安全模型
•如何在NetBeansIDE中运行Web应用程序
•将Applet嵌入/集成到JSP页面(Web应用程序)中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值