Апплет — это небольшое приложение, ориентированное на задачи, которое выполняется в более крупном приложении или программе. В Интернете апплеты часто пишутся на Java и вставляются в веб-страницы для обеспечения определенной функциональности.
Это руководство поможет вам разработать Java-апплет и внедрить этот апплет в веб-приложение, чтобы сделать его видимым на веб-сайте. Я буду использовать следующие технологии:
- NetBeansIDE 7.3
- Java 1.7
- JSP (Java Server Pages)
- Apache Tomcat Server
Вступление
Прежде чем начать с этого информативного урока, я хотел бы рассказать о технологиях, которые будут рассмотрены ниже:
- NetBeansIDE: это интегрированная среда разработки, разработанная корпорацией Oracle на Java. Он может работать на Windows, Linux, Solaris и других платформах, которые поддерживают совместимую виртуальную машину Java (JVM).
- Java: это язык программирования, разработанный Джеймсом Гослингом в 1995 году, который использует синтаксис C и C ++.
- Апплет: Это в основном программа, написанная для запуска на веб-странице. Могут быть созданы такие элементы управления, как кнопка, метка, флажок, текстовое поле и т. Д., А также ввод данных мыши.
- Веб-приложение: клиент, используемый веб-приложением, является веб-браузером. В основном он использует комбинацию сценариев на стороне сервера (JSP, ASP) и сценариев на стороне клиента (HTML, JavaScript)
- JSP (Java Server Pages): JSP используется для разработки динамически генерируемых веб-страниц. Апплет будет встроен в страницу JSP.
- Apache Tomcat Server: это веб-сервер с открытым исходным кодом, который реализует спецификации JSP и Java Servlet.
Разработка и запуск апплета в приложении Java
Выполните следующие простые шаги для создания апплета в приложении Java с помощью NetBeansIDE:
Откройте проект NetBeansIDE из File -> NewProject -> ChooseProject -> Java Application, как показано ниже:
  Рисунок 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 
Чтобы создать апплет, выполните следующие действия:
Щелкните правой кнопкой мыши AmitJavaApplication-> New-> Other.
  Рисунок 4: Шаги для создания нового апплета 
Выберите Swing GUI form-> JAppletForm , нажмите Next, как показано ниже:
  Рисунок 5: Выберите «JApplet Form» из Swing GUI Forms 
После выполнения вышеуказанного шага введите следующее:
  Имя класса: AmitApplet 
  Пакет: tutorial.me 
Файл создается в пакете «tutorial.me» в следующем месте:
Расположение файла: C: \ Users \ amit \ Documents \ NetBeansProjects \ AmitJavaApplication \ src \ tutorial \ me
После этого нажмите « Готово» :
  Рисунок 6: Установите имя класса и пакет 
Теперь экран дизайна « AmitApplet.java » можно увидеть здесь. Он поставляется с опцией « Палитра » для добавления любого Swing-контейнера / элемента управления в апплет:
  Рисунок 7: часть дизайна класса апплета 
Проектирование апплета показано ниже со следующим контейнером и элементами управления Swing:
| Качели Контейнер / Контроль | номер | Имя переменной | 
| JPanel (Контейнер) | 1 | jPanel1 | 
| JLabel (Контроль) | 1 | jLabel1 | 
| JTextField (Control) | 3 | textNum1 textNum2 textResult | 
| JButton (Контроль) | 1 | btnMultiply | 
  Рисунок 8: Апплет, предназначенный для умножения 2 чисел 
Следующий код можно увидеть в « Редакторе исходного кода », когда « Дизайн » будет завершен, скриншот и код приложения апплета показаны ниже:
  Рисунок 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-> Run File, как показано ниже:
  Рисунок 10: Запустите апплет «AmitApplet.java» 
Апплет можно увидеть здесь после выполнения приведенных выше шагов, теперь введите следующие значения для умножения, т.е.
 9 * 7 = 63
  Рисунок 11: Просмотр апплета 
Приведенные выше шаги необходимо выполнить для запуска апплета в NetBeansIDE.
Разработка и запуск веб-приложения:
Выполните следующие простые шаги для создания веб-приложения с помощью NetBeansIDE:
Перейдите в File-> New Project, как показано ниже:
  Рисунок 12: Создание нового проекта WebApplication 
После запуска с новым проектом выберите Java Web из категорий . Теперь выберите веб-приложение и нажмите « Далее» :
  Рисунок 13: Выбор веб-приложения из категории «Java Web» 
После выполнения вышеуказанного шага добавьте ProjectName, Project Location:
  Название проекта: AmitWebApplication 
  Расположение проекта: C: \ Users \ amit \ Documents \ NetBeansProjects 
Теперь нажмите Next :
  Рисунок 14: Имя проекта как «AmitWebApplication» 
Выберите «Сервер» в разделе «Сервер и настройки» и Apache Tomcat, чтобы запустить AmitWebApplication .
  Рисунок 15: Выбор сервера в качестве Apache Tomcat 
Нажмите Next, чтобы начать проект 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 -> Очистить и построить, как показано ниже:
  Рисунок 17: Сборка проекта AmitWebApplication 
Теперь после построения проекта, как показано выше, запустите проект с помощью функциональной клавиши «F6» или с помощью следующего, как показано на приведенном ниже снимке экрана:
  Рисунок 18: запустить проект 
Проект будет успешно запущен на локальном хосте, т.е. по указанному ниже адресу в Google Chrome (вы можете использовать любой другой браузер):
 localhost:8080/AmitWebApplication/index.jsp
На следующем снимке экрана показан успешный запуск нашего веб-приложения:
  Рисунок 19: index.jsp работает на локальном хосте 
