Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать




Скачать 56.84 Kb.
НазваниеПрограммирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать
Дата публикации19.03.2013
Размер56.84 Kb.
ТипДокументы
shkolnie.ru > Военное дело > Документы
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования

Вступительное слово. С чем мы будем работать.

Это первая вводная статья о разработке веб-приложений на Java. Цикл статей подразумевает что читатель уже немного знаком с программированием на Java, Groovy, Scala, Jython, либо любом другом языке, который поддерживается Java Virtual Machine, хотя бы на уровне общего понятия что такое классы и способным написать хотя бы нечто вроде Hello World.

В этой статье мы немного коснёмся серверов для Java приложений а так же рассмотрим пример простейшего приложения-счётчика хитов страницы.

Первое, что хочу сказать, выберите правильную операционную систему. FreeBSD и прочие BSD (кроме, пожалуй, Mac OS X) сразу отпадают, так как Java приложения на них до сих пор работают крайне нестабильно. Наилучшими будут Linux, Solaris либо Windows.

Основная JVM (Java Virtual Machine) которая сейчас используется – Sun Java 6. Java 5 так же до сих пор популярна однако создавать под нее новые приложения уже не целесообразно. Java 7 в данный момент находится в разработке и будет выпущена уже практически полностью Open Source (Sun Microsystems недавно открыл код своей Java VM). Так же существуют менее популярные JVM от Hewlett Packard, IBM, использующиеся в узком кругу задач, кроме того еще существует (однако практически не поддерживается) JVM от Microsoft.

^ Выбираем сервер приложений для Java

Сервер приложений – система програмного обеспечения для запуска JVM и выполнения в ней пользовательских приложений. Практически всегда сервер приложений является так же веб-сервером, что позволяет использовать его как полноценную систему для веб-проекта, по крайней мере пока проект небольшой.

Наиболее распространённый сервер приложений для Java – Apache Tomcat (tomcat.apache.org). Однако мы будем рассматривать все примеры на другом, менее распространённом, но гораздо более функциональном сервере – Caucho Resin (www.caucho.com) Существует как платная так и бесплатная версия Resin, бесплатная вполне подходит для начала работы. О таких особенностях платной версии как автоматический мониторинг, создание кластеров, поддержку PHP и прочее – читайте в следующих номерах AWO Magazine.

^ Выбираем IDE

Существует множество IDE (средств разработок) для Java. Первое, чего не стоит пугаться – практически все они написаны на самой Java. В первое время это создаёт неудобство однако со временем приходит понимание что такой подход гораздо более мощный и функциональный чем написание IDE для Java скажем на Visual C++. Кроме IDE конечно же можно пользоваться любимым редактором вроде VIM или UltraEdit и компилировать приложения вручную из командной строчки. Наиболее подходящими IDE для разработки веб-приложений, на мой взгляд, являются бесплатный Eclipse (www.eclipse.org) и коммерческая Jetbrains IDEA. Плюсы у каждой среды свои. Eclipse бесплатный и имеет множество плагинов. Под IDEA плагинов поменьше однако сама среда разработки весьма хорошо сделана и действительно очень ускоряет работу и стоит своих денег. Мы будем рассматривать примеры исходя из особенностей и структуры приложений, принятых в IDEA, однако эти отличия в большинстве случаев с другими IDE весьма незначительны. IDEA и Eclipse легко интегрируются как в Tomcat так и в Resin, позволяя делать загркузку, выгрузку приложений а так же отладку.

w:\work\articlesawo\java-1.png

^ Рис. 1. Интерфейс IDEA 7

WAR или не WAR?

WAR – аббривеатура от Web Archive. Представляет собой ZIP-архив веб-приложения, готового или почти готового к запуску на сервере приложений. Фактически является аналогом JAR для Web. Разработка приложений, функционирующих как WAR, требует некоторых особенностей: конфигурационные файлы (и даже путь к ним) обычно являются уникальными для каждой операционной системы а иногда и для каждого сервера. Приложение намного трудней а иногда практически нереально обновлять по частям – WAR подразумевает чёткий релиз например «моя TDS версии 1.0» и пока не будет «TDS версии 1.1», никаких промежуточных патчей в несколько файлов не планируется. К правильному созданию WAR мы вернемся в следующих статьях, в данный момент же будем просто разрабатывать приложение «как обычно», т.е. загружая в сервер приложений просто набор файлов и каталогов.

