Grupo de Pesquisa em ENGENHARIA DE SOFTWARE Struts Professores: Danillo Leal Belmonte Mônica H. Pietruchinski Simone de Almeida Simone Nasser Matos Tarcízio Alexandre Bini Alunos: Karléia Braun Marcos Ferreira Vosgerau Rafael Hornung Campus de Ponta Grossa - Paraná 1 Historico Maior parte desenvolvida em maio de 2000, onde tinha uma equipe de 30 desenvolvedores. O responsável pelo projeto era Craig R. MacClanahan Doado a fundação Apache (Apache Software Foundation) Campus de Ponta Grossa - Paraná 2 Framework Jakarta Struts O Struts é um framework para web que se tornou padrão na comunidade JEE (Java Enterprise Edition). O Struts provê uma implementação do modelo MVC-2 para construções de aplicações web. Campus de Ponta Grossa - Paraná 3 Funcionamento Campus de Ponta Grossa - Paraná 4 Descrição das Etapas 1. Cada solicitação HTTP tem que ser respondida neste mesmo protocolo. Desta forma, inicia-se uma aplicação que utiliza o Struts. Esta solicitação normalmente é definida como requisicao.do, que é um nome lógico para a requisição do usuário. 2. A solicitação requisicao.do é mapeada no arquivo struts-config.xml. Neste arquivo estão todas as definições do controlador do framework. O arquivo é então lido por um ActionServlet (que fará efetivamente o papel do controlador da aplicação) na inicialização da aplicação criando então um banco de objetos com o arquivo de configuração. No arquivo de configuração são definidos os Actions (requisições dos usuários) para cada solicitação. 3. O ActionServlet (que faz o papel do controlador da aplicação), define o Action correspondente para a solicitação. Um Action pode validar a entrada de dados e acessar a camada de negócios para recuperar as informações nos bancos de dados e outros serviços de dados. Campus de Ponta Grossa - Paraná 5 Descrição das Etapas 4. A requisição HTTP pode ser feita também através de um formulário HTML. Em vez de fazer com que cada Action retire os valores do campo da solicitação, o ActionServlet coloca a entrada em um JavaBean. Estes JavaBeans são definidos como FormBeans no Struts e estendem a classe org.apache.struts.action.ActionForm (os Actions e FormBeans serão abordados com maiores detalhes no decorrer do artigo). 5. O Action pode acessar o FormBean, efetuar qualquer operação e armazenar o resultado em um ResultBean. 6. O Action interage com a camada de negócio onde uma base de dados poderá ser atualizada. Campus de Ponta Grossa - Paraná 6 Exemplo utilizando o Struts O exemplo a ser demonstrado será de um cadastro de Funcionários O código não esta completo, será demonstrada apenas as principais funções. Campus de Ponta Grossa - Paraná 7 FuncionarioForm.java package org.fun.form; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.*; public final class funcionarioForm extends ActionForm { private String codigo = null; private String nome = null; private String telefone = null; private String cidade = null; private String estado = null; private String rua = null; private String bairro = null; private String complemento = null; private String cargo = null; /** Criação de todos os Sets e Gets*/ public void reset(ActionMapping arg0, HttpServletRequest arg1) { codigo = null; nome = null; telefone = null; cidade = null; estado = null; rua = null; bairro = null; complemento = null; cargo = null; Campus } } de Ponta Grossa - Paraná 8 FuncionarioAction.java package org.fun.action; import javax.servlet.http.*; import org.apache.struts.action.*; import org.fun.form.funcionarioForm; public final class funcionarioAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { funcionarioForm funForm = (funcionarioForm) form; // get the form bean // and take the last name value String codigo = funForm.getCodigo(); String nome = funForm.getNome(); String telefone =funForm.getTelefone(); String cidade = funForm.getCidade(); String estado = funForm.getEstado(); String rua = funForm.getRua(); String bairro = funForm.getBairro(); String complemento = funForm.getComplemento(); String cargo = funForm.getCargo(); return (mapping.findForward("success")); } } Campus de Ponta Grossa - Paraná 9 MessageResources.properties # -- mensagem inicio -inicio.titulo= Funcionarios inicio.cadFun=Cadastrar Funcionario inicio.cadFun2=Aqui voce pode estar cadastrando os seus Funcionarios # -- campos -campo.codigo=Codigo: campo.nome=Nome: campo.telefone=Telefone: campo.cidade=Cidade: campo.estado=Estado: campo.rua=Rua: campo.bairro=Bairro: campo.complemento=Complemento: campo.cargo=Cargo: # -- nomes dos botões -botao.cadastrar=Cadastrar botao.excluir=Excluir botao.pesquisar=Pesquisar botao.editar=Alterar botao.reset=Limpar Campus de Ponta Grossa - Paraná 10 Struts-config.xml <!-- ======================================== Form Bean Definitions --> <form-beans> <form-bean name="cadastrarForm" type="org.fun.form.funcionarioForm"> <form-property name="codigo" type="java.lang.String" /> <form-property name="nome" type="java.lang.String" /> </form-bean> <!-- ======================================== Action --> </form-beans> <action path="/cadastrarFuncionario" type="org.fun.action.funcionarioAction" name="cadastrarForm" scope="request" input="/pages/funcionario/cadastrar.jsp" > <forward name="success" path="/pages/funcionario/cadastrar.jsp" /> <forward name="failure" path="/pages/funcionario/cadastrar.jsp" /> </action> <!-- ================================ Message Resources Definitions --> <message-resources parameter="org.fun.MessageResources.MessageResources" /> Campus de Ponta Grossa - Paraná 11 Cadastro.jsp <%@ page language="java" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <html> <head> <title><bean:message key="inicio.titulo"/></title> </head> <body> <h1><center><bean:message key="inicio.cadFun"/></center></h1> <hr> <html:form action="cadastrarFuncionario"> <table height="450" width="350" border=0"> <tr> <td><bean:message key="campo.codigo"/></td> <td><html:text property="codigo" size="30"/></td> </tr> <tr> <td><bean:message key="campo.nome"/></td> <td><html:text property="nome" size="30"/></td> </tr> <td align="center"><html:submit ><bean:message key="botao.cadastrar"/></html:submit></td> <td align="center"><html:reset ><bean:message key="botao.reset"/></html:reset></td> </tr> </table> </html:form> <a href="http://127.0.0.1:8080/Cadastro-Struts/index.jsp">Voltar Pagina Principal</a> </body> </html> Campus de Ponta Grossa - Paraná 12