GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Gravar, Alterar, Excluir, Localizar no mesmo form usando Struts


#1

Galera estou com mais um dúvida!!!!!!!!!!

Estou usando Struts, como eu posso fazer para gravar, alterar, excluir e localizar tudo em um só formulário?

Alguém pode me ajudar?


#2

Cara esse artigo é o que eu mais leio, hehehee

Mais é uma action para cada ação, teria como fazer tudo em uma action só?


#3

você acha melhor fazer tudo separado?

mas da mais serviço!!!!

Só existe estas duas formas?


#4

Agora sim você me entendeu, hehehe, valeu cara vou fazer aqui depois coloco a solução pro pessoal


#5

cara fui testar o seu exemplo mais nao funcionou poderia ser mais objetivo!!!

meu jsp e esse

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>












            <tr>
                <td><bean:message key="nome"/></td>
                <td><label>
                    <html:text property="nome" size="50" /><html:errors property="nome"/>
                 </label></td>
            </tr>

            <tr>
                <td><bean:message key="data_nascimento"/></td>
                <td><label>
                    <html:text property="data_nascimento" size="30" />
                 </label></td>
            </tr>   

            <tr>
                <td><bean:message key="endereco"/></td>
                 <td><label>
                    <html:text property="endereco" size="50" /><html:errors property="endereco"/>
                </label></td>
             </tr>

            <tr>
                 <td><bean:message key="bairro"/></td>
                <td><label>
                    <html:text property="bairro" /><html:errors property="bairro"/>
                 </label></td>
            </tr>

            <tr>
                <td><bean:message key="cep"/></td>
                <td><label>
                    <html:text property="cep" size="30" />
                </label></td>
            </tr>

            <tr>
                <td><bean:message key="cidade"/></td>
                <td><label>
                    <html:text property="cidade" size="30" /><html:errors property="cidade"/>
                </label></td>
            </tr>

            <tr>
                <td><bean:message key="estado"/></td>
                <td><label>
                    <html:text property="estado" size="5" />
                  </label></td>
            </tr>

            <tr>
                <td><bean:message key="fone1"/></td>
                <td><label>
                    <html:text property="fone1" size="30" /><html:errors property="fone1"/>
                </label></td>
            </tr>

            <tr>
                <td><bean:message key="fone2"/></td>
                <td><label>
                    <html:text property="fone2" size="30" />
                </label></td>
            </tr>

            <tr>
                <td><bean:message key="fone3"/></td>
                <td><label>
                    <html:text property="fone3" size="30" />
                  </label></td>
            </tr>

            <tr>
                <td><bean:message key="cnpj"/></td>
                <td><label>
                    <html:text property="cnpj" size="30" />
                </label></td>
            </tr>

            <tr>
                <td><bean:message key="ie"/></td>
                <td><label>
                    <html:text property="ie" size="30" />
                </label></td>
            </tr>

            <tr>
                <td><bean:message key="email"/></td>
                <td><label>
                    <html:text property="email" size="50" />
                     </label></td>
            </tr>

            <tr>
                <td><label>
                        <html:submit><bean:message key="gravar"/></html:submit>                     
                </label></td>
            </tr>
     </table>
    </html:form>
</body>

como eu poderia fazer uma consulta e listar meus dados aqui nesse JSP?


#6

e essa é minha classe persistencia

package clientes.persistencia;

import clientes.bean.Cliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.activation.DataSource;
import service.ServicePool;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;