^ Создаём наше первое приложение

В этой статье мы коснёмся одного из самых простых способов веб-программирования на Java – с помощью Java Servlets.

Стуктура приложения на диске будет такой:

src – исходные тексты на Java или Groovy (я буду использовать в примерах только эти два языка, в основном Java)
web – собственно корневой каталог нашего веб-приложения

остальные каталоги верхнеого уровня обычно являются промежуточными и как их назовете вы или IDE, особой разницы имеет. Если использовали IDEA – данные папки будут созданы автоматически, всё что требуется – при создании нового проекта указать что это проект под web.

w:\work\articlesawo\java-2.png

^ Рис. 2. IDEA new project wizard. Всё что нужно для начала работы – поставить одну галочку.

В каталоге web обычно есть папка WEB-INF. В этой папке хранятся сами Java-приложения (WEB-INF/classes), дополнительные библиотеки (WEB-INF/lib) а так же файлы конфигурации. Данная папка автоматически после создания является недоступна для веб-клиентов и сюда записывается всё что нужно скрыть от глаз пользователей, любящих «хакать» или просто исследовать сервера перебором адресов.

Основной файл конфигурации приложения – web/WEB-INF/web.xml. Как вы наверное уже поняли по названию, конфигурация хранится в виде XML-документа.

По умолчанию документ имеет вид типа


http://java.sun.com/xml/ns/javaee xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">




web-app>

Всё что нам нужно сделать для начала работы, это прописать несколько тегов – servlet и servlet-mapping. Тег servlet связывает Java Servlet с классом нашего приложения. Тег servlet-mapping связывает сервлет с определенным веб-адресом. Пропишем сервлеты:


loader
servletdemo.Loader
1


counter
servletdemo.Counter


Обратите внимание на первый сервлет. Он имеет параметр load-on-startup, что указывает серверу приложений автоматически запустить функцию servletdemo.Loader.init() непосредственно при старте приложений. Практически все серьезные приложения обязательно проводят некоторую инициализацию – подгружают данные из базы данных, приводят в порядок глобальные переменные. Рекомендуется так же всегда вводить свой класс-Loader, даже если он пока не используется – просто потому что в последствии он скорее всего обязательно понадобится. Теперь свяжем сервлеты с веб-адресами.

Мы хотим показывать веб-пользователю только результаты выполнения сервлета counter. Потому конфигруация будет такой.


counter
/counter


Это указывает серверу приложений для всех запросов по адресу mysite.com/counter вызывать сервлет counter, а точнее использовать класс servletdemo.Counter.

