Статьи

Встраивание апплета в веб-приложение

Апплет — это небольшое приложение, ориентированное на задачи, которое выполняется в более крупном приложении или программе. В Интернете апплеты часто пишутся на 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, как показано ниже:

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

Чтобы создать апплет, выполните следующие действия:

Щелкните правой кнопкой мыши AmitJavaApplication-> New-> Other.

appletfig4
Рисунок 4: Шаги для создания нового апплета

Выберите Swing GUI form-> JAppletForm , нажмите Next, как показано ниже:

appletfig5
Рисунок 5: Выберите «JApplet Form» из Swing GUI Forms

После выполнения вышеуказанного шага введите следующее:

Имя класса: AmitApplet
Пакет: tutorial.me

Файл создается в пакете «tutorial.me» в следующем месте:

Расположение файла: C: \ Users \ amit \ Documents \ NetBeansProjects \ AmitJavaApplication \ src \ tutorial \ me

После этого нажмите « Готово» :

appletfig6
Рисунок 6: Установите имя класса и пакет

Теперь экран дизайна « AmitApplet.java » можно увидеть здесь. Он поставляется с опцией « Палитра » для добавления любого Swing-контейнера / элемента управления в апплет:

appletfig7
Рисунок 7: часть дизайна класса апплета

Проектирование апплета показано ниже со следующим контейнером и элементами управления Swing:

Качели Контейнер / Контроль номер Имя переменной
JPanel (Контейнер) 1 jPanel1
JLabel (Контроль) 1 jLabel1
JTextField (Control) 3 textNum1
textNum2
textResult
JButton (Контроль) 1 btnMultiply

appletfig8
Рисунок 8: Апплет, предназначенный для умножения 2 чисел

Следующий код можно увидеть в « Редакторе исходного кода », когда « Дизайн » будет завершен, скриншот и код приложения апплета показаны ниже:

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-> Run File, как показано ниже:

appletfig10
Рисунок 10: Запустите апплет «AmitApplet.java»

Апплет можно увидеть здесь после выполнения приведенных выше шагов, теперь введите следующие значения для умножения, т.е.

 9 * 7 = 63

appletfig11
Рисунок 11: Просмотр апплета

Приведенные выше шаги необходимо выполнить для запуска апплета в NetBeansIDE.

Разработка и запуск веб-приложения:

Выполните следующие простые шаги для создания веб-приложения с помощью NetBeansIDE:

Перейдите в File-> New Project, как показано ниже:

appletfig12
Рисунок 12: Создание нового проекта WebApplication

После запуска с новым проектом выберите Java Web из категорий . Теперь выберите веб-приложение и нажмите « Далее» :

appletfig13
Рисунок 13: Выбор веб-приложения из категории «Java Web»

После выполнения вышеуказанного шага добавьте ProjectName, Project Location:

Название проекта: AmitWebApplication
Расположение проекта: C: \ Users \ amit \ Documents \ NetBeansProjects

Теперь нажмите Next :

appletfig14
Рисунок 14: Имя проекта как «AmitWebApplication»

Выберите «Сервер» в разделе «Сервер и настройки» и Apache Tomcat, чтобы запустить AmitWebApplication .

appletfig15
Рисунок 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>

appletfig16
Рисунок 16: index.jsp

Теперь запустите веб-приложение, щелкнув правой кнопкой мыши AmitWebApplication -> Очистить и построить, как показано ниже:

appletfig17
Рисунок 17: Сборка проекта AmitWebApplication

Теперь после построения проекта, как показано выше, запустите проект с помощью функциональной клавиши «F6» или с помощью следующего, как показано на приведенном ниже снимке экрана:

appletfig18
Рисунок 18: запустить проект

Проект будет успешно запущен на локальном хосте, т.е. по указанному ниже адресу в Google Chrome (вы можете использовать любой другой браузер):

 localhost:8080/AmitWebApplication/index.jsp

На следующем снимке экрана показан успешный запуск нашего веб-приложения:

appletfig19
Рисунок 19: index.jsp работает на локальном хосте

Приведенные выше шаги необходимо выполнить для запуска WebApplication в NetBeansIDE.

Встраивание / интеграция апплета в веб-приложение

Выполните следующие простые шаги для интеграции апплета в WebApplication с использованием NetBeansIDE:

RightClick AmitWebApplication-> Свойства

appletfig20
Рисунок 20: Свойства проекта

Откроется диалоговое окно «Свойства проекта ».

Выберите « Упаковка » в « Категории » и нажмите « Добавить проект ».

appletfig21
Рисунок 21. Перейдите в раздел «Упаковка» под категориями и нажмите «Добавить проект»

Будет показан список проектов, разработанных в NetBeansIDE. Просто выберите тот, который вы хотите добавить, здесь мы добавим проект « AmitJavaApplication ».

После добавления « AmitJavaApplication » он сам добавит выбранный файл jar проекта, то есть «AmitJavaApplication.jar», как показано на приведенном ниже снимке экрана. После этого нажмите кнопку « Добавить JAR-файлы проекта »:

Примечание. Файл jar «AmitJavaApplication» будет виден только в том случае, если был создан проект «AmitJavaApplication».

appletfig22
Рисунок 22: Перейдите к проекту AmitJavaApplication

После добавления файла JAR нажмите кнопку ОК и подождите несколько секунд, пока файл JAR не будет добавлен в проект. Процесс иллюстрируется ниже. Затем нажмите « ОК »:

appletfig23
Рисунок 23: файл JAR добавлен в проект

appletfig24
Рисунок 24: Интеграция апплета в WebApplication

Файл «jar» добавляется в проект, который можно увидеть в структуре каталогов проекта « AmitWebApplication ». Папка build / web показывает добавление файла jar:

appletfig25
Рисунок 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

appletfig26
Рисунок 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 -> Очистить и построить, как показано ниже:

appletfig27
Рисунок 27: Сборка AmitWebApplication

Проект «Строится успешно», который можно увидеть здесь в окне «Вывод»:

appletfig28
Рисунок 28: Сборка успешна

Теперь после построения проекта, как показано выше, запустите проект с помощью функциональной клавиши F6 или как показано ниже:

appletfig29
Рисунок 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», просто нажмите « Выполнить » после выбора « Я принимаю на себя риск и хочу запустить это приложение ». Этот шаг успешно запустит ваш апплет:

appletfig30
Рисунок 30. Установите флажок «Я принимаю на себя риск и хочу запустить это приложение»

Апплет из « AmitJavaApplication » можно увидеть здесь, таким образом, мы можем показать наш апплет на веб-странице . Размер (высота, ширина) апплета можно изменить в «index.jsp», изменив тег applet

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

appletfig31
Рисунок 31: Апплет успешно работает на странице JSP

Вывод

С помощью этого простого руководства вы должны получить представление о запуске программ в NetBeansIDE. Моей целью было нацелить пользователей NetBeansIDE, чтобы помочь им в изучении следующих функций:

• Как начать с IDE NetBeans
• Как запустить апплет в NetBeansIDE
• Понимание модели безопасности апплета
• Как запустить веб-приложение в NetBeansIDE
• Встраивание / интеграция вашего апплета на странице JSP (веб-приложение).

Ресурсы

Вот ресурсы, которые могут помочь читателям:

NetBeansIDE
Джава
JSP

Вы можете скачать проект Applet и Web Application здесь .

Я надеюсь, что вы узнали из этого урока. Я с нетерпением жду ваших комментариев ниже.