Struts 2 - пример Hello World
Как вы уже узнали из архитектуры Struts 2, когда вы нажимаете гиперссылку или отправляете HTML-форму в веб-приложении Struts 2, входные данные собираются контроллером, который отправляется в класс Java под названием Actions. После выполнения действия результат выбирает ресурс для отображения ответа. Ресурс обычно представляет собой JSP, но он также может быть файлом PDF, электронной таблицей Excel или окном апплета Java.
Предполагая, что вы уже создали свою среду разработки. Теперь приступим к созданию нашего первогоHello World Struts2проект. Целью этого проекта является создание веб-приложения, которое собирает имя пользователя и отображает «Hello World», за которым следует имя пользователя.
Нам нужно будет создать следующие четыре компонента для любого проекта Struts 2:
Старший Нет | Компоненты и описание |
---|---|
1 | Action Создайте класс действий, который будет содержать полную бизнес-логику и управлять взаимодействием между пользователем, моделью и представлением. |
2 | Interceptors При необходимости создайте перехватчики или используйте существующие перехватчики. Это часть контроллера. |
3 | View Создайте JSP, чтобы взаимодействовать с пользователем, вводить данные и представлять окончательные сообщения. |
4 | Configuration Files Создайте файлы конфигурации, чтобы связать действие, представление и контроллеры. Это файлы struts.xml, web.xml, struts.properties. |
Я собираюсь использовать Eclipse IDE, чтобы все необходимые компоненты были созданы в рамках динамического веб-проекта. Давайте теперь начнем с создания динамического веб-проекта.
Создать динамический веб-проект
Запустите Eclipse, а затем используйте File > New > Dynamic Web Project и введите название проекта как HelloWorldStruts2 и установите остальные параметры, как показано на следующем экране -
Выберите все параметры по умолчанию на следующих экранах и, наконец, проверьте Generate Web.xml deployment descriptorвариант. Это создаст для вас динамический веб-проект в Eclipse. Теперь иди сWindows > Show View > Project Explorer, и вы увидите окно своего проекта, как показано ниже -
Теперь скопируйте следующие файлы из папки struts 2 lib C:\struts-2.2.3\lib к нашему проекту WEB-INF\libпапка. Для этого вы можете просто перетащить все следующие файлы в папку WEB-INF \ lib.
- commons-fileupload-x.y.z.jar
- commons-io-x.y.z.jar
- commons-lang-x.y.jar
- commons-logging-x.y.z.jar
- commons-logging-api-x.y.jar
- freemarker-x.y.z.jar
- javassist-.xy.z.GA
- ognl-x.y.z.jar
- struts2-core-x.y.z.jar
- xwork-core.x.y.z.jar
Создать класс действия
Класс действий является ключом к приложению Struts 2, и мы реализуем большую часть бизнес-логики в классе действий. Итак, давайте создадим java-файл HelloWorldAction.java подJava Resources > src с именем пакета com.tutorialspoint.struts2 с содержанием, приведенным ниже.
Класс Action реагирует на действие пользователя, когда пользователь щелкает URL-адрес. Один или несколько методов класса Action выполняются, и возвращается результат String. В зависимости от значения результата отображается конкретная страница JSP.
package com.tutorialspoint.struts2;
public class HelloWorldAction {
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Это очень простой класс с одним свойством, называемым «имя». У нас есть стандартные методы получения и установки для свойства «name» и метод execute, который возвращает строку «success».
Фреймворк Struts 2 создаст объект HelloWorldActionclass и вызовите выполняемый метод в ответ на действие пользователя. Вы помещаете свою бизнес-логику в этот метод, который, наконец, возвращает константу String. Другими словами, для каждого URL-адреса вам нужно будет реализовать один класс действия, и вы можете либо использовать это имя класса непосредственно в качестве имени действия, либо сопоставить его с другим именем, используя файл struts.xml, как показано ниже.
Создать представление
Нам нужен JSP для представления окончательного сообщения, эта страница будет вызываться фреймворком Struts 2, когда произойдет предопределенное действие, и это сопоставление будет определено в файле struts.xml. Итак, давайте создадим следующий файл jspHelloWorld.jspв папке WebContent в вашем проекте eclipse. Для этого щелкните правой кнопкой мыши папку WebContent в проводнике проекта и выберитеNew >JSP File.
<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value = "name"/>
</body>
</html>
Директива taglib сообщает контейнеру сервлета, что эта страница будет использовать Struts 2 теги и что этим тегам будет предшествовать s.
Тег s: property отображает значение свойства "name> класса действия", которое возвращается методом. getName() класса HelloWorldAction.
Создать главную страницу
Нам также необходимо создать index.jspв папке WebContent. Этот файл будет служить URL-адресом начального действия, где пользователь может щелкнуть, чтобы сообщить платформе Struts 2 о вызове определенного метода класса HelloWorldAction и визуализации представления HelloWorld.jsp.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action = "hello">
<label for = "name">Please enter your name</label><br/>
<input type = "text" name = "name"/>
<input type = "submit" value = "Say Hello"/>
</form>
</body>
</html>
В helloдействие, определенное в приведенном выше файле представления, будет сопоставлено с классом HelloWorldAction и его методом выполнения с использованием файла struts.xml. Когда пользователь нажимает кнопку «Отправить», это заставляет платформу Struts 2 запускать метод выполнения, определенный в классе HelloWorldAction, и на основе возвращенного значения метода будет выбрано и отображено соответствующее представление в качестве ответа.
Файлы конфигурации
Нам нужно сопоставление, чтобы связать вместе URL, класс HelloWorldAction (модель) и HelloWorld.jsp (представление). Сопоставление сообщает платформе Struts 2, какой класс будет реагировать на действие пользователя (URL-адрес), какой метод этого класса будет выполнен и какое представление визуализировать на основе результата String, возвращаемого этим методом.
Итак, давайте создадим файл с именем struts.xml. Поскольку Struts 2 требует наличия struts.xml в папке классов. Следовательно, создайте файл struts.xml в папке WebContent / WEB-INF / classes. Eclipse по умолчанию не создает папку «классы», поэтому вам нужно сделать это самостоятельно. Для этого щелкните правой кнопкой мыши папку WEB-INF в проводнике проекта и выберитеNew > Folder. Ваш struts.xml должен выглядеть так -
<?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>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
</package>
</struts>
Несколько слов о приведенном выше файле конфигурации, которые необходимо понять. Здесь мы устанавливаем постояннуюstruts.devMode к true, потому что мы работаем в среде разработки и нам нужны полезные сообщения журнала. Затем мы определяем пакет с именемhelloworld.
Создание пакета полезно, когда вы хотите сгруппировать свои действия вместе. В нашем примере мы назвали наше действие «привет», что соответствует URL-адресу/hello.action и поддерживаетсяHelloWorldAction.class. Вexecute метод HelloWorldAction.class это метод, который запускается, когда URL /hello.actionвызывается. Если результат выполнения метода возвращает "success", мы переводим пользователя вHelloWorld.jsp.
Следующим шагом будет создание web.xmlфайл, который является точкой входа для любого запроса к Struts 2. Точкой входа в приложение Struts2 будет фильтр, определенный в дескрипторе развертывания (web.xml). Следовательно, мы определим запись класса org.apache.struts2.dispatcher.FilterDispatcher в web.xml. Файл web.xml необходимо создать в папке WEB-INF в WebContent. Eclipse уже создал для вас скелетный файл web.xml, когда вы создавали проект. Итак, давайте просто изменим его следующим образом -
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
</web-app>
Мы указали index.jsp в качестве приветственного файла. Затем мы настроили фильтр Struts2 для работы по всем URL-адресам (т.е. любому URL-адресу, соответствующему шаблону / *).
Включение подробного журнала
Вы можете включить полную функциональность ведения журнала при работе со Struts 2, создав logging.properties файл под WEB-INF/classesпапка. Сохраните следующие две строки в своем файле свойств -
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
java.util.logging.ConsoleHandler
По умолчанию logging.properties указывает ConsoleHandler для маршрутизации журналирования на стандартный вывод, а также FileHandler. Пороговое значение уровня журнала обработчика можно установить с помощью SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST или ALL.
Вот и все. Мы готовы запустить наше приложение Hello World с использованием фреймворка Struts 2.
Порядок оформления заявки
Щелкните правой кнопкой мыши имя проекта и щелкните Export > WAR File для создания файла War.
Затем разверните эту WAR в каталоге веб-приложений Tomcat.
Наконец, запустите сервер Tomcat и попробуйте получить доступ к URL-адресу http://localhost:8080/HelloWorldStruts2/index.jsp. Это даст вам следующий экран -
Введите значение «Struts2» и отправьте страницу. Вы должны увидеть следующую страницу
Обратите внимание, что вы можете определить index как действие в файле struts.xml, и в этом случае вы можете вызвать страницу индекса как http://localhost:8080/HelloWorldStruts2/index.action. Проверьте ниже, как вы можете определить индекс как действие -
<?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>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "index">
<result >/index.jsp</result>
</action>
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
</package>
</struts>