1. Въведение
Apache Struts 2 е базирана на MVC рамка за разработване на корпоративни Java уеб приложения. Това е пълно пренаписване на оригиналната рамка на Struts. Притежава API с отворен код и богат набор от функции.
В този урок ще имаме въведение за начинаещи в различни основни компоненти на структурата Struts2. Освен това ще покажем как да ги използваме.
2. Общ преглед на Struts 2 Framework
Някои от функциите на Struts 2 са:
- Действия, базирани на POJO (обикновени стари Java Обекти)
- поддръжка на приставки за REST, AJAX, Hibernate, Spring и др
- конвенция за конфигурация
- поддръжка на различни технологии на ниво изглед
- лекота на профилиране и отстраняване на грешки
2.1. Различни компоненти на Struts2
Struts2 е базирана на MVC рамка, така че следните три компонента ще присъстват във всички приложения на Struts2:
- Клас на действие - който е POJO клас (POJO означава, че не е част от йерархия на типове и може да се използва като самостоятелен клас); ние ще приложим нашата бизнес логика тук
- Контролер - в Struts2, HTTP филтрите се използват като контролери; те основно изпълняват задачи като прихващане и валидиране на заявки / отговори
- Изглед - използва се за представяне на обработени данни; обикновено е JSP файл
3. Проектиране на нашето приложение
Нека да продължим с разработването на нашето уеб приложение. Това е приложение, при което потребителят избира определена марка автомобил и се поздравява от персонализирано съобщение.
3.1. Зависимости на Maven
Нека добавим следните записи към pom.xml :
org.apache.struts struts2-core 2.5.10 org.apache.struts struts2-junit-plugin 2.5.10 org.apache.struts struts2-convention-plugin 2.5.10
Най-новата версия на зависимостите можете да намерите тук.
3.2. Бизнес логика
Нека създадем клас на действие CarAction, който връща съобщение за определена входна стойност. В CarAction има две полета - carName (използван за съхраняване на входа от потребителя) и carMessage (използван за съхраняване на потребителски съобщението, за да бъде показан):
public class CarAction { private String carName; private String carMessage; private CarMessageService carMessageService = new CarMessageService(); public String execute() { this.setCarMessage(this.carMessageService.getMessage(carName)); return "success"; } // getters and setters }
Класът CarAction използва CarMessageService, който предоставя персонализирано съобщение за марка Автомобил :
public class CarMessageService { public String getMessage(String carName) { if (carName.equalsIgnoreCase("ferrari")){ return "Ferrari Fan!"; } else if (carName.equalsIgnoreCase("bmw")){ return "BMW Fan!"; } else { return "please choose ferrari Or bmw"; } } }
3.3. Приемане на потребителски вход
Нека добавим JSP, който е входна точка в нашето приложение. Това е съдържание на файла input.jsp :
Welcome to Baeldung Struts 2 app
Which car do you like !!
Please choose ferrari or bmw
Маркерът < form > определя действието (в нашия случай това е HTTP URI, към който трябва да бъде изпратена GET заявка).
3.4. Частта на контролера
StrutsPrepareAndExecuteFilter е контролерът, който ще прихване всички входящи заявки. Трябва да регистрираме следния филтър в web.xml:
struts2 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter struts2 /*
StrutsPrepareAndExecuteFilter ще филтрира всяка входяща заявка, тъй като ние посочваме URL съвпадение на заместващ символ / *
3.5. Конфигуриране на приложението
Нека добавим следните пояснения към нашия екшън клас Car :
@Namespace("/tutorial") @Action("/car") @Result(name = "success", location = "/result.jsp")
Нека разберем логиката на тези пояснения. @ Името на пространството се използва за логическо разделяне на URI на заявката за различни класове действия; трябва да включим тази стойност в нашата заявка.
Освен това @Action казва действителната крайна точка на URI на заявката, която ще удари нашия клас Action . Класът на действие се консултира с CarMessageService и инициализира стойността на друга членска променлива carMessage . След като методът execute () връща стойност, "успех" в нашия случай, той съответства на тази стойност, за да извика result.jsp
И накрая, @Result има два параметъра. Първият, име, указва стойността, която нашият клас Action ще върне; тази стойност се връща от метода execute () на клас Action . Това е името на метода по подразбиране, което ще бъде изпълнено .
Втората част, местоположение, казва кой е файлът, към който трябва да се обърне внимание, след като методът execute () е върнал стойност. Тук посочваме, че когато execute () връща String със стойност „ успех “, трябва да препратим заявката към result.jsp .
Същата конфигурация може да бъде постигната чрез предоставяне на XML конфигурационен файл:
/result.jsp
3.6. Гледката
Това е съдържанието на result.jsp, което ще се използва за представяне на съобщението на потребителя:
Hello Baeldung User
You are a
Тук има две важни неща, които трябва да забележите:
- вние импортираме библиотека struts-tags
- вние използваме библиотека struts -tags, за да отпечатаме стойността на свойството carMessage
4. Стартиране на приложението
Това уеб приложение може да се изпълнява във всеки уеб контейнер, например в Apache Tomcat. Това са необходимите стъпки за изпълнението му:
- След внедряването на уеб приложението отворете браузъра и отворете следния URL: //www.localhost.com:8080/MyStrutsApp/input.jsp
- Изберете една от двете опции и изпратете заявката
- Ще бъдете препратени към страницата result.jsp с персонализирано съобщение въз основа на избраната опция за въвеждане
5. Заключение
В този урок разгледахме ръководство стъпка по стъпка как да създадем първото си уеб приложение Struts2. Покрихме различни аспекти, свързани с MVC в домейна Struts2 и показахме как да ги съберем за разработка.
Както винаги, този урок може да бъде намерен в Github като проект на Maven.