Эмблема Struts2

Итак, недавно возникла необходимость написать тестовое задание, которое дали на собеседовании с использованием Struts2. По случаю того, что до этого времени о Struts знал только название (с английского это переводится «распорки», что, кстати, намекает), решил начать ознакомление с простейшего: тупо написать приложение а-ля «HelloWorld» по руководствам всяких пацанов с Интернета. Вот несколько довольно простых и исчерпывающих руководств:

http://viralpatel.net/blogs/tutorial-create-struts-2-application-eclipse-example/
http://www.mkyong.com/struts/struts-hello-world-example/
http://javatrain.wordpress.com/2011/05/05/struts2-начало/

Про www.mkyong.com хочется сказать отдельно. Очень толковый сайт, с большим количеством инфы для новичков. Да и сам mkyong запомнился своими ответами на stackoverflow.
Ну да ладно, суть записи не про это. Попробовав по этим мануалам написать своё первое приложение на Struts, внезапно получил тонны боли и унижения. Приложение никак не хотело запускаться, а в консоль tomcat выдавал длинное одеяло еггогов. Слегка по капавшись, нашёл причину сего возмутительного поведения программы, и теперь готов поделиться с вами.

1) Либы. Для своего приложения скачал последние либы Struts2, и как потом оказалось, набор этих либов для простого приложения должен быть не тот, что написан в руководствах. Привожу список либ, которые актуальны на данный момент:

  • asm-3.3.jar
  • asm-commons-3.3.jar
  • asm-tree-3.3.jar
  • commons-fileupload-1.2.2.jar
  • commons-io-2.0.1.jar
  • commons-lang3-3.1.jar
  • fremarker-2.3.19.jar
  • javassist-3.11.0.GA.jar
  • ognl-3.0.5.jar
  • struts2-core-2.3.7.jar
  • xwork-core-2.3.7.jar

Если на этот сайт, ты, о мой начинающий кодер, случайно забредёшь через лет так 8, и, внезапно, struts будет ещё кому-то нужен и не сдохнет, то список либ можно будет посмотреть в примерах программ, которые лежат в .war файлах в архиве с полным последним релизом Struts.

2) Фильтр Struts.
Если вам советуют прописать в web.xml следующие строчки:

  1. <filter>
  2. <filter-name>struts2</filter-name>
  3. <filter-class>
  4. org.apache.struts2.dispatcher.FilterDispatcher
  5. </filter-class>
  6. </filter>
  7. <filter-mapping>
  8. <filter-name>struts2</filter-name>
  9. <url-pattern>/*</url-pattern>
  10. </filter-mapping>

то не верьте, Struts2 давно уже использует другой фильтр

  • org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

Об этом сам Struts вам подскажет красивой табличкой в консольку.

На этом всё, удачи вам в ваших начинаниях, и не болеть. Но вообще советую не связываться со Struts’ем — он не нужен.

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс