8. Componentes
web.xml
Define onde as requisições devem chegar
struts-config.xml
Determina o que acontecerá com as requisições
ActionServlet
Principal componente do Controller
Action
Ações que serão executadas a cada requisição
ActionForward
Tipo de objeto retornado pela Action
JSP
Muda conforme o retorno do tipo de ActionForward
ActionForm(beans)
Responsáveis pela validação dos dados no formulário
Custom Tags
Dispensa o uso de código Java dentro das páginas JSP
10. Funcionamento ActionServlet Baseado no struts- Com base no fluxo de
Após a validação dos
config.xml o aplicação, o
carrega as ActionServlet identifica
dados, caso esteja tudo
ActionServlet chama
configurações do OK, o controller passa
qual ActionForm irá uma Action que delega a
para o próximo passo
struts-config.xml validar os dados requisição para o Model
Usuário solicita
uma URL no
O Model executa algum
browser processo e popula
alguns objetos que serão
utilizados no View
Retorno da solicitação
Após análise do
Baseado no resultado será definido
Montagem do html com mapeamento da Action, qual o mapa adotado
os objetos setados como o Controller faz um para o fluxo da aplicação
atributos forward para o JSP
apresentar os dados
12. Código Fonte
LoginForm.java
Dentro do método validate, que verifica se o nome de usuário e senha seja
digitada. Se não o erro correspondente é apresentada ao usuario.
As mensagens de erro são configurados no quivo ApplicationResource.properties.
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (userName == null || userName.length() < 1) {
errors.add("userName", newActionMessage("error.userName.required"))
;
}
if (password == null || password.length() < 1) {
errors.add("password", newActionMessage("error.password.required"))
;
}
return errors;
}
13. Código Fonte
LoginAction.java
O método de execução contém a lógica de negócios da aplicação. Aqui se o nome
de usuário e senha é a mesma então encaminha o usuário para a página de
sucesso ,caso contrário, a página de fracasso seja exibida.
public class LoginAction extends org.apache.struts.action.Action
{
private final static String SUCCESS = "success";
private final static String FAILURE = "failure";
public ActionForward execute(ActionMapping mapping, ActionForm
form, HttpServletRequest request, HttpServletResponse
response) throwsException {
LoginForm loginForm = (LoginForm) form;
if (loginForm.getUserName().equals(loginForm.getPassword())) {
return mapping.findForward(SUCCESS);
} else {
return mapping.findForward(FAILURE);
}
}
}
15. Porque utilizar?
Melhor performance em aplicações WEB
Reuso de código
Agilidade no desenvolvimento
Compatível com design patterns
Leve (5 libs e 5 packages)
Open-Source
Camadas de aplicação bem definidas e
separadas
Apache Foundation