Passar pra MVC

Pessoal do GUJ, estou com dificuldades pra passar esse codigo JSP pra MVC com Struts, DAO e VO… consegui montar eles em JSP, mas nao era assim que eu queria, alguem poderia me ajudar a montar esse msm codigo em MVC?

Obrigado :cry:

Tá dando erro pra enviar o código… quem quiser me ajudar meu e-mail é eduardo.bregaida@japinfo.com.br

Eu consegui fazer ele rodar em JSP, mas queria fazer ele nos padrões…

Consegui


pesquisadadoscliente.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page language="java" %>
<%@ page import="java.sql.*"%>
<html:html>
<head>
<script type="text/JavaScript" language="JavaScript">
function verifica(){
  var pesquisa = /[^0-9]+/;
  var frase = document.ConectaBanco.id.value;

  if(frase.match(pesquisa) || document.ConectaBanco.id.value == ""){
    alert("Apenas Números no campo código.");
 return false;
 }
}
</script>
</head>

<BODY>
<!--
<html:form action="/dados">
 <TABLE border="0">
  <TBODY>
   
   <TR>
    <TH>id</TH>
    <TD><html:text property="id" /></TD>
   </TR>
   <TR>
    <TD><html:submit property="submit" value="Enviar" /></TD>
    <TD><html:reset /></TD>
   </TR>
  </TBODY>
 </TABLE>-->
<!--<form name="pesquisa" action="./pesqteste">-->
<form name="ConectaBanco" action="<%= request.getContextPath() %>/dadoscliente.jsp" onsubmit="return verifica();">
<INPUT type="hidden" name="actionType" value="inserirUsuario">
  
  <center>
  <p>Identificação:    <font color="#CC99FF">.....</font><input type="text" name="id">
  <p>Nome Solicitante: <font color="#CC99FF">.....</font><input type="text" name="nm_solicitante">
      <font color="#CC99FF">.</font> 
      <input name="pesquisar" type="submit" value="Pesquisar" >
  </p> </center>

</form>



 
 
 
 
 
</html:form>
</BODY>
</html:html>



<% 

  String dsn     = "jdbc:postgresql://weblinux:5432/CursoJsp";
  String usuario = "jsaude";
  String senha   = "";
  String sql     = "";

  Class.forName("org.postgresql.Driver").newInstance();
  Connection con = DriverManager.getConnection(dsn,usuario,senha);
  Statement st = con.createStatement();

  //==========================================================================
  // Se não existir um codigo na linha de parametros do browser, monta o 
  // Recordset com todos os registros
  //==========================================================================
  if(request.getParameter("id")==null) {

 // Se o usuario não preencheu o nome no form, pega todos os registros
 if(request.getParameter("nm_solicitante")=="") {
      sql = "SELECT * FROM dados ORDER BY id";
 } else {
      sql  = "SELECT * FROM dados WHERE id LIKE '%" + request.getParameter("id") + "%' ORDER BY id";
 }

    ResultSet rs = st.executeQuery(sql);
    out.println("<TABLE BORDER=1>");
    if(rs != null) {
       while (rs.next()){
         String id    = rs.getString("id");
         String solicitante   = rs.getString("nm_solicitante");
         out.println("<TR>");
      out.println("<TD><A HREF='dadoscliente.jsp?id=" + id + "'>"+id+"</A></TD>");
        out.println("</TR>");
       }
    }
        
    out.println("</TABLE>");
  }

  //==========================================================================&&
  // Pesquisa o registro conforme o código especificado na linha de parametro
  //==========================================================================
  if(request.getParameter("id")!="") {
    ResultSet rs = st.executeQuery("SELECT * FROM dados WHERE id="+ request.getParameter("id"));
    out.println("<center><TABLE BORDER=1>");
    
  
    
    
    while (rs.next()){
     out.println("<TR><TD>Identificação</TD><TD>Solicitante</td><td>Data</td><td>Descrição</td><td>Estimativa</td><td>Status</td></tr>");
     out.println("<TR><TD>"+ rs.getString("id") + "</TD>");
     out.println("<TD>" + rs.getString("nm_solicitante") + "</TD>");
     out.println("<TD>" + rs.getString("data")+ "</TD>");
     out.println("<TD>" + rs.getString("descricao")  + "</TD>");
     out.println("<TD>" + rs.getString("estimativa")  + "</TD>");
     out.println("<TD>" + rs.getString("status")  + "</TD>");
     out.println("</TR>");
   
    }
    
    out.println("</TABLE></center>");
 out.println("<center><BR><A HREF='javascript:history.back();'>Voltar</A></center>");
   }
  st.close();
  con.close();
 
