значения базы данных не отображаются в апплете при встраивании в jsp - PullRequest
1 голос
/ 14 февраля 2012

Мой апплет работает нормально и показывает все данные из базы данных, которые мне нужны. Но проблема в том, когда я вставляю созданный файл jar в jsp. он не показывает данные из базы данных.

<applet code="myform.Form" archive="applet.jar" width="600" height="480"/>

апплет работает на странице jsp, но в поле со списком элементы (из базы данных) недоступны для выбора. Файл JAR находится в том же каталоге, где находится страница JSP. Заранее спасибо.

это мой код апплета

package myform;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JComboBox;

public class Form extends javax.swing.JApplet {

    /** Initializes the applet Form */
    public void init() {
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        try {
            String connstr="jdbc:oracle:thin:@localhost:1521/XE";
            String uname="epolicia";
            String pass="admin";
            Class.forName("oracle.jdbc.OracleDriver").newInstance();
            Connection connect =DriverManager.getConnection(connstr,uname,pass);
            // System.out.println("Oracle driver is loaded");
            Statement state=connect.createStatement();
            ResultSet rs = state.executeQuery("SELECT * FROM ZONE");

            while (rs.next()) {
                zoneList.addItem(rs.getString(2)+" ("+rs.getString(1)+")");
                //System.out.println(rs.getString(1));
            }
        } catch(Exception ex) {
            //list.addItem(ex);
        }
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jTextField1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        zoneList = new javax.swing.JComboBox();
        addDistrict = new javax.swing.JButton();
        cancelDistrict = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();

        jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 12));
        jLabel1.setText("District ID :");

        jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 12));
        jLabel2.setText("District Name :");

        jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 12));
        jLabel3.setText("Zone :");

        addDistrict.setFont(new java.awt.Font("Times New Roman", 1, 12));
        addDistrict.setText("Add");


        addDistrict.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jLabel5.setText("index: " + zoneList.getSelectedItem());//addDistrictActionPerformed(evt);
            }
        });

        cancelDistrict.setFont(new java.awt.Font("Times New Roman", 1, 12));
        cancelDistrict.setText("Cancel");
        cancelDistrict.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cancelDistrictActionPerformed(evt);
            }
        });

        jLabel4.setFont(new java.awt.Font("Times New Roman", 1, 24));
        jLabel4.setText("Add New District");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(47, 47, 47)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2)
                            .addComponent(jLabel3))
                        .addGap(28, 28, 28)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE)
                            .addComponent(jTextField2)
                            .addComponent(zoneList, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(101, 101, 101)
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 190, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(101, 101, 101)
                        .addComponent(addDistrict)
                        .addGap(28, 28, 28)
                        .addComponent(cancelDistrict))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(163, 163, 163)
                        .addComponent(jLabel5)))
                .addContainerGap(87, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(19, 19, 19)
                .addComponent(jLabel4)
                .addGap(36, 36, 36)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(zoneList, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addGap(36, 36, 36)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(addDistrict)
                    .addComponent(cancelDistrict))
                .addGap(35, 35, 35)
                .addComponent(jLabel5)
                .addContainerGap(77, Short.MAX_VALUE))
        );

        jLabel5.getAccessibleContext().setAccessibleName("lbl");
    }// </editor-fold>                        

    private void addDistrictActionPerformed(java.awt.event.ActionEvent evt) {                                            

    }                                           

    private void cancelDistrictActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
        System.exit(0);
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton addDistrict;
    private javax.swing.JButton cancelDistrict;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JComboBox zoneList;
    // End of variables declaration                   

}

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Лучшим подходом является предоставление доступа к JDBC на стороне сервера и предоставление веб-службы для апплета: эта тема довольно хорошо освещает эту тему.

Публикация в качестве ответа, посколькукомментарии становятся довольно многолюдными, но это, вероятно, следует закрыть как дубликат.

0 голосов
/ 14 февраля 2012

Может быть, вы не развертываете драйверы Oracle JDBC вместе с вашим JAR?

Чтобы включить зависимость от драйвера Oracle, вам нужно поставить ojdbc6.jar (или другую версию) рядом с applet.jar насервер (или в локальной папке, если вы работаете локально).

Тогда вам нужно, чтобы ваш браузер Java classpath знал об этом.Это можно сделать, либо добавив его в атрибут archive после запятой:

<applet code="myform.Form" archive="applet.jar,ojdbc6.jar" width="600" height="480"/>

, либо добавив его в файл манифеста applet.jar (если их больше, чемодин JAR разделяет их пробелом): Class-Path: ojdbc6.jar

EDIT : Oracle специально упомянул в своей документации, что можно было использовать их драйвер JDBC от Applets.Однако они упоминают проблемы безопасности и т. Д.

Исключение, данное ojdbc14.jar, может означать, что вы пытаетесь получить доступ к другому серверу БД, а не к одному апплету.Если вы запускаете апплет из локальной файловой системы, это довольно логично.

Чтобы избежать этой ошибки, вам нужно подписать свой апплет, как описано в разделе 24.2.2 их документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...