tiles,или привет шаблонные странички


Привет,сегодня я расскажу о такой замечательной штуке,как tiles. Часто почти всё время при создании сайта или простого веб-приложения возникает ситуация,когда есть одинаковые элементы у станиц,и естественно лень их каждый раз переписывать да и места они могут есть порядком и читабельности совсем не добавляют. неплохо было бы сделать нейкий шаблон,в который можно было бы подставлять только изменяемые части,а те,которые всё время одинаковые — подгружать. Для этого и придумали такую замечательную вещь как tiles.

придумаем нейкий дизайн страницы:

Тэкс. Тут у нас будет какая-то менюшка с кнопками,футер и какой-то контент который будем менять при переходе по страничкам. Ну-с с дизайном будем считать определились,перейдём к яве.

Создаём новый проект и подключаем к нему maven(либо сразу создаём maven-проект,либо испьзуем тот,что есть не суть важна). Подключаем к нему зависимости struts2-core и struts2-tiles-plugin. Мне удобнее описывать сначала дизайн,по-этому я с него и начну.

Тэкс,по-скольку у нас будет нейкий шаблон,то нам надо завести страничку,которая будет ядром шаблона и в которой будут описываться элементы этого шаблона. Создадим в папке WEB-INF папку tiles в ней создадим страницу baseLayout.jsp.Это и будет наш шаблон.

baseLayout.jsp

Тег «Далее»

Рубрики:javaEE, Struts2

Немного о структуре проекта


Забыл рассказать о структуре проекта для maven. Дело в том,что при конвертации проекта(или при создании maven-проекта) maven поменяет структуру проекта(расположение папок).Это часто путает начинающих(да и самому было неудобно первое время,хотя оказалось-то — всё же логично)) ). Между прочим,такая структура — стандарт дефакто в проектах. К тому же maven некоторые элементы ищет в стандартных папках и изменить такой подход maven-а к делу конечно можн,да вот только зачем) Тем более если проект пишется не одним человеком,каждому придётся объяснять чего,как и где лежит,так что вот)

Собственно сама структура проекта:

обратить внимание надо на выделенные папки.

  • src\main\java — служит для хранения классов приложения (*.java-файлов) используемых при запуске приложения
  • src\main\resources — папка для хранения файлов,используемых приложением для работы,но не java-файлов. Тут надо размещать всяческие properties-файлы, xml-файлы и так далее
  • src\main\webapp — тут располагается всё,что связано с веб-контентом. jsp-страницы, web.xml,тайлсы,картинки,css-файлы,jQuerry-скрипты и так далее.
  • src\test — сдесь расположено всё,что будет использовать мавен для тестирования приложения
  • src\test\java — java-классы юнит-тестирования(непосредственно сами тесты)
  • src\test\recources — как и src\java\resources хранит всё что не тест) Удобно в случае если у вас например есть две базы данных,одна для непосредственно проекта,а вторая для тестирования проекта и если вдруг при тестах база отвалится,то это будет не рабочая база,и клиенты работающие в момент тестирования не потеряют данные (как-то так.мутное объяснение,но я думаю с большего понятное)
Напоминаю,что на эти папки(кроме разе что src\main\webapp) надо создать ссылки в проекте. Для этого надо зайти в свойства(properties) проекта и в пукте Build Path в закладке Source добавить эти папки.
Рубрики:maven

конвертация проекта для maven


Иногда бывает,вот есть у тебя проект,но надо к нему прикрутить maven.И вот казалось бы с такой отличной системой всё должно работать на ура,но не тут-то было.Требуется совершать магические действия и танцы с бубном часами на пролёт,пока не поймешь,что же тут не так,хотя потом всё оказывается достаточно логично и просто) Ну-с,приступим.

За основу я возьму веб-проект написанный вот в этой статье и удалю из него все используемые библиотеки (папка WebContent/WEB-INF/lib)чтобы показать пользу от maven.Он и прост и не требует глубоких познаний. Для того чтобы преобразовать проект в maven-проект,надо всего лишь подключить dependency managment tool. Для этого кликаем по проекту правой кнопкой и далее Maven->Enable dependency managment. maven немного подумает,добавит pom-файл в корень проекта и собственно преобразование можно было бы считать оконченным,если не несколько НО.

во-первых,у нас все ещё нет предварительно удалённых библиотек.Добавим их.
Для этого:

  • кликаем по проекту правой кнопкой далее maven->add Dependency.
  • В появившемся окне окне в поле ввода пишем struts2-core. maven выдаст список подходящих библиотек(в нашем случае должна остаться одна)
  • каждое поле раскрывается в список с доступными версиями библиотек.Если в своём проекте вы использовали не самую последнюю версию и боитесь,что с новой не будет работать,можно сразу выбрать нужную вам версию,либо взять последнюю и потом при необходимости просто поменять версию
  • далее правой кнопкой по проекту Run As->install

и так для каждой библиотеки.Одна из основных особенностей maven в том,что скорее всего библиотека скачается не одна,а в месте с зависимыми библиотеками. В редакторе pom в закладке Dependency Hierarhy вы можете посмотреть все подгруженные  библиотеки и список зависимостей между ними. Наш проект зависит только от одной библиотеки struts2-core которая в свою очередь зависит ещё от нескольких.

далее нам надо зайти в свойства проекта и немного подправить Build Path. П проекту правой кнопкой и в списке выбираем Properties. В появившемся окне в колонке слева выбираем Java Build Path.

  • в первой закладке Source нам надо добавить source folder. Кликаем по кнопке «Add Folder…» и в появившемся списке выбираем папки,в которых у нас лежат классы(в нашем случае это папка src)
  • в третьей закладке нам надо поменять используемую версию jre. Выбираем пункт JRE System Library[J2SE-1.5], в списке слева кликаем по кнопке Edit и в появившемся окне в списке Execution environment выбираем JavaSE-1.6(jre6) 
  • но и на этом ещё не всё. Ява будет видеть библиотеки и эклипс будет корректно подсвечивать используемые библиотеки и пакеты,но при запуске на сервере будут проблемы,так как используемые библиотеки не будут импортироваться в war-файл перед развёртыванием на сервере. Для этого нам надо отметить какие библиотеки подключать при импортировании. В четвёртой вкладке Order and Export нам достаточно пометить Maven Dependencies и JRE System Library.
  • Если и теперь не работает,то скорее всего надо указать какой именно репозиторий использовать для загрузки библиотек. В закладке Markers(находится там же де и закладка Console) развернём список Classpath Dependency Validator Message и выделив элемент нажмём Ctrl+1 (Quick Fix). Нажмём Finish

Теперь всё должно работать.Если не работает,проверяем dependencies проекта и их версии. На этом всё)

Рубрики:maven

создание вебпроекта с использованием maven


Ниже вас ждёт небольшой,кстати и не совсем полезный,(и не совсем бесполезный) урок по созданию maven-вебпроекта. Мавен мы естесственно ставили не просто так,и теперь немного попользуемся им.

Создаём новый проект(File->New Project). В поле ввода введём maven и выберем Maven project и нажмём next. Проверим галочку в поле Use default Workspace location и снова нажмём Next.

В поле Filter введём maven-archetype-webapp и снова нажмем next

в следующем окне нам надо ввести GroupId(название пакетов) и ArtifactId(название проекта) и кликнуть Finish.

создастся веб-проект,но проверить его работоспособность пока что не получится,так как надо подружить эклипс и мавен ещё немного сильнее.

кликаем по проекту правой кнопкой,выбираем появившийся пункт Maven->Add Plugin. В появившемся окне в поле для ввода вводим maven-eclipse-plugin и выбираем появившийся плагин. Плагин скачается и будет в локальном реппозитории,то есть если в следующий раз понадобится,то он не будет скачан из интернета.

maven создаёт в корне проекта дескриптор зависимостей приложения(файлик описывающий чего надо для того,чтобы проект запускался) pom.xml. Он может работать в режиме визуального редактирования и в режиме текстового редактирования как и любой xml.Откроем это файл и перейдём в режим текста.

 

теперь внутри тега <plugin> есть тег <configuration> и нам надо внутрь него дописать следующее:

Тег «Далее»

Рубрики:maven

Установка maven-плагина в eclipse


Эта статья является частичным продолжением предыдущей статьи по установке maven под windows и в ней я расскажу как установить maven в IDE eclipse.

Для установки каких либо плагинов в eclipse есть свой менеджер — eclipse marketplace. Идём в Help->Eclipse Marketplace далее из предложенных репозиториев выбираем репозиторий эклипса и кликаем next. При первом запуске IDE загрузит информацию о имеющихся плагинах,в дальнейшем будет только проверять обновления.

В строке поиска введём maven.После довольно продолжительного поиска выберем для установки Maven Integration for Eclipse и кликнем install.

Будет произведён поиск зависимостей плагина от других плагинов(опять же достаточно долго всё это у эклипса) и отображён их список. Кликаем Next.

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

Вот.Теперь плагин установлен,но эклипс поставила нам последнюю верисю 3.0.3. Мы же будем использовать 2.2.1 и нам надо объяснить свои намерения. Для этого идём в Windows->Preferences. В появившемся окне слева выбираем Maven и в раскрывающемся списке выбираем Installations.

Сейчас у нас там выбран embedded 3.0.3 который мы установили через маркет.Нажимаем Add и выбираем путь к дирректории с установленным maven. ставим галочку напротив нового-старого maven-a 2.2.1 который появился.

Теперь поскольку eclipse использует jre а maven-у надо jdk надо показать где оно лежит.Если быть более точным,то jre — это просто виртуальная машина,а jdk — это виртуальная машина и инструменты разработчика.jdk так же включает в себя виртуальную машину,ну да не будем глубоко углубляться.

Для того,чтобы эклипс использовал jdk надо подредактировать файл eclipse.ini лежащий в корне папки с эклипсом.Ниже — мой eclipse.ini. жирным шрифтом выделено то,что необходимо вставить

Тег «Далее»

Рубрики:maven

Установка maven под windows


Любой java-разработчик в процессе разработки часто встречается с проблемой подключения сторонних библиотек не существующих в стандартной сборке jdk.К тому же помимо этого часто возникает проблема совместимости версий,плагинов и так далее. Для упрощения жизни разработчикам была создана система автоматизации сборки проектов maven. Это своеобразный «упрощайзер» жизни при установке библиотек для проекта.
В этой статье я расскажу как установить maven для windows.использовать буду maven 2.2.1. С версиями выше\ниже не должно быть проблем либо сильных различий. Итак приступим.
Для начала нам надо скачать maven c официального сайта проекта и разархивировать архив в папку желательно не содержащую русские буквы.
В windows есть свои переменные для обозначения путей к особо важным библиотекам и\или программам. При вызове какой либо программы из другой программы,чтобы было понятнее часто используются эти самые переменные
в этой статье мы будем пользоваться фактически исключительно ими.Точнее мы будем их редактировать и создавать новые.
Кликаем по иконке «мой компьютер» правой кнопкой и выбираем пункт «свойства». Далее если у вас ОС win7 то в появившемся окне надо выбрать пункт «дополнительные параметры системы». Далее действия не зависят от ОС. Выбираем закладку «дополнительно» и там есть заветная кнопка «переменные среды». Появится окно:

Далее нам нужно создать системную переменную JAVA_HOME указывающую на путь к JDK (НЕ к JRE, а к JDK). Если нет jdk качаем и устанавливаем. Должно получиться что-то похожее на:
Таким же образом создаём переменную MAVEN_HOME указывающую на папку с maven-ом. Теперь надо подредактировать переменную Path. откроем её и в поле «значение переменной» поставим ; после последней записи и допишем следующее %MAVEN_HOME%/bin;

 

Здесь мы использовали раннее созданную переменную MAVEN_HOME.
Для проверки работоспособности надо запустить консоль и набрать mvn -version Должно получиться примерно следующее:

C:\>mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-07 03:16:01+0800)
Java version: 1.6.0_13
Java home: C:\Program Files\Java\jdk1.6.0_13\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7" version: "5.1" arch: "x64" Family: "windows"
Теперь maven установлен :)
Рубрики:maven

struts2.Начало.


Вечная проблема как назвать тему.Может и не красиво,не судите строго.Ладности,поехали.

Скачать библиотеки фреймворка можно по ссылке http://struts.apache.org/download.cgi Версия доступная на данный момент — 2.2.1.1. Так как нам в принципе нужна только папка lib(в ней хранятся библиотеки), то качаем Source. Распаковываем архив с фреймворком.

Получили всё что нам нужно и переходим к яве. Запускаем эклипс EE-версии и создаём новый Dynamic Web Project

В поле «Project Name» впишем название проекта. Я назову свой «FirstProject». Кликаем «Next». Попадаем на диалог подключения библиотек в проект. Он нам пока что не нужен,по этому снова кликаем «Next». Здесь Можно изменить имя корневой папки проекта и корневую папку веб-контента,но самое главное — здесь надо поставить галку «Generate web.xml deployment descriptor» если она не стоит. файл потом можно и вручную написать,но уж пускай ява сама сделает хоть немногое). Всё,теперь можно нажимать «Finish». Получили вот такую структуру проекта:

Теперь чего к чему. Когда сервер получает и\или запускает приложение,он ищет в директории WebContent/WEB-INF файл web.xml. файл web.xml — основной дескриптор(описатель) приложения.в нём прописываются все подключяемые фреймворки и их параметры а так же страница загружаемая первой. Это обычный XML-файл.

В Папке lib должны лежать библиотеки,необходимые для работы приложения. Ну и папка src для классов обработки.

тэкс.Теперь импортируем в папку lib необходимые библиотеки struts2.

Нам понадобятся:

  • commons-fileupload-1.2.1.jar
  • commons-io-1.3.2.jar
  • commons-logging-1.1.jar
  • freemarker-2.3.13.jar
  • ognl-2.6.11
  • struts2-convention-plugin-2.1.6.jar
  • struts2-core-2.1.6.jar
  • xwork-2.1.2.jar

Версии библиотек могут отличаться.

для того чтобы импортировать библиотеки нажимаем правой кнопкой мыши п опапке lib, и выбираем в появившемся меню пункт «Import». Появится окно:выбираем пункт «File system». нажимаем «Next». Появится следующее:кликаем на кнопке «Browse…» и выбираем путь к папке lib struts2.(Ту которую качали и разархивировали). В ней выбираем нужные нам библиотеки и нажимаем Finish. Библиотеки импортированы и доступны внутри приложения.

Далее необходимо объяснить серверу,что мы будем использовать struts2. Делается это в файле web.xml.

внутри тега web-app нужно написать следующее:

Тег «Далее»

Рубрики:Struts2

way-to-struts2


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

Сейчас я в очень общих чертах расскажу как всё работает и приведу базовые понятия.Для быстрого старта можно сразу перейти к следующей статье.

Фреймворк — это набор библиотек,помогающий и облегчающий разработку и объединение разных компонентов программного проекта. struts2 — одно из достаточного количества вариантов фреймворков для javaEE. Так же стоит упомянуть о таком понятии,как MVC-паттерн. Это то,с чем столкнётся любой WEB-программист. Паттерн(шаблон) — некоторое архитектурное решение приложения, которое помогает решить возникающие задачи одинаковой направленности. Наверно далеко не лучшее опрелеление,но это не тема данного топика (Это будет тема следующего топика,ибо веещь полезная и знать надо а в две-три строчки вмещать не хочется да и нет смысла)

Таки вернёмся к MVC. Расшифровывается это как Model-View-Controller.

И так. У нас есть Некоторая модель (Классы сущностей) Например класс User (Пользователь).

Представление — интерфейс имеется ввиду визуальные интерфейс.В нашем случае это будет страница в браузере.

И Контроллер — Класс,который обрабатывает запросы от вида(страницы) к приложению(логике работы). Запросами могут быть например переходы по ссылкам на страницах.

В Struts2 контроллером является класс-фильтр DispatcherServlet. Описывать его естесственно не надо.

То есть когда мы например на странице в браузере переходим по какой-нибудь ссылке типа «отобразить страницу о пользователе» на сервере класс DispatcherServlet перехватывает запрос, выполняет какие-то действия с моделью и отдаёт их для отображения на представление.

Смысл? А смысл всего этого,чтобы отделить представление(нашу страницу) от логики работы.То есть страница не знает о логике,она лишь отображает состояние модели(системы) в конкретное время. Контроллер нужен для того,чтобы провести какие-либо действия над моделью,если они необходимы,либо напрямую вызвать отображение

На этом пока всё)

Рубрики:Struts2

SpirngSourceToolSuite. Весна весной :) Начало.


Вот и весна пришла а вместе с ней до меня достучался и новый фреймворк для веб-разработки — Spring.
Собственно фреймворк уже давно не новый,но узнал я про него только недавно.Понравился он мне больше чем Struts1/2 даже и не знаю чем 🙂 Наверное тем,что для меня он проще чем перечисленные раннее версии стратса,так что вот 🙂 Небольшие уроки по этому фреймворку..