%>

Olhe meu último post pode te ajudar, retire esses scriplets do seu jsp.

http://www.guj.com.br/posts/list/33449.java

[quote=Pedrosa]Olhe meu último post pode te ajudar, retire esses scriplets do seu jsp.

http://www.guj.com.br/posts/list/33449.java[/quote]

Meu probl agora ta sendo gerar a tabela… uma especie de GRID…

Use a displaytaglib, vc passa uma lista no request e ela se vira para montar, além de fazer paginação automática ainda permite exportar para vários tipos de aqrivos (pdf, xls, xml, rtf, csv)

http://displaytag.homeip.net/displaytag-examples-1.1/example-twotables.jsp

[quote=Pedrosa]Use a displaytaglib, vc passa uma lista no request e ela se vira para montar, além de fazer paginação automática ainda permite exportar para vários tipos de aqrivos (pdf, xls, xml, rtf, csv)

http://displaytag.homeip.net/displaytag-examples-1.1/example-twotables.jsp

[/quote]

Eu vi essa pag, mas n entendi como eu jogo nakela grid, akele view codigo me confundiu…

Tem como dar um exemplo de como usar akilo???

[code]<jsp:root version=“1.2” xmlns:jsp=“http://java.sun.com/JSP/Page” xmlns:display=“urn:jsptld:http://displaytag.sf.net”>
<jsp:directive.page contentType=“text/html; charset=UTF-8” />
<jsp:directive.page import=“org.displaytag.sample.*” />
<jsp:include page=“inc/header.jsp” flush=“true” />

jsp:scriptlet Object foo = session.getAttribute( “two-test1” );
if( foo == null ) {
session.setAttribute( “two-test1”, new ReportList() );
session.setAttribute( “two-test2”, new ReportList(12) );
}
</jsp:scriptlet>

Two tables working together in the same page with independent paging-sorting

<display:table name=“sessionScope.two-test1” sort=“list” pagesize=“10” id=“table1” export=“true”>
<display:column property=“city” title=“CITY” group=“1” sortable=“true” headerClass=“sortable” />
<display:column property=“project” title=“PROJECT” group=“2” sortable=“true” headerClass=“sortable” />
<display:column property=“amount” title=“HOURS” />
<display:column property=“task” title=“TASK” />
</display:table>

<display:table name=“sessionScope.two-test2” sort=“list” pagesize=“10” id=“table2” export=“true”>
<display:column property=“city” title=“CITY” group=“1” sortable=“true” headerClass=“sortable” />
<display:column property=“project” title=“PROJECT” group=“2” sortable=“true” headerClass=“sortable” />
<display:column property=“amount” title=“HOURS” />
<display:column property=“task” title=“TASK” />
</display:table>

Do you need to put more than one <![CDATA[]]> in the same page, with independent pagination and sorting?

No problem: parameter in pagination, sorting and exporting are encoded to be processed only by the source table. The only requirement is to provide a different id attribute for the table. If you click on sorting or pagination links in one of the previous tables the other one doesn't get affected by that.

<jsp:include page=“inc/footer.jsp” flush=“true” />

</jsp:root>
[/code]

Por exemplo, como eu adapto ao meu codigo???

Meu codigo:

ControllerAction.java

[code]/*

  • Criado em 26/05/2006
  • Para alterar o gabarito para este arquivo gerado vá para
  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */
    package action;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import classesDAO.DadosClienteDAO;
import classesVO.DadosClienteVO;

/**

  • @author eduardo.bregaida
  • Para alterar o gabarito para este comentário do tipo gerado vá para
  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */

public class ControllerAction extends HttpServlet {

private String acao;
private String target;

public void service(
	HttpServletRequest request,
	HttpServletResponse response)
	throws IOException, ServletException {

	RequestDispatcher rd;
	acao = request.getParameter("acao").toString();
	HttpSession sessao = request.getSession();
	String msg = "";
	try {
		DadosClienteDAO dadosClienteDAO = new DadosClienteDAO();

		// Comparação
		if (acao.equalsIgnoreCase("id")) {
			DadosClienteVO formulario = new DadosClienteVO();
			formulario.setNomeSolicitante(request.getParameter("nm_solicitante"));
			formulario.setIdCliente(request.getParameter("id"));

		/*	if (dadosClienteDAO.validaLogin(formulario)) {
				target = "/Jogos.jsp";
			} else {
				target = "/Index.jsp";
				msg = "Usuário Inválido!";
				request.setAttribute("msg", msg);
			}*/
		}
	} catch (SQLException sqle) {
		sqle.printStackTrace();
	} catch (Exception e) {
		// TODO Bloco de captura gerado automaticamente
		e.printStackTrace();
	}
}

}
[/code]

