Apesar de ser um assunto nao muito atual, com bastante documentacao, eu tive muito trabalho para escrever minha primeira aplicacao com Struts 2. O site do projeto tem muito conteudo, mas nada mais pratico para comecar um projeto do zero. Em minha busca atras de tutoriais, algo que me ajudasse, achei uma quantidade razoavel de artigos/tutoriais, porem, nenhum que funcionasse efetivamente, principalmente utilizando annotations. Fiz o download de varios exemplos, uns funcionavam, outros nao, mas nao consegui fazer minha aplicacao funcionar lendo apenas um tutorial. Dada essa dificuldade, pretendo colocar em pratica o que eu aprendi, e, quem sabe, se algum desesperado precisar aprender uma aplicacao simples utilizando Struts 2, esse tutorial funcione :-)Para comecar, precisamos montar nosso ambiente, vamos precisar do Eclipse, e do TomCat plugin.Nosso projeto ficara mais ou menos assim:Agora, criamos um projeto Java, e inserimos as bibliotecas do Struts 2 (essas sao os jars necessarios para o nosso exemplo simples, precisando de mais funcionalidades, vamos precisar de mais jars - a versao que estou utilizando e a 2.1.6)commons-fileupload-1.1.1.jarcommons-logging-1.0.4.jarfreemaker-2.3.13.jarognl-2.6.11.jarstruts2-convention-plugin-2.1.6.jar (Esse jar e necessario somente se for utilizar annotations em sua aplicacao, para as configuracoes em XML, esse jar nao e necessario)struts2-core-2.1.6.jarxwork-2.1.2.jarCriamos uma pasta WEB-INF no nosso projeto, que vai conter nosso querido amigo web.xml (arquivo padrao para configuracao do struts). Nele, precisamos obrigatoriamente configurar um FilterDispatcher, o default do struts e o org.apache.struts2.dispatcher.FilterDispatcher, mas nada impede o mapeamento de outros filtros. struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* index.jsp Por que preciso de um FilterDispatcher?! Bom, ele e o responsavel por filtrar requisicoes vindas do browser! Junto com as Actions e os Interceptors, e a camada de Controller do MVC. MV O QUE?!MVC - Model-View-Controller, e o padrao implementado pelo Struts.Actions - Unidade mais basica do struts. E basicamente uma acao a ser executada pelo usuario.Interceptors - Uma das grandes novidades do Struts 2 com relacao ao Struts 1, e o controle sobre o fluxo de execucao de uma requisicao, por meio de Interceptors. Com eles podemos executar metodos antes ou depois de uma determinada Action ser executada.Chega de teoria! Tendo o web.xml configurado, e hora de cuidar da View! O Model nao e nosso foco agora, porque ele seria o Dominio da nossa aplicacao. Mas ... nao temos dominio, e so um exemplo simples! Entao vamos criar os jsp's necessarios para o nosso exemplo.index.jsp (repare que esse e o jsp configurado no welcome-file do web.xml)<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %> resposta.jsp<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %> Ok, temos a View pronta. E agora? Agora e hora de criar as Actions! No Struts 2, nao e necessario estender nenhuma classe, a Action pode ser um POJO simples, desde que devidamente anotada. Repare que o valor(value) da @Action definida no metodo a executar, e o mesmo que colocamos na action do formulario no nosso jsp. Quando subirmos nossa aplicacao, o Struts vai recuperar as classes anotadas, verificar quais sao as actions (essa verificacao e feita com o Struts procurando classes anotadas dentro do pacote action), e e assim que o jsp vai saber que acao executar.Exemplo de