 LivroAction.java
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();
 List l = servico.listar();
 request.setAttribute("livros", l);
 return mapping.findForward("listar");
}
}
 
LivroAction.java
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 List listar() {
 Session s = HibernateUtil.getSessionFactory().openSession();
 s.beginTransaction();
 List l = s.createCriteria(Livro.class).list();
 s.getTransaction().commit();
 s.close();
 return l;
}
}
  
HibernateUtil.java
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