DadosClienteDAO.java

[code]/*

  • Criado em 26/05/2006
  • Para alterar o gabarito para este arquivo gerado vá para
  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */
    package classesDAO;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;

import classesVO.DadosClienteVO;
import conexao.ConnectionFactory;

/**

  • @author eduardo.bregaida

  • Para alterar o gabarito para este comentário do tipo gerado vá para

  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */
    public class DadosClienteDAO {

    private Connection connection;
    private String strSQL;

    public DadosClienteDAO(Connection con){
    this.connection = con;
    }

    public DadosClienteDAO() throws Exception {
    this.connection = ConnectionFactory.getConnection();
    }
    public boolean validaLogin(DadosClienteVO dadosClienteVO) throws SQLException {
    String sql = “SELECT * FROM id WHERE id = ? AND nm_solicitante = ?”;
    PreparedStatement stmt = this.connection.prepareStatement(sql);
    stmt.setString(1, dadosClienteVO.getIdCliente().trim());
    stmt.setString(2, dadosClienteVO.getNomeSolicitante().trim());
    ResultSet rs = stmt.executeQuery();
    if(rs.next()){
    return true;
    }else{
    return false;
    }
    }
    }
    [/code]

DadosClienteVO.java

[code]/*

  • Criado em 26/05/2006
  • Para alterar o gabarito para este arquivo gerado vá para
  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */
    package classesVO;

/**

  • @author eduardo.bregaida

  • Para alterar o gabarito para este comentário do tipo gerado vá para

  • Janela>Preferências>Java>Geração de Códigos>Código e Comentários
    */
    public class DadosClienteVO {
    private String idCliente = “”;
    private String nomeSolicitante = “”;
    private String nomeEmpresa = “”;
    private String dataPedido = “”;
    private String descricaoProblema = “”;
    private String descricaoSolucao = “”;
    private String encaminhamentoChefe = “”;
    private String statusConclusao = “”;
    private String nomeAtendente = “”;
    private String situacaoPedido = “”;
    private String tempoEstimado = “”;

     /**
      * @return
      */
     public String getDataPedido() {
     	return dataPedido;
     }
    
     /**
      * @return
      */
     public String getDescricaoProblema() {
     	return descricaoProblema;
     }
    
     /**
      * @return
      */
     public String getDescricaoSolucao() {
     	return descricaoSolucao;
     }
    
     /**
      * @return
      */
     public String getEncaminhamentoChefe() {
     	return encaminhamentoChefe;
     }
    

    /**

    • @return
      */
      public String getIdCliente() {
      return idCliente;
      }

      /**

      • @return
        */
        public String getNomeAtendente() {
        return nomeAtendente;
        }

      /**

      • @return
        */
        public String getNomeEmpresa() {
        return nomeEmpresa;
        }

      /**

      • @return
        */
        public String getNomeSolicitante() {
        return nomeSolicitante;
        }

      /**

      • @return
        */
        public String getSituacaoPedido() {
        return situacaoPedido;
        }

      /**

      • @return
        */
        public String getStatusConclusao() {
        return statusConclusao;
        }

      /**

      • @return
        */
        public String getTempoEstimado() {
        return tempoEstimado;
        }

      /**

      • @param string
        */
        public void setDataPedido(String string) {
        dataPedido = string;
        }

      /**

      • @param string
        */
        public void setDescricaoProblema(String string) {
        descricaoProblema = string;
        }

      /**

      • @param string
        */
        public void setDescricaoSolucao(String string) {
        descricaoSolucao = string;
        }

      /**

      • @param string
        */
        public void setEncaminhamentoChefe(String string) {
        encaminhamentoChefe = string;
        }

    /**

    • @param string
      */
      public void setIdCliente(String string) {
      idCliente = string;
      }

      /**

      • @param string
        */
        public void setNomeAtendente(String string) {
        nomeAtendente = string;
        }

      /**

      • @param string
        */
        public void setNomeEmpresa(String string) {
        nomeEmpresa = string;
        }

      /**

      • @param string
        */
        public void setNomeSolicitante(String string) {
        nomeSolicitante = string;
        }

      /**

      • @param string
        */
        public void setSituacaoPedido(String string) {
        situacaoPedido = string;
        }

      /**

      • @param string
        */
        public void setStatusConclusao(String string) {
        statusConclusao = string;
        }

      /**

      • @param string
        */
        public void setTempoEstimado(String string) {
        tempoEstimado = string;
        }

}
[/code]