Okay,Let`s Start!

Вот что нам понадобится и где это раздобыть:

  • SpringSource Tool Suite — IDE c небольшими надстройками над эклипсом. Скачать его можно отсюда: www.springsource.com Заполняем форму регистрации, кликаем «Download Now», выбираем версию операционной системы и вариант загрузки (архив или msi-пакет для установки)
  • так же понадобится JDK(Java Development Kit)  скачать можно с сайта oracle, или отсюда:  JDK7 и JDE7 — их надо будет разархивировать(желательно в С:\Program Files\Java) и указать пути на них при установке SpringSource
  • Вместе с SpringSource будет установлен и сервер (tcserver). Можно иcпользовать его,или любой другой сервер например Tomcat. Про его установку можно почитать сдесь: установка tomcat.

После того как скачали всё необходимое,можно запускать STS:

 

теперь приступим к непосредственно сам Hello World 🙂

Создадим MVC-проект:

File -> New ->Spring Template Project

В шаблонах выберем Spring MVC Project:

нажмём Next. Спринг попросит скачать 10 мб библиотек,нажмём Yes.

Далее в поле Project Name введем HelloWorld и  в поле top-level package введём net.my.HelloWorld и нажмём финиш. Проект создался.

Запустим проект (на проекте правой кнопкой далее Run As -> Run on Server и в появившемся окне выбираем сервер) и видим в надпись Hello World!  Сервер от спринга как-то уж очень долго деплоит приложение(не говоря уже о нескольких) так что всё-таки советую поставить Tomcat..

 

Далее рассмотрим структуру проекта:

как видно,есть глобальная папка src от которой никуда не деться в яве и в которой лежит всё,что относится к проекту. Дальше есть четыре Source Folder

«src/main/java» — здесь будут располагаться основные java-классы приложения в отведённых пакетах. сейчас там есть только HomeController,но о нём позже.

«src/main/recources» — здесь должны лежать файлы со всевозможными настройками(Lнапример файл настроек логгера log4j.xml), необходимыми для работы

«src/test/java» — Папка для тестов JUnit.

«src/test/recources» — Папка ресурсов юнит-тестов.

 

далее рассмотрим содержимое папки src ->main ->webapp

в папке resources должны лежать файлы настроек страниц(css, JavaScript, картинки и т.д.)

папка WEB-INF содержит фалы-дескрипторы (описатели) развёртывания приложения и сами jsp-страницы. Пройдёмся по каждому из фалов.

  • /web.xml — главный дескриптор приложения.Этот файл читается первым при запуске и на основе его сервер читает остальные файлы настроек.
  • /spring/root-context.xml — Контекст всего приложения. Бины, описанные здесь, будут доступны всем сервлетам и фильтрам.
  • /spring/appServlet/servlet-context.xml — Определяет настройки одного сервлета и бины, которые доступны только этому сервлету
  • /spring/appServlet/controllers.xml — Файл с настройками контроллеров для данного сервлета, описывает пути к классу-контроллеру приложения.

папка views содержит jsp-страницы для отображения приложением.

 

теперь вернёмся к классу HomeController.java

Класс помечен аннотацией @Controller.Аннотация используется для преобразования любого java-класса в класс-контроллер,описывающий по каким url можно будет ходить на сайте и какие страничк ипри этом отображать.

В классе описан логер и пока что единственный метод public String home(). Метод помечен аннотацией @RequestMapping — используется для маппинга url-адреса запроса на указанный метод или класс. В данном случае при обращении по url localhost:8080/HelloWorld/ призойдёт вызов этого метода,который вернёт сервлету строку home к которой будет добавлен префикс и суффикс описанные в файле /spring/appServlet/servlet-context.xml . В данном случае сервлет преобразует строку home в строку /WEB-INF/views/home.jsp и будет искать файл по полученному пути и имени.

 

ну вот пожалуй и всё для первого знакомства)

Рубрики:spring

apache/struts2.Установка.


Недавно начал изучение фреймворка struts2 на курсах в универе.Вот решил начать писать блог для вынесения полученных знаний на всеобщее обозрение ну и с целью помощи в освоении сего дела так как русских статей по struts маловато. И так приступим. Для начала начало) Нам  понадобится:

  • javaEE.  EE-вариант эклипса  в котором я буду работать можно скачать отсюда: eclipse.org/downloads   В меню справа выбираем версию ОС -> получаем список зеркал -> качаем -> распаковываем
  • Далее нам понадобится локальный сервер.В моём случае это Apache Tomcat. Качаем отсюда желательно 6 версию http://tomcat.apache.org/ . Можно скачать только ядро сервера,затем распаковать и использовать по назначению,а можно скачать msi-пакет и установить tomcat как службу windows. Впроцессе установки томкат спросит на какой порт ему ставиться и имя пользователя и пароль для доступа в менеджер приложений
  • Ну и конечно нам понадобится сам struts. качаем вот отсюда пакет с библиотеками.

Теперь  скачно всё необходимое и можно приступить к установке и запуску первого приложения) Запускаем эклипс.

Часть первая: Установка сервера.Теперь нам нужно подключить сервер. Идём в Window -> preferences там идём Server->Runtime Environments:

Нажимаем Add. В появившемся меню выбираем  Apache->Apache Tomcat v7.0:

нажимаем «next». Теперь надо указать дирректорию в которой распологается сервер. Нажимаем «Browse…» и указывем путь к корневой дирректории сервера:

нажимаем Finish.теперь сервер успешно добавлен: Теперь заведём его локальную версию. Идём в «File->New->Other…» ; выбираем здесь «Server->Server» нажимаем «Next»:

Здесь выбираем server type: Tomcat v7.0 Server server hosts name: <оставляем localhost> servername <имя сервера> нажимаем «Finish»:

По умолчанию сервер занимает для прослушивания порт 8080, но этот порт может быть занят(его по умолчанию использует skype старых версий либо,если всё-таки качали msi-пакет и установили как службу,то велика вероятность,что вы оставили там этот порт), да и вообще порт часто используемый лучше поменять порт на 8082 например.для этого кликаем по серверу два раза правой мышкой. в полученном окне в таблице «Port Name» меняем значение порта HTTP/1.1  на 8082:

Значения остальных портов нас пока что не интересуют. Теперь можно запускать сервер. Если всё прошло успешно,то в панели состояния серверов наш сервер должен быть с пометкой [Started,Synchronized]

теперь введя в любом браузере адрес localhost:8082 вы должны увидеть 404-страницу от томката,но не обычную 404 от вашего браузера c надписью «невозможно найти удалённый сервер».
Теперь Сервер Запущен.

Рубрики:Apache