Passar pra MVC

7 respostas
Eduardo_Bregaida

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 é [email removido]

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

7 Respostas

Eduardo_Bregaida

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 £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 £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();
 
%>
Pedrosa

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

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

Eduardo_Bregaida

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

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

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

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

Eduardo_Bregaida

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

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???

Eduardo_Bregaida
<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>

  <h2>Two tables working together in the same page with independent
  paging-sorting</h2>


  <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>

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

  <p>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 <code>id</code> 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.</p>


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

</jsp:root>

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

Eduardo_Bregaida

Meu codigo:

ControllerAction.java

/*
 * Criado em 26/05/2006
 *
 * Para alterar o gabarito para este arquivo gerado vá para
 * Janela&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;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&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;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();
		}
	}
}

DadosClienteDAO.java

/*
 * Criado em 26/05/2006
 *
 * Para alterar o gabarito para este arquivo gerado vá para
 * Janela&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;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&gt;Preferências&gt;Java&gt;Geração de Códigos&gt;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;
		}
	}
 }

DadosClienteVO.java

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

/**
 * @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
 */
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;
		}

}
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...

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.
Criado 23 de maio de 2006
Ultima resposta 26 de mai. de 2006
Respostas 7
Participantes 2