Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Апплеты > Когда на appletviewer работает, а на html нет


Автор: nurlanboy 24.2.2006, 23:45
Итак есть class
Код

//<applet code=Admin.class width=170 height=100></applet>

import java.awt.*;
import javax.swing.*;
import java.io.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.security.*;

public class Admin extends JApplet {
  String fileName = "";
  
  JTextField txt = new JTextField(12);
  JPasswordField psw = new JPasswordField(12);
  JLabel lbl1 = new JLabel("Login:");
  JLabel lbl2 = new JLabel("Password:");
  JButton btnOk = new JButton("OK");
  BL al = new BL();
  
  public void init() {
    Container cp = getContentPane();
    
    JPanel panel = new JPanel(new GridLayout(2,2));
    panel.setBorder(new EmptyBorder(5,5,5,5));
    panel.add(lbl1);
    panel.add(txt);
    panel.add(lbl2);
    panel.add(psw);
    cp.add(BorderLayout.NORTH, panel);
    
    JPanel p1 = new JPanel(new FlowLayout());
    p1.add(btnOk);
    cp.add(BorderLayout.SOUTH, p1);

    fileName = getParameter("fileName");
    txt.setText(fileName);

    btnOk.addActionListener(al);
    
  }
  class BL implements ActionListener {
    String login, password;
    public void actionPerformed(ActionEvent e) {
      login = txt.getText();
      password = psw.getText();
      FileReader reader=null;
      try {
        reader = new FileReader(fileName);
        String str="";
        int ch;
        while((ch = reader.read())!=-1){
          str += (char) ch;
        }
        JOptionPane opt = new JOptionPane();
[list]
.// Здесь идет проверка
// Данное сообщение нужно было чтобы проверить хранит ли str содержимое файла
[/list]
        opt.showMessageDialog(null, str, "Warning !", JOptionPane.ERROR_MESSAGE);

     reader.close();
      } catch(FileNotFoundException fnfe) {
          JOptionPane opt = new JOptionPane();
          opt.showMessageDialog(null, fnfe.toString() + reader.toString(), "Warning !", JOptionPane.ERROR_MESSAGE);
      } catch(AccessControlException ace) {
          JOptionPane opt = new JOptionPane();
          opt.showMessageDialog(null, ace.toString(), "Warning !", JOptionPane.ERROR_MESSAGE);
      } catch(Exception exc) {
          JOptionPane opt = new JOptionPane();
          opt.showMessageDialog(null, exc.toString(), "Warning !", JOptionPane.ERROR_MESSAGE);
      }
    }
  }
}

Значит так, я все правильно прописал (в смысле имею доступ к файлу)!
через командную строку набираю appletviewer index.html
и он работает стабильно,
но когда контачу через пакет denwer, то он почему-то не выдает вообще никаких сообщений, хотя вроде все исключения я ловлю в программе
============
Мой index.html
Код

<html>
<head><title>Programming</title></head>
<body>
  <center>
    <applet code="Admin.class" archive="Admin.jar" width=170 height=100>
      <param name="fileName" value="admin.psw">
    </applet>
  </center>
</body>
</html>

==========
Мой reading.jp - java policy
Код

keystore "${java.class.path}/adminstore";    
grant {    
    permission java.io.FilePermission "${java.class.path}/admin.psw", "read", signedBy "Admin";    
};

=========
Для простоты все файлы находяться в одной директории
СПАСИБО всем кто готов помочь мне
Добавлено @ 23:48
Думаю ошибка в том, что может быть я неправильно указываю местонахождения файла в сети!
Прав ли я, если да, то помогите мне разобраться и если можно маленький пример!
Если нет, то где моя ошибка

Автор: LSD 26.2.2006, 22:11
Единственная ошибка которую я пока нашел, в строке 64 идет вызов reader.toString(), а если файл не существует то и reader - null, но если это исправить то все ОК (я смотрел в браузере).

А что за denwer?

Автор: nurlanboy 28.2.2006, 21:50
Проблему с доступом к локальному файлу (на HDD, например c:\java\www\info.txt) я уже решил, а как к www.test.kg/www/info.txt я так и не понял.
Как получить доступ к файлу который находиться на сайте - первый вопрос.
Второй:
Например я создал апплет прописанный через html, проверяю пароль через JTextField, сравниваю со строками файла. Если есть совпадение, то должно появиться новое окошко (я думаю это лучше организовать через JDialog smile )
Посоветуййте мне как начинающему, через что (JDialog, JFrame, Jwindow или еще что-то) загружать новое окошко. Ведь разницы в них я пока не улавливаю!
И вообще возможно ли через эти перечисленные классы работать - ну, то есть чтобы всем пользователям сайта видно было это загружаемое окошко?

Автор: LSD 1.3.2006, 22:02
Цитата(nurlanboy @ 28.2.2006, 21:50 Найти цитируемый пост)
как к www.test.kg/www/info.txt я так и не понял.
Как получить доступ к файлу который находиться на сайте - первый вопрос.

Код
URL server = getCodeBase();
URL resource = new URL(server.getProtocol(), server.getProtocol(), server.getPort(), "/www/info.txt");
HttpURLConnection conn = (HttpURLConnection) resource.openConnection();
InputStream in = conn.getInputStream();


Цитата(nurlanboy @ 28.2.2006, 21:50 Найти цитируемый пост)
Посоветуййте мне как начинающему, через что (JDialog, JFrame, Jwindow или еще что-то) загружать новое окошко.

JFrame

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)