Приведенные выше шаги необходимо выполнить для запуска WebApplication в NetBeansIDE.
Встраивание / интеграция апплета в веб-приложение
Выполните следующие простые шаги для интеграции апплета в WebApplication с использованием NetBeansIDE:
RightClick AmitWebApplication-> Свойства
  Рисунок 20: Свойства проекта 
Откроется диалоговое окно «Свойства проекта ».
Выберите « Упаковка » в « Категории » и нажмите « Добавить проект ».
  Рисунок 21. Перейдите в раздел «Упаковка» под категориями и нажмите «Добавить проект» 
Будет показан список проектов, разработанных в NetBeansIDE. Просто выберите тот, который вы хотите добавить, здесь мы добавим проект « AmitJavaApplication ».
После добавления « AmitJavaApplication » он сам добавит выбранный файл jar проекта, то есть «AmitJavaApplication.jar», как показано на приведенном ниже снимке экрана. После этого нажмите кнопку « Добавить JAR-файлы проекта »:
Примечание. Файл jar «AmitJavaApplication» будет виден только в том случае, если был создан проект «AmitJavaApplication».
  Рисунок 22: Перейдите к проекту AmitJavaApplication 
После добавления файла JAR нажмите кнопку ОК и подождите несколько секунд, пока файл JAR не будет добавлен в проект. Процесс иллюстрируется ниже. Затем нажмите « ОК »:
  Рисунок 23: файл JAR добавлен в проект 
  Рисунок 24: Интеграция апплета в WebApplication 
Файл «jar» добавляется в проект, который можно увидеть в структуре каталогов проекта « AmitWebApplication ». Папка build / web показывает добавление файла jar:
  Рисунок 25: Структура каталогов, показывающая добавление файла JAR в проекте AmitWebApplication 
  Апплет внедряется здесь с помощью тега 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 
Код:
 <%-- 
    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 -> Очистить и построить, как показано ниже:
  Рисунок 27: Сборка AmitWebApplication 
Проект «Строится успешно», который можно увидеть здесь в окне «Вывод»:
  Рисунок 28: Сборка успешна 
Теперь после построения проекта, как показано выше, запустите проект с помощью функциональной клавиши F6 или как показано ниже:
  Рисунок 29: Запустить проект 
Проект будет успешно запущен на локальном хосте, т.е. по указанному ниже адресу в Google Chrome (вы можете использовать любой другой браузер):
 localhost:8080/AmitWebApplication/index.jsp
Теперь показанное ниже предупреждение о безопасности будет отображаться как неподписанный апплет:
«Oracle представила новые функции безопасности в своем подключаемом модуле веб-браузера Java, когда 11 декабря 2012 года выпустила Java 7 Update 10».
«Запуск такого неподписанного приложения будет заблокирован в будущем выпуске, потому что это потенциально небезопасно и представляет угрозу безопасности».
Для понимания этих проблем безопасности нам необходимо прояснить понятия, связанные с «моделью безопасности Java», которая охватывает «неподписанный апплет», «подписанный апплет» и «самоподписанный апплет:
Неподписанный апплет. Этот вид апплета не может получить доступ ко всем системным свойствам, локальной файловой системе и т. Д. В нем отсутствует безопасность, поскольку апплет не подписан. Согласно «Java 7 Update 10» (как указано выше), пользователь получает предупреждение непосредственно перед его использованием.
Подписанный апплет. В этом случае апплеты подписываются сертификатом, который браузер проверяет с помощью сервера центра сертификации. При успешной проверке подписи и при одобрении пользователя этот вид апплета получает больше прав. Он может выполнять больше задач по сравнению с самоподписанными (обсуждаемыми ниже) и неподписанными апплетами (обсуждаемыми выше).
Самоподписанный апплет : эти апплеты подписаны разработчиком и могут также рассматриваться как проблема безопасности. Плагин Java по-прежнему выдает предупреждение о запуске самозаверяющих апплетов, потому что только разработчик гарантирует безопасность этих апплетов.
Для получения дополнительной информации о вышеупомянутых концепциях, связанных с моделью безопасности апплета, просто перейдите по следующей ссылке. Разница показана в приведенной ниже ссылке с большим объяснением: http://www.mendoweb.be/blog/java-applets-unsigned-vs-self-signed-vs-signed/
Чтобы запустить текущий проект «AmitWebApplication», просто нажмите « Выполнить » после выбора « Я принимаю на себя риск и хочу запустить это приложение ». Этот шаг успешно запустит ваш апплет:
  Рисунок 30. Установите флажок «Я принимаю на себя риск и хочу запустить это приложение» 
  Апплет из « AmitJavaApplication » можно увидеть здесь, таким образом, мы можем показать наш апплет на веб-странице .  Размер (высота, ширина) апплета можно изменить в «index.jsp», изменив тег applet 
 <applet code="tutorial.me.AmitApplet" archive="AmitJavaApplication.jar" width="400" height="350">
</applet>
  Рисунок 31: Апплет успешно работает на странице JSP 
Вывод
С помощью этого простого руководства вы должны получить представление о запуске программ в NetBeansIDE. Моей целью было нацелить пользователей NetBeansIDE, чтобы помочь им в изучении следующих функций:
  • Как начать с IDE NetBeans 
  • Как запустить апплет в NetBeansIDE 
  • Понимание модели безопасности апплета 
  • Как запустить веб-приложение в NetBeansIDE 
  • Встраивание / интеграция вашего апплета на странице JSP (веб-приложение). 
Ресурсы
Вот ресурсы, которые могут помочь читателям:
Вы можете скачать проект Applet и Web Application здесь .
Я надеюсь, что вы узнали из этого урока. Я с нетерпением жду ваших комментариев ниже.






