ConnectionFactory.java

/*
 * Criado em 24/05/2006
 * Por Eduardo Bregaida
 * Classe para conexão do DB
 * Banco PostgreSQL
 */

package conexao;

/**
 * @author eduardo.bregaida
 *
 * Para alterar o gabarito para este comentário do tipo gerado vá para
 * Janela&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;Código e Comentários
 */
import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
 public class ConnectionFactory { 
 
	private static final String url =
		"jdbc:postgresql://weblinux:5432/CursoJsp";
	private static final String driver = "org.postgresql.Driver";
	private static final String usuario = "jsaude";
	private static final String senha = "";

	public static Connection getConnection() throws SQLException {
		try {
			Class.forName(driver);
			return DriverManager.getConnection(url, usuario, senha);
		} catch (ClassNotFoundException e) {
			throw new SQLException(e.getMessage());
		}
	}
 }

dadoscliente.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page language="java" %>
<%@ page import="java.sql.*"%>
<html:html>
<head>
<script type="text/JavaScript" language="JavaScript">
function verifica(){
  var pesquisa = /[^0-9]+/;
  var frase = document.ConectaBanco.id.value;

  if(frase.match(pesquisa) || document.ConectaBanco.id.value == ""){
    alert("Apenas Números no campo código.");
	return false;
	}
	if(document.ConectaBanco.nm_solicitante.value==""){
	alert("Solicitante é um campo obrigatório");
	return false;
	}
}
</script>
</head>

<BODY>
<!--
<html:form action="/dados">
	<TABLE border="0">
		<TBODY>
			
			<TR>
				<TH>id</TH>
				<TD><html:text property="id" /></TD>
			</TR>
			<TR>
				<TD><html:submit property="submit" value="Enviar" /></TD>
				<TD><html:reset /></TD>
			</TR>
		</TBODY>
	</TABLE>-->
<!--<form name="pesquisa" action="./pesqteste">-->
<form name="ConectaBanco" action="<%= request.getContextPath() %>/dadoscliente.jsp" >
<INPUT type="hidden" name="actionType" value="inserirUsuario">
  
  <center>
  <p>Identificação:    <font color="#CC99FF">.....</font><input type="text" name="id">
  <p>Nome Solicitante: <font color="#CC99FF">.....</font><input type="text" name="nm_solicitante">
      <font color="#CC99FF">.</font> 
      <input name="pesquisar" type="submit" value="Pesquisar" onclick="return verifica();">
  </p> </center>
  
  
  
  

</form>



	
	
	
	
</html:form>
</BODY>
</html:html>

<% 
conexao.ConnectionFactory cF = new conexao.ConnectionFactory();
Connection con = cF.getConnection();
Statement st = con.createStatement();

if(request.getParameter("id").equals("") && request.getParameter("nm_solicitante").equals("")) {
     ResultSet rs = st.executeQuery("SELECT * FROM dados WHERE id="+ request.getParameter("id"));
   
      out.println("<center><TABLE BORDER=1>");
    while (rs.next()){
  	  out.println("<TR><TD>Identificação</TD><TD>Solicitante</td><td>Data</td><td>Descrição</td><td>Estimativa</td><td>Status</td></tr>");
  	  out.println("<TR><TD>"+ rs.getString("id") + "</TD>");
  	  out.println("<TD>" + rs.getString("nm_solicitante") + "</TD>");
  	  out.println("<TD>" + rs.getString("data")+ "</TD>");
  	  out.println("<TD>" + rs.getString("descricao")  + "</TD>");
  	  out.println("<TD>" + rs.getString("estimativa")  + "</TD>");
  	  out.println("<TD>" + rs.getString("status")  + "</TD>");
  	  out.println("</TR>");
  	
    }
    
    out.println("</TABLE></center>");
	out.println("<center><BR><A HREF='javascript:history.back();'>Voltar</A></center>");
   }
 %>

Os .java estão funcionando, mas a JSP ta gerando erro…

[code]type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.dadoscliente_jsp._jspService(dadoscliente_jsp.java:217)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

root cause

javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:798)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:506)
org.apache.jsp.dadoscliente_jsp._jspService(dadoscliente_jsp.java:113)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.
[/code]