В качестве шаблона адреса так же можно прописать wildcard, например /counter/*, в этом случае сервлет counter отрабатывал бы для запросов в виде mysite.com/counter/1, /counter/abc и тд.

Прежде чем начать писать сервлеты, создадим статический класс для хранения данных нашего счётчика. Статические классы в Java создаются один раз при старте приложения и данные в них остаются до его остановки. Это позволяет не использовать для многих часто выполняемых операций внешние хранилища, такие как файлы или базы данных.

Создадим класс servletdemo.Data, файл src/servletdemo/Data.java

package servletdemo;

public class Data {

private static Integer counter;

public static void setCounter(Integer value) { this.counter = value; }

public static Integer getCounter() { return this.counter; }

}

Перейдём созданию сервлетов. Начнём с Loader. Создаём файл src/servletdemo/Loader.java:

package servletdemo;

// import класса Data не нужен поскольку мы находимся с ним в одной папке.
// Остальные import'ы я пропускаю, поскольку любое современное IDE
// импортирует библиотеки самостоятельно.

public class Loader extends HttpServlet {

public void init() {

// в этом примере мы не будем использовать ни файлы ни базы данных
// просто присвоим нашему счётчику значение 0
Data.setCounter(0);
}

}

При старте веб-приложения счётчику посещений будет автоматически присвоено значение 0. Создадим класс servletdemo.Counter, который по сути является сервлетом-счётчиком. У сервлетов есть три основных фукнции – init, вызывается при первом старте, в случае если у сервлета есть параметр load-on-startup, вызывается автоматически при старте приложения. doGet – выполняется при получении GET и doPost – при получении POST-запроса от пользователя. В нашем сервлете будут обрабатываться только методы GET.

package servletdemo;

public class Counter extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse resp) {
// наша функция обработки GET-запросов автоматически получает два крайне
// важных объекта – req и resp. Первый используется для анализа запроса
// (браузер, адрес пользователя, параметры запроса), второй – для формирования
// веб-страницы, которая будет выдана пользователю
Integer counter = Data.getCounter(); // получаем текущее значение счётчика
counter = counter + 1; // увеличиваем значение на 1
Data.setCounter(counter); // записываем в глобальную переменную новые данные
PrintWriter out = resp.getWriter();
out.write(“counter value: “ + counter.toString() + “”);
}

}

Наше приложение готово. Можем его откомпилировать в байт-код и запустить. Для сервера приложений интересна только папка web, на нее и устанавливаем корневой каталог. Если мы использовали IDE, откомпилированные классы автоматически будут размещены в папке WEB-INF/classes.

Важное замечание: при изменении файлов классов веб-сервер не читает новые версии моментально. Это зависит от опций конфигурации – как часто следить за обновлениями. В случае обновления статичеких классов происходит полный перезапуск веб-приложения.

В следующих статьях мы рассмотрим другую популярную технологию построения веб-приложений – JSP, коснёмся работы с базами данных а так же работы с движком шаблонов для технологии Servlets – FreeMarker.

Похожие:

Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconКурс лекций: Разработка Web приложений с мощным пользовательским...
Ьные Web разработчики, желающие переводить свои приложения на современную, динамическую Web платформу. В курсе особое внимание уделяется...
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconКурс лекций: jv 0 Основы языка Java. Среда програмирования Jdeveloper
Аудитория: начинающие разработчики, которые будут использовать язык разработки приложений Java
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconКурс лекций: Создание и промышленная Эксплуатация Корпоративного...
Аудитория: Администраторы сервера приложений (ias 10g), разработчики корпоративного портала, администраторы Web приложений, курс...
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconОсновы объектно-ориентированного программирования
Все основанные на объектах языки (С#, Java, С++, Smalltalk, Visual Basic и т п.) должны отвечать трем основным принципам объектно-ориентированного...
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconВступление
Основная цель спецификаций – обеспечение мультиплатформенности и масштабируемости приложений. Технологии Java ee поддерживаются многими...
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать icon«Практикум решения задач на эвм»
Изучение курса опирается на полный цикл базовых знаний по дисциплинам «Основы программирования» и «Программирование», включающий...
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconОтчет по тестированию веб-приложений «Couport»
Отчет по тестированию веб-приложений «Couport» для социальных сетей Вконтакте и Facebook
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconГолоса no. 1 Ю. Ким. Вступительное слово
Ю. Ким. Вступительное слово о стихах Бориса Рыжего и их музыкальных интерпретациях
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconВопросы, рассматриваемые в курсе: Инсталляция и конфигурация среды...
Курс: Разработка корпоративных Java ee приложений для стандартных серверов приложений (5 дней – 40 академических часов)
Программирование Web-приложений на Java. Часть первая. Основы веб-программирования Вступительное слово. С чем мы будем работать iconКариев Ч. Разработка Windows-приложений на основе Visual C# : учебное пособие
Средства создания приложений для Интернета. Средства создания трехуровневых приложений в Delphi. Реализация технологии ado в Delphi....
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
shkolnie.ru
Главная страница