Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

РассылкиАрхив Java programmingВыпуск 17-й

Java programming выпуск 17-й

Здравствуйте дорогие читатели!

Последнее время приходят письма подобного содержания:
Хотелось бы реализовать скрипт на Java, который бы отправлял e-mail на заранее определённый адрес информацию из формы (стандартная форма: Имя, E-mail и т.д.), только при этом не вызывался почтовик, т.е. занёс информацию в форму, нажал кнопку и всё.

Повторяю на JavaScript такое сделать нельзя, а вот на Java можно, привожу пример отправки почты из приложения.

Начинающим

Проведённый в прошлом номере тест дал неутешительные результаты средний балл 21.7, что тянет на оценку удовлетворительно.

Проведём разборку данного теста:

1. Сколько в языке Java определено базовых типов данных?

2. Какой размер области памяти занимает тип int?

Отвечая на первые два вопроса приведу таблицу:

Тип Занимаемое место в памяти
boolean 1 бит
char 16 бит
byte 8 бит
short 16 бит
int 32 бита
long 64 бита
float 32 бита
double 64 бита

3. Какой из этих примеров не работоспособен?

1.

class HelloWorld 
{
 public static void main (String args [])
 { 
 //Выводим на экран Hello World
  System. out. println ("Hello World");
 } 
}

2.

class HelloWorld 
{
 public static void main (String args [])
 { 
 /*Выводим на экран Hello World*/
  System. out. println ("Hello World");
 } 
}
3.

class HelloWorld 
{
 public static void main (String args [])
 { 
 /*Выводим на экран Hello World
  System. out. println ("Hello World");
 } 
}
4.

class HelloWorld 
{
 public static void main (String args [])
 { 
 //Выводим на экран Hello World//
  System. out. println ("Hello World");
 } 
}

Если я проведу выделение всех комментариев то думаю всё станет понятно:

1.

class HelloWorld 
{
 public static void main (String args [])
 { 
 //Выводим на экран Hello World
  System. out. println ("Hello World");
 } 
}

2.

class HelloWorld 
{
 public static void main (String args [])
 { 
 /*Выводим на экран Hello World*/
  System. out. println ("Hello World");
 } 
}
3.