/**
*
* @author Diogo
*/
public class Persistencia {

private static final String JNDINome = "jdbc/sicewebbd";

Connection con = null;
ResultSet rs = null;
PreparedStatement stmt = null;


public void desconecta(){
    if (rs != null){
        try{
            rs.close();
        }catch(SQLException e){

        }
    }
    if (stmt != null) {
        try {
            stmt.close();
        } catch (SQLException e) {
       }
     }
   if (con != null) {
        try {
            con.close();
        } catch (SQLException e) {
      }
    }
}

public ArrayList listarCliente(Cliente cliente) throws SQLException{

    try {
        con = ServicePool.getConexao(JNDINome);
    }catch (Exception e){
        e.printStackTrace();
    }

    String sql = "SELECT * FROM clientes WHERE nome = ?";
    ArrayList resultado = new ArrayList();
    try{
        stmt = con.prepareStatement(sql);            
        stmt.setObject(1, cliente.getData_cadastro());           
        stmt.setObject(2, cliente.getData_nascimento());
        stmt.setObject(3, cliente.getEndereco());
        stmt.setObject(4, cliente.getBairro());
        stmt.setObject(5, cliente.getCep());
        stmt.setObject(6, cliente.getCidade());
        stmt.setObject(7, cliente.getEstado());
        stmt.setObject(8, cliente.getFone1());
        stmt.setObject(9, cliente.getFone2());
        stmt.setObject(10, cliente.getFone3());
        stmt.setObject(11, cliente.getCnpj());
        stmt.setObject(12, cliente.getIe());
        stmt.setObject(13, cliente.getEmail());
        stmt.setObject(14, cliente.getNome());

        resultado.add(cliente);
    }
    catch (SQLException e) {
        throw e;            
    }
    finally {                     
        desconecta();
    }
    return resultado;
}

public void insertCliente(Cliente cliente) throws SQLException{

    try {
        con = ServicePool.getConexao(JNDINome);
    } catch (Exception e) {
        e.printStackTrace();
    }
    String sql = "INSERT INTO clientes (data_cadastro,nome,data_nascimento,endereco,bairro,cep,cidade," +
                      "estado,fone1,fone2,fone3,cnpj,ie,email) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

    try{            
        stmt = con.prepareStatement(sql);            
        stmt.setObject(1, cliente.getData_cadastro());
        stmt.setObject(2, cliente.getNome());
        stmt.setObject(3, cliente.getData_nascimento());
        stmt.setObject(4, cliente.getEndereco());
        stmt.setObject(5, cliente.getBairro());
        stmt.setObject(6, cliente.getCep());
        stmt.setObject(7, cliente.getCidade());
        stmt.setObject(8, cliente.getEstado());
        stmt.setObject(9, cliente.getFone1());
        stmt.setObject(10, cliente.getFone2());
        stmt.setObject(11, cliente.getFone3());
        stmt.setObject(12, cliente.getCnpj());
        stmt.setObject(13, cliente.getIe());
        stmt.setObject(14, cliente.getEmail());

        stmt.executeUpdate();

    }
    catch (SQLException e) {
        throw e;            
    }
    finally {                     
        desconecta();
    }                  
}

public void alterarCliente(Cliente cliente) throws SQLException{
try {
con = ServicePool.getConexao(JNDINome);
} catch (Exception e) {
e.printStackTrace();
}
String sql = "UPDATE clientes set data_cadastro = ? ,data_nascimento = ? ," +
"endereco = ?,bairro = ?,cep = ? ,cidade = ?," +
"estado = ?,fone1 = ? ,fone2 = ?,fone3 = ?,cnpj = ? ,ie = ?,email = ? WHERE nome = ?";

    try{            
        stmt = con.prepareStatement(sql);            
        stmt.setObject(1, cliente.getData_cadastro());           
        stmt.setObject(2, cliente.getData_nascimento());
        stmt.setObject(3, cliente.getEndereco());
        stmt.setObject(4, cliente.getBairro());
        stmt.setObject(5, cliente.getCep());
        stmt.setObject(6, cliente.getCidade());
        stmt.setObject(7, cliente.getEstado());
        stmt.setObject(8, cliente.getFone1());
        stmt.setObject(9, cliente.getFone2());
        stmt.setObject(10, cliente.getFone3());
        stmt.setObject(11, cliente.getCnpj());
        stmt.setObject(12, cliente.getIe());
        stmt.setObject(13, cliente.getEmail());
        stmt.setObject(14, cliente.getNome());

        stmt.executeUpdate();

    }
    catch (SQLException e) {
        throw e;            
    }
    finally {                     
        desconecta();
    }
}

public void excluiCliente(String nome) throws SQLException{
try {
con = ServicePool.getConexao(JNDINome);
} catch (Exception e) {
e.printStackTrace();
}
String sql = "DELETE FROM clientes WHERE nome = ?";

    try{            
        stmt = con.prepareStatement(sql);            
        stmt.setObject(1, nome);                       

        stmt.executeUpdate();

    }
    catch (SQLException e) {
        throw e;            
    }
    finally {                     
        desconecta();
    }
}

}


#7

