Главная > Struts2 > struts2.Начало.

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 нужно написать следующее:

        <filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>


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

создадим её там. Правой кнопкой по папке -> New -> JSP File   . В поле «File Name» введем index.jsp и кликнем Finish. Откроется редактор кода JSP-страниц. JSP-страница представляет собой ту же HTML-страницу,с той лишь разницей,что в ней можно писать java-код и обрабатывать специфические объекты\переменные\теги о чём свидетельствует:

Напишем простенькое приложение суть которого, прочитать имя пользователя введённое в TextField и в зависимости от результата перейти на нужную страницу
для того,чтобы работать со struts, надо в jsp подключить тэги стратса. в заголовке напишем следующее:
<%@taglib uri=»/struts-tags» prefix=»s» %>
Этим мы подключаем библиотеку тэгов struts-tags и указываем,что все тэги которые будут иметь префикс s будут обрабатываться стратсем
далее в body нам надо завести форму,к которой будет привязан action и внутри формы описать textfield и кнопку отправки.Так и сделаем.Внутри body пишем:


<s:form action=»readFormAction»>
Enter Login: <s:textfield name=»userName»/>
<s:submit value=»Check» />
</s:form>


здесь мы завели action «readFormAction», поле textFileld и присвоили ему имя userName и завели кнопку отправки.
Так заведём класс,который будет обрабатывать эту форму.в папке src создаём новый package и назовём его my.project.action и объявим внутри него класс UserLinkAction. Классы обрабатывающие экшены должны лежать в пакете с окончанием action и заканчиваться на LinkAction. Далее внутри класса опишем приватное поле userName и сгенерируем для него геттер и сеттер(сочетание клавиш Alt+S+R). Так же создадим метод readForm в котором будем обрабатывать форму.
Листинг класса:

package my.project.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserLinkAction extends ActionSupport {

	private static final long serialVersionUID = -7189960659827964206L;
	private String userName;

	//метод обработки введённой информации
	public String readForm()	{
		if(getUserName().equals("admin"))
			return "success";
		else
			return "error";
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserName() {
		return userName;
	}

}


теперь,для того,чтобы фреймворк мог обработать action, нам надо завести файл конфигурации. Называться он должен struts.xml и лежать в корне папки src.
для начала содержимое файла:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="default" extends="struts-default">
		<action name="*Action" method="{1}" class="my.project.action.UserLinkAction">
			<result name="success">/success.jsp</result>
			<result name="error">/error.jsp</result>
		</action>
	</package>
</struts>


это простой XML-файл с подключенным DOCTYPE. Корневой элемент <struts> описывает пакет работы приложения и внутри пакета описывает action-методы и варианты результата.
Рассмотрим элемент action подробнее. Рассмотрим атрибуты:
class=»my.project.action.UserLinkAction» — какой класс приложения содержит методы обработки данного экшена.
name=»*Action» — имя action который будет вызываться из JSP-страницы. *Action означает,что имя экшена может быть любым,но заканчиваться обязано на Action. в нашем случае имя экшена — readFormAction.
method = «{1}» — метод,который обрабатывает экшен. «{1}» означает,что класс UserLinkAction должен содержать метод,который имеет имя как строка вместо звёзочки. То есть мы имеем экшн readFormAction,следовательно метод в классе должен называться readForm.

внутри элемента <action> мы видим два элемента <result>. Они описывают результат отработки методов экшена. То есть в классе мы вернули строку success,следовательно отработает result с именем success и вызовет страницу succsess.jsp, в противном случае мы возвращаем строку error и теперь будет работать result с таким именем и отправит нас на страницу error.jsp.
Внутри элемента <result> прописан полный путь к вызываемой странице. он у нас равен «/» следовательно страницы success.jsp и error.jsp должны лежать в корне WEB-проекта коим является папка WebContent. Там и создадим их.
Для проверки на странице success.jsp впишем в body <h2>Holaaa!! Admin comes!</h2> , a на error.jsp — <h2>Ouch!! You are not admin!</h2>
теперь,чтобы запустить проект,надо на папке с названием проекта щёлкнуть Правой кнопкой, выбрать пункт Run As -> Run On Server
появится окно с выбором сервера:
для того,чтобы ява больше не спрашивала,на каком сервере нам запускать ставим галку «Always yse this server when running this project» и жмём финиш. Ява придеплоит приложение на сервер и запустит его.
далее покажется страница:

введём имя пользователя и перейдём на страницу в зависимости от введённой информации:

Ну вот вобщем-то и всё:)

Рубрики:Struts2
  1. 05.04.2013 в 11:58

    Reblogged this on progerblog.

  1. No trackbacks yet.

Оставьте комментарий