class HelloWorld 
{
 public static void main (String args [])
 { 
 /*Выводим на экран Hello World
  System. out. println ("Hello World");
 } 
}

4.

class HelloWorld 
{
 public static void main (String args [])
 { 
 //Выводим на экран Hello World//
  System. out. println ("Hello World");
 } 
}

Видно что третий пример работать не будет.

4. Какой результат выведется на экран?


 byte b = 100;
 b=(byte)(b*2);
 if(b==200)b=0;
 b+=56;
 System. out. println (b);
Вторая строчка кода b=(byte)(b*2); даст нам результат -56, так как произоёдёт верхнее переполнение (-127+(128+1-200)). И на экран выведется 0 (-56+56=0).

5. Какой результат выведется на экран?


double matrix [][] = new double [4][];
matrix [0] = new double[4];
matrix[1] = new double[4];
matrix[2] = new double[4];
matrix[3] = new double[4];
System. out. println (matrix[3][0]);

Так как тип хранимых в массиве данных double, то на экран выведется 0.0

6. Какой результат выведется на экран?


 boolean a=true;
 boolean b=true;
 boolean c=false;
 if ((a&&b;)^c) System.out.println ("true");
 else System.out.println ("false");

Истина и истина = истина, истина или ложь = истина. Результат вывода true

7. У какого из перечисленных операторов самый высокий приоритет

*
!
=
/

Правильный ответ !. О приоритете операторов смотрите 15-й выпуск .

Тема "на заказ"

Многопоточность (продолжение)

Реализация интерфейса Runnable

Описанный в прошлом номере способ создания потоков как объектов класса Thread или унаследованных от него классов кажется достаточнао естественным. Однако этот способ не единственный. Если вам нужно создать только один поток, работающий одновременно с кодом аплета, проще выбрать второй способ с использованием интерфейса Runnable.

Идея заключается в том, что основной класс аплета, который является дочерним по отношению к классу Applet, дополнительно реализует интерфейс Runnable:


public class MultiSmile extends Applet implements Runnable
{
 Thread multiSmple = null;
 . . .
 public void run()
 {
  . . .
 }
 public void start()
 {
  if (multiSmple == null)
  {
   multiSmple = new Thread(this);
   multiSmple.start();
  }
 }
 public void stop()
 {
  if (m_MultiTask != null)
  {
   multiSmple.stop();
   multiSmple = null;
  }
 }
}

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

Для создания потока используется оператор new. Поток создается как объект класса Thread, причем конструктору передается ссылка на класс аплета:


multiSmple = new Thread(this);

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

Как запустить поток?

Запуск выполняется, как и раньше, методом start. Обычно поток запускается из метода start аплета, когда пользователь отображает страницу сервера Web, содержащую аплет. Остановка потока выполняется методом stop.

В следующем номере мы затронем тему синхронизации потоков.

Вопрос - ответ

Вопрос: Как вычитать строку (String) из файла с учетом кодировки.

Ответ:


BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("file"), "нужная_кодировка"));
String s;
while((s = br.readLine()) != null) {}

Вопрос: У меня апплет состоит из трех панелей. Хочу поставить scrollbar в панель аплета, не могу разобраться как осуществлять контроль размеров окна аплета, хотя я вставил конструктор dimension и в init() через if анализирую высоту и ширину, но толку нет, да одна особенность у меня эта панель имеет компоновку CardLayouot. Как контролировать размеры окна и вставить туда scrollbar
bob

Ответ:

Контролировать размеры окна апплета невозможно так как они устанавливаются HTML тэгом applet.

Что касается scrollbar, то в панели из библиотеки AWT нет такой возможности, а вот у JPanel из библиотеки Swing есть setAutoscrolls(boolean).

Вопрос: Не могу понять все говорят что swing круче чем AWT но как не посмотришь все почему-то в примерах делают все с помощью AWT.где правда?
bob

Ответ: Просто до ближайшего времени броузеры не держали библиотеки Swing. Сейчас с JDK 1.4 идет plug-in с которым работает и Swing.

Вопрос: Небольшая проблема в том что не могу по человечески написать событие mouseEntered на кнопку, чтобы при в ходе на кнопку, кнопка меняла свой цвет, например. Я работаю на Cafe и визуальными средствами это сделал но мне это, но мне это жутко не нравится так как я все привык ручками.
bob

Ответ: Привожу пример “сделанный ручками” в разделе “Программный код…” (причем используя Swing)

Программный код…


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class SampleButton extends JFrame
{
 JButton myButton = new JButton("Ok");
 public SampleButton()
 {
  addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    dispose();
    System.exit(0);
   }
  });
  myButton.addMouseListener(new MouseAdapter()
  {
   public void mouseEntered(MouseEvent e)
   {
    myButton.setBackground(Color.blue);
   }
   public void mouseExited(MouseEvent e)
   {
    myButton.setBackground(Color.red);
   }
  });
  myButton.setBackground(Color.red);
  this.getContentPane().setLayout(new BorderLayout());
  this.getContentPane().add(myButton,BorderLayout.NORTH);
 }
 public static void main(String args[])
 {
  System.out.println("Starting SampleButton...");
  SampleButton mainFrame = new SampleButton();
  mainFrame.setSize(400, 400);
  mainFrame.setTitle("SampleButton");
  mainFrame.setVisible(true);
 }
}

Jar-архив

JavaScript

Вопрос: Как узнать название броузера?
Антон

Ответ: Название и версию броузера можно узнать следующим образом:


<script; language="JavaScript">
<!-- 
browserName=navigator.appName;
browserVer=parseInt(navigator.appVersion);
document.write(browserName);
document.write(" "+browserVer);
//-->
</script>

Вопрос: Подскажите (желательно ссылку) более-менее хороший учебник по java-scripts. Особенно интересуют переменные и как начать программировать, хотя бы делать небольшие скрипты.
Tarantul

Ответ: По моему мнению, для начинающих хороша книга Стефана Коха (Stefan Koch) "JAVASCRIPT ДЛЯ МАГА", даю ссылку на страничку downloads где вы можете скачать zip-архив(правда книга в doc файлах и архив соответственно 340Кб).

Вопрос: Нужна информация о том, от куда пришёл посетитель. Как скриптом можно получить эту информацию.

Ответ:


document.referer

Вопрос: Этот вопрос я задавал Вам раньше, но немного не так сформулировал. Как сделать чтобы указанные мной в исходниках числовые значения radio, checkbox и text складывались. Не обязательно чтобы значения стояли в value можно в любом другом месте, как вам будет удобнее и желательно что бы я смог их сам поменять. Но тут возникает небольшое усложнение, мне надо, что бы в поле text 6 вводилось некое число. Если это число от 1 до 9 включительно то оно должно умножиться на 150, если это число от 10 до 30 включительно оно должно умножиться на 130, если это число более 30 то оно должно умножиться на 100. После этого все отмеченные значения должны сложиться. Сумма по нажатию кнопочки "Подсчитать" должна выводится в текстовую строчку или в текст.
Алексей

Ответ: Смотрите немного изменённую версию примера Суммирование значений атрибута value всех отмеченные radio и checkbox и вывод их суммы:
Суммирование значений атрибута value всех отмеченные radio, checkbox и text(при определенных условиях) и вывод их суммы.

Вопрос: В 16-м номере приведёна ссылка на пример для вывода произвольной строки, хотелось бы таким-же образом выводить сообщение в зависимости от текущей даты.
Tarantul

Ответ: Вот этот скрипт :


<script; language="JavaScript">
num1=Math.ceil(Math.random()*19);
 a=parent.frame1.document.anchors[num1];
 document.write(a.name);
</script>
заменяем, например, следующим:

<script; language="JavaScript">
num1=new Date();
b=num1.getDate()
if(b>20)b=b-20;
a=parent.frame1.document.anchors[b];
document.write(a.name);
</script>

Строка будет выводится в зависимости от дня

Вопрос: Как сделать проверку вводимых данных в форму?

Ответ:
Небольшой пример проверки имени и e-mail'a.








Вопросы присылайте на E-mail [email protected] с пометкой "Вопрос по Java".

Жду вопросов и предложений.

Юрий Ладик.

Подписаться на эту рассылку и посмотреть архив можно тут /subs/subs.html


Дэвид Флэнаган
"Java. Справочник"
Подробнее>>
Заказать>>


Марк Гранд
"Шаблоны проектирования в JAVA. Каталог популярных шаблонов проектирования, проиллюстрированных при помощи UML"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!



Выпуск 29-й
Выпуск 28-й
Выпуск 27-й
Выпуск 26-й
Выпуск 25-й
Выпуск 24-й
Выпуск 23-й
Выпуск 22-й
Выпуск 21-й
Выпуск 20-й
Выпуск 19-й
Выпуск 18-й
Выпуск 17-й
Выпуск 16-й
Выпуск 15-й
Выпуск 14-й
Выпуск 13-й
Выпуск 12-й
Выпуск 11-й
Выпуск 10-й
Выпуск 9-й
Выпуск 8-й
Выпуск 7-й
Выпуск 6-й
Выпуск 5-й
Выпуск 4-й
Выпуск 3-й
Выпуск 2-й
Выпуск 1-й