ola nao sei se entendi... faço algo em struts... tem a entidade que gera tabela no banco de dados pois é em hibernate, tem o form... que é parecido com a entidade, só a declaração de variaveis, getters e setters... e também o action... no action vai todos os métodos... de alterar, etc...

só que geralmente o listar eu faço separado... aí vai os links para alterar e excluir após cada lista...

uma página cadastra, outra lista... acho que é a melhor forma... vc quer tuda na mesma... também estou precisando disto... e preciso por na sessão, pois quero pegar dados de duas tabelas e juntar em outras... monto um projeto que simula uma loja de carros, quero juntar clientes e carros, com vendas... ja fiz utilizando pesquisa por id, que da um retorno... mas preciso uma pesquisa por nome... e podem vir muitos retornos... entao empaquei... nisto aqui...

excluir

excluir

no action vc faz um if para cada op (operação )

if (op.equals("excluir)) {
retorno= metododeexcluir(mapping,form,request,response)

no jsp está assim... copiei agora...

-|-
">alterar

ele captura o id do cliente no caso... la tem que fazer uma pesquisa talvez...

nao sei se ajudo ?





















-|-
">alterar




#8

Galera desde ja agradeço novamente a ajuda de vcs, mas acho que não estou me expressando bem!!!!!!!!!!!

Eu quero fazer uma consulta no banco pelo nome e que ao me retornar os valores lance no mesmo form que uso para cadastrar, agora sim acho que vcs irão me ajudar, valeu galera :smiley:


#9

Acredito q sei o q vc qr dizer.

Vou por um exemplo abaixo e daí vc pode ver se está correto o q eu interpretei.

Mas para começar, vc já ouviu falar em DispatchAction?

Bom, ela permite q vc faça um switch entre os ActionForwards.

Assim cm vc tbm pode usar um única jsp para poder fazer o tratamento de delete, insert e update.

Segue os códigos exemplos:

JSP alunos:

<%@ taglib uri="/WEB-INF/taglib/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/taglib/struts-bean.tld" prefix="bean" %>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>[Sistema de Projeto Final]</title>
</head>
<body>
 </center>
  <table>
   <tr><td>
     <input value="Cadastra" class="buttom" name="saveAluno" 
            onclick="window.location='<%=request.getContextPath()%>/Aluno.do?method=view&page=cadastro'"
            style="border: 1px solid #747373; width:160px; 
                   background-color:#D0FFD0; text-align: center;">
   </td></tr>
   <tr><td>
     <input value="Remove" class="buttom" name="removeAluno" 
            onclick="window.location='<%=request.getContextPath()%>/Aluno.do?method=view&page=remove'"
            style="border: 1px solid #747373; width:160px; 
                   background-color:#D0FFD0; text-align: center;">
   </td></tr>
   <tr><td>
     <input value="Atualiza" class="buttom" name="viewAluno" 
            onclick="window.location='<%=request.getContextPath()%>/Aluno.do?method=view&page=atualiza'"
            style="border: 1px solid #747373; width:160px; 
                   background-color:#D0FFD0; text-align: center;">
   </td></tr>
   <tr><td>
     <input value="Voltar" class="buttom" name="voltar" 
            onclick="window.location='<%=request.getContextPath()%>/portal/menu.jsp'"
            style="border: 1px solid #747373; width:160px; 
                   background-color:#D0FFD0; text-align: center;">
   </td></tr>
  </table>
 </center>
</body>

JSP acoesAluno:

<%@ taglib uri="/WEB-INF/taglib/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/taglib/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/taglib/c.tld" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>[Sistema de Projeto Final]</title>
<script language="JavaScript" 
        src="<%=request.getContextPath()%>/js/functions.js" 
        type="text/javascript">
</script>
</head>
<body style="width:50%; height:60%;">
  <html:form action="Aluno.do">
    <input name="method" value="" type="hidden">
    <c:if test="${(page == 'cadastro') || (page == 'altera')}">
      <table align="center" cellspacing="4">
        <tr><td colspan="2">
          <c:if test="${page == 'cadastro'}">
            <bean:message key="cadastro1"/>
            <bean:message key="aluno"/>
            <bean:message key="cadastro2"/>
          </c:if>
          <c:if test="${page == 'altera'}">
            <bean:message key="altera"/>
          </c:if>
        </td></tr>
        <tr>
          <td>
            <bean:message key="nome"/>
          </td>
          <td>
            <html:text property="nome"/>
          </td>
        </tr>
        <br>
        <tr>
          <td>
            <bean:message key="login"/>
          </td>
          <td>
            <html:text property="login"/>
          </td>
        </tr>
        <br>
        <tr>
          <td>
            <bean:message key="senha"/>
          </td>
          <td>
            <html:text property="senha"/>
          </td>
        </tr>
        <br>
        <tr>
          <td>
            <bean:message key="confirmarSenha"/>
          </td>
          <td>
            <html:text property="confirmarSenha"/>
          </td>
        </tr>
        <br>
        <tr>
          <td>
            <bean:message key="mail"/>
          </td>
          <td>
            <html:text property="mail"/>
          </td>
        </tr>
        <br>
        <tr>
          <td>
            <bean:message key="aluno.numMatricula"/>
          </td>
          <td>
            <c:if test="${page == 'cadastro'}">
              <html:text property="matricula"/>
            </c:if>
            <c:if test="${page == 'altera'}">
              <html:hidden property="matricula"/>
              <c:out value="${aluno.matricula}"/>
            </c:if>
          </td>
        </tr>
        <br>
      </table>
    </c:if>
    <c:if test="${(page == 'remove') || (page == 'atualiza')}">
     <table align="center" cellspacing="4">
      <tr><td colspan="2">
        <bean:message key="texto1"/>
        <bean:message key="login"/>
        <bean:message key="texto2"/>
        <bean:message key="aluno"/>
        <bean:message key="texto3"/>
        <c:if test="${page == 'remove'}">
          <bean:message key="remover"/>
        </c:if>
        <c:if test="${page == 'atualiza'}">
          <bean:message key="atualizar"/>
        </c:if>
      </td></tr>
      <tr>
        <td>
          <bean:message key="login"/>
        </td>
        <td>
          <html:text property="login"/>
        </td>
      </tr>
      <br>
     </table>
    </c:if>
    <table align="center">
     <tr>
      <td>
        <c:if test="${(page == 'cadastro') || (page == 'altera')}">
          <input type="submit" name="saveAluno" value="Salvar" 
                 class="buttom" onClick="javascript:setMethod('saveAluno')"
                 style="border: 1px solid #747373; width:160px;
                 background-color:#D0FFD0;">
        </c:if>
        <c:if test="${page == 'remove'}">
          <input type="submit" name="removeAluno" value="Remover" 
                 class="buttom" onClick="javascript:setMethod('removeAluno')"
                 style="border: 1px solid #747373; width:160px;
                 background-color:#D0FFD0;">
        </c:if>
        <c:if test="${page == 'atualiza'}">
          <input type="submit" name="viewAluno" value="Busca" 
                 class="buttom" onClick="javascript:setMethod('viewAluno')"
                 style="border: 1px solid #747373; width:160px;
                 background-color:#D0FFD0;">
        </c:if>
      </td>
      <td>
        <input value="Voltar" class="buttom" name="voltar" 
          onclick="window.location='<%=request.getContextPath()%>/portal/alunos.jsp'"
          style="border: 1px solid #747373; width:160px; 
          background-color:#D0FFD0; text-align: center;">
      </td>
     </tr>
    </table>
  </html:form>
</body>
</html>

ACTION AlunoAction:

package web.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.validator.GenericValidator;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import persistencia.Singleton;
import web.form.AlunoForm;
import beans.Aluno;
public class AlunoAction extends DispatchAction{
	private Singleton singleton = Singleton.getInstance();
	public ActionForward saveAluno(ActionMapping mapping,
			ActionForm form,HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		AlunoForm alunoForm = (AlunoForm) form; 
		Aluno aluno = new Aluno();
		boolean sucesso;
		long matricula = -1;
		if (!GenericValidator.isBlankOrNull(alunoForm.getMatricula())) { 
			aluno = this.singleton.containAluno(Long.parseLong(alunoForm.getMatricula()));
			if (aluno == null)
				aluno = new Aluno();
			else
				matricula = Long.parseLong(alunoForm.getMatricula());
		}
		aluno.setNome(alunoForm.getNome());
		aluno.setLogin(alunoForm.getLogin());
		aluno.setSenha(alunoForm.getSenha());			
		aluno.setMatricula(Integer.parseInt(alunoForm.getMatricula()));
		aluno.setMail(alunoForm.getMail());
		if (matricula == -1)
			sucesso = this.singleton.addAluno(aluno);
		else{
			Aluno alunoAntigo = this.singleton.containAluno(matricula);
			this.singleton.update(alunoAntigo, aluno);
			sucesso = true;
		}
		if (sucesso)
			return mapping.findForward("sucesso");
		else
			return mapping.findForward("falha");
	}
	public ActionForward removeAluno(ActionMapping mapping,
			ActionForm form,HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		AlunoForm alunoForm = (AlunoForm) form;
		boolean sucesso = this.singleton.removeAluno(alunoForm.getLogin());
		if (sucesso)
			return mapping.findForward("sucesso");
		else
			return mapping.findForward("falha");
	}
	public ActionForward viewAluno(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, 
			HttpServletResponse response) throws Exception {
		AlunoForm alunoForm = (AlunoForm) form;
		String login = (alunoForm.getLogin());
		Aluno aluno = this.singleton.containAluno(login);
		if (aluno == null)
			return mapping.findForward("falha");
		alunoForm.setNome(aluno.getNome());
		alunoForm.setSenha(aluno.getSenha());
		alunoForm.setConfirmarSenha(aluno.getSenha());
		alunoForm.setMatricula(""+aluno.getMatricula());
		alunoForm.setMail(aluno.getMail());
		String page = new String("altera");
		request.setAttribute("page", page);
		request.setAttribute("aluno", aluno);
		return mapping.findForward("acoesAluno");
	}
	public ActionForward view(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, 
			HttpServletResponse response) throws Exception {
		String page = request.getParameter("page");
		request.setAttribute("page", page);
		return mapping.findForward("acoesAluno");
	}
}

STRUTS struts-config.xml

<struts-config>
  <data-sources>
  </data-sources>
  <form-beans>
     <form-bean 
        name="alunoForm" 
        type="web.form.AlunoForm"/>
  </form-beans>
  <global-exceptions>
  </global-exceptions>
  <global-forwards>
    <forward 
      name="sucesso" 
      path="/portal/sucesso.jsp"/>
    <forward 
      name="falha" 
      path="/portal/falha.jsp"/>
    <forward 
      name="index" 
      path="/portal/menu.jsp"/>
  </global-forwards>
  <action-mappings>
    <action 
      path="/Aluno"
      type="web.action.AlunoAction"
      parameter="method"
      name="alunoForm"
      scope="request"
      validate="true">
      <forward 
        name="acoesAluno" 
        path="/portal/acoesAluno.jsp"/>
    </action>
  </action-mappings>
  <message-resources parameter="MessageResources"/>
</struts-config>

Bom, dessa forma vc consegue fazer os 3 passos em 1 jsp, 1 action e 1 formulário.

Espero ter ajudado.

Att,


#10

Muito obrigado por ter me ajudado vou dar uma olhada no codigo e tentar fazer parecido, quando conseguir vou colocar a solução aqui para o pessoal dar uma olhada, valeu mesmo


#11

http://www.ucb.br/prg/professores/fgoulart/artigo_Struts.pdf

Veja se esse artigo te ajuda!!!!


#12

Teria sim, mas não aconselho.
pegando o parametro passado no struts-config.xml
chamado parameter

           <action 
	    	    path="/logar"
	   			name="efetuarLoginForm"
	   			scope="session"
	   			parameter="acao"
	   			type="br.com.action.EfetuarLoginAction">
	  			<forward name="sucesso" path="/index.jsp"/>
	  		</action>	

#13

Agora que eu entendi o que vc ker.

Faz assim:

no struts-config.xml

 <action   
     path="/logar"  
     name="efetuarLoginForm"  
     scope="session"  
     parameter="acao"  
     type="br.com.action.EfetuarLoginAction">  
 <forward name="sucesso" path="/index.jsp"/>  
 lt;/action>

JSP

	<h:form method="post" action="manterUsuario.do">
		<h:hidden property="acao" />
<input style="cursor: pointer" class="botao" type="button" value="Confirmar" onclick="javascript:executar('pesquisar')" />
</h:form>
			

javascript

	formulario.acao.value = opcao;
	formulario.submit();

o link ficaria assim

http://localhost:8080/MyProjeto/manterUsuario.do?acao=pesquisar

#14