LivroAction.java
package br.com.livrariaweb.controle; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import br.com.livrariaweb.entidades.Livro; import br.com.livrariaweb.servico.LivroServico; public class LivroAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LivroServico servico = new LivroServico(); ListLivroAction.javal = servico.listar(); request.setAttribute("livros", l); return mapping.findForward("listar"); } }
package br.com.livrariaweb.controle; import org.apache.struts.action.ActionForm; public class LivroForm extends ActionForm{ private static final long serialVersionUID = 1L; private Integer id; private String titulo; private String autor; private Integer nroEdicao; private Double valor; // gets e sets }LivroSalvarAction.java
package br.com.livrariaweb.controle; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import br.com.livrariaweb.entidades.Livro; import br.com.livrariaweb.servico.LivroServico; public class LivroSalvarAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Livro l = new Livro(); BeanUtils.copyProperties(l, (LivroForm) form); LivroServico s = new LivroServico(); s.salvar(l); return mapping.findForward("listar"); } }LivroAction.java
package br.com.livrariaweb.entidades; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class Livro implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private String titulo; private String autor; private Integer nroEdicao; private Double valor; // gets e sets }LivroServico.java
package br.com.livrariaweb.servico; import java.util.List; import org.hibernate.Session; import br.com.livrariaweb.entidades.Livro; import br.com.livrariaweb.util.HibernateUtil; public class LivroServico { public Livro salvar(Livro livro) { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); s.save(livro); s.getTransaction().commit(); s.close(); return livro; } @SuppressWarnings("unchecked") public ListHibernateUtil.javalistar() { Session s = HibernateUtil.getSessionFactory().openSession(); s.beginTransaction(); List l = s.createCriteria(Livro.class).list(); s.getTransaction().commit(); s.close(); return l; } }
package br.com.livrariaweb.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Criando a SessionFactory apartir no hibernate.cfg.xml sessionFactory = new AnnotationConfiguration().configure() .buildSessionFactory(); } catch (Throwable ex) { System.err.println("Não foi possivel criar a SessionFactory." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }criar.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%> <html:html> <body> <html:form action="/LivroSalvar.do" focus="titulo"> <h1>Criar Livro</h1> <p><b>Título</b><br> <html:text property="titulo"></html:text></p> <p><b>Autor</b><br> <html:text property="autor"></html:text></p> <p><b>Número da Edição</b><br> <html:text property="nroEdicao"></html:text></p> <p><b>Valor</b><br> <html:text property="valor"></html:text></p> <html:submit>Salvar</html:submit> </html:form> </body> </html:html>listar.jsp
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested"%> <html:html> <body> <h1>Livros</h1> <table border="1" cellpadding="1"> <tr> <th>Titulo</th> <th>Autor</th> <th>Valor</th> </tr> <logic:iterate id="l" name="livros"> <tr> <td><bean:write name="l" property="titulo" /></td> <td><bean:write name="l" property="autor" /></td> <td><bean:write name="l" property="valor" /></td> </tr> </logic:iterate> </table> <p><html:link href="jsp/livro/criar.jsp" >Criar Livro</html:link></p> </body> </html:html>inicio.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Aplicacao Struts</title> </head> <body> Aplicacao Struts no Ar! <br> <a href="<%=request.getContextPath()%>/Livros.do">Livros</a> </body> </html>index.jsp
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <logic:redirect forward="inicio"/>struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <!-- Definicao dos Formulario de Beans --> <form-beans> <form-bean name="livroForm" type="br.com.livrariaweb.controle.LivroForm" /> </form-beans> <!-- Definicao de Excecoes Globais --> <global-exceptions></global-exceptions> <!-- Definicao de Redirecionamento Global --> <global-forwards> <forward name="inicio" path="/Inicio.do" /> </global-forwards> <!-- Mapeamento de Acoes --> <action-mappings> <action path="/Inicio" forward="/jsp/inicio.jsp" /> <action path="/Livros" type="br.com.livrariaweb.controle.LivroAction"> <forward name="listar" path="/jsp/livro/listar.jsp" /> </action> <action path="/LivroSalvar" type="br.com.livrariaweb.controle.LivroSalvarAction" name="livroForm" scope="request" input="/jsp/livro/criar.jsp"> <forward name="listar" path="/Livros.do" redirect="true"/> </action> </action-mappings> <!-- Arquivo de Definicao de Mensagens --> <message-resources parameter="MessageResources" /> </struts-config>web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Aplicacao Struts</display-name> <!-- Configuracoes do Strtuts --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- Pagina Inicial --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Resposta ao comentário do Renan:
Renan, esse é um assunto que iremos tratar na próxima aula. Até agora as nossas classes de ação elas herdam de "Action" mas temos uma outra classe também do struts que é chamada de "DispatchAction". Essa nova classe permite implementarmos diversos métodos dentro de uma única classe de ação. A assinatura do método vai ser a mesma para o método "execute".
Por exemplo:
public final class UsuarioAction extends DispatchAction { public ActionForward novo (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // sua acao... } public ActionForward salva (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // // sua acao... } public ActionForward edita (ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // // sua acao... } }
Só tem um detalhe o mapeamento da sua action vai precisar de mais um parametro, o "parameter":
<action path="/Usuario" type="br.com.loteriaweb.controle.UsuarioAction" name="usuarioForm" scope="request" input="/jsp/usuario/cria.jsp" parameter="submit"/>
ele corresponde ao método que você vai acessar. Ou seja. no seu formulario vc precisa ter um campo hidden com nome de submit que informa a ação que será executada. Vc pode utilizar um javascript para controlar essa decisão. Não fico muito feliz quando tenho que utilizar javascript então na aula eu mostro uma dica boa.
4 comentários:
Tiago,
Estou querendo implementar na livraria web um cadastro de usuarios e surgiu uma dúvida com relacao as actions...
Para cada action(listar ou criar) vou ter que implementar uma classe?
- LivroListarAction
- LivroCriarAction
- UsuarioListarAction
- UsuarioCriarAction
Renan, estou respondendo seu dúvida no fim do post.
Tiago,
Já fiz incluir e listar usuario...
agora surgiu uma duvida em como implementar alterar e excluir...
Estou fazendo da seguinte forma:
listando os usuarios ja com os links de alterar e excluir. Nesse caso eu teria que passar o id do usuario correspondente via url?
logic:iterate id="l" name="usuarios"
tr
td bean:write name="l" property="id"/>td
td bean:write name="l" property="matricula"/>/td
td bean:write name="l" property="nome"/>/td
td bean:write name="l" property="cpf"/>/td
td bean:write name="l" property="usuario"/>/td
td a href="Alterar.do?id=?????">Alterar Usuário/a||a href="Excluir.do?id=????">Excluir Usuário/a/td
/tr
logic:iterate
Essa não é a melhor prática da vida mas seria isso sim.
Postar um comentário