remarques 0 Denunciar post Postado Janeiro 31, 2008 Pessoal, é o seguinte... tou com um erro que todo mundo já teve alguma vez na vida e cada um deu jeito de uma forma diferente. Tentei todas as alternativas que encontrei pela net e nada resolveu meu problema. O erro é o: "HTTP Status 404 - /Indicadores/relatorios/ServletPrincipal type Status report message /Indicadores/relatorios/Se /Indicadores/relatorios/ServletPrincipal orios/ServletPrincipal description The requested resource (/Indicadores/relatorios/ServletPrincipal) is not available. Apache Tomcat/5.5.17" Na realidade meu servlet não está na pasta relatorios e sim na Indicadores/src/java/Controle, sei que o erro é algum mapeamento, mas não consigo resolver. Estou usando: Netbeans 5.5.1 JDK 6 Windows XP Mantive a estrutura de diretórios que o próprio netbeans utiliza. Abaixo, trechos mais relevantes do código: ServletPrincipal.java CODE package Controle; import Modelo.*; import java.io.*; import java.net.*; import java.sql.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.swing.JOptionPane; /** * * @author renata * @version beta */ public class ServletPrincipal extends HttpServlet { protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession sessao = req.getSession(); if (req.getParameter("action").equals("INS")){ Indicador i = new Indicador(); i.setCodIndicador(Integer.parseInt(req.getParameter("codigo"))); i.setDescIndicador(req.getParameter("descricao")); //System.out.println("Mensagem:" + req.getParameter("nome")); i.setCodSegmento(Integer.parseInt(req.getParameter("codSegmento"))); i.setCodCategoria(Integer.parseInt(req.getParameter("codCategoria"))); i.setMeta(Double.parseDouble(req.getParameter("meta"))); IndicadorDAO id = new IndicadorDAO(); try { id.inserir(i); req.setAttribute("sucesso","s"); req.getRequestDispatcher("cadastro_autor.jsp").forward(req,resp); } catch (SQLException ex) { ex.printStackTrace(); req.setAttribute("erro",ex.getMessage());/*incluiumainformação adicional à requisição.Inclui o nome do atributo e que valor ele vai ter*/ /*Exemplo: cria um novo atributo chamado erro e este vai receber o conteudo de c.getmessage*/ /*como fica: req.setAttribute( "erro ",c.getmessage()) e req.getRequestDispatcher("error.jsp ").forward(req,res);;*/ req.getRequestDispatcher("Error.jsp").forward(req,resp);/*Essa instrução empacota uma requisição e despacha pra quem ele quiser*/ } } if (req.getParameter("action").equals("SEL")){ IndicadorDAO id = new IndicadorDAO(); try { ArrayList al = new ArrayList(); al = id.selecionaLista(req.getParameter("descIndicador")); req.setAttribute("lista", al); if(al.isEmpty()){ req.setAttribute("sucesso","s"); } JOptionPane.showMessageDialog(null, "Ok"); //req.getRequestDispatcher("index.jsp").forward(req,resp); } catch (SQLException ex) { req.setAttribute("erro",ex.getMessage()); req.getRequestDispatcher("error.jsp").forward(req,resp); } } } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } Web.xml CODE <?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>ServletConsulta</servlet-name> <servlet-class>Controle.ServletConsulta</servlet-class> </servlet> <servlet> <servlet-name>ServletPrincipal</servlet-name> <servlet-class>Controle.ServletPrincipal</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletConsulta</servlet-name> <url-pattern>/ServletConsulta</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ServletPrincipal</servlet-name> <url-pattern>/ServletPrincipal</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app> rel_unid_nao_lanc.jsp CODE <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <link href="../Estilo.css" rel="stylesheet" type="text/css"> </head> <body> <table class="pagina"> <form id="lancar" name="lancar" method="post" action="ServletPrincipal"> <tr> <td><fieldset> <legend style="color:#000000">Unidades sem Lançamento</legend> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td><table align="center" cellpadding="0" cellspacing="0"> <tr> <td width="20px"><input type="hidden" name="action" id="action" value="SEL"></td> <td height="50">Indicador:</td> <td height="50"><input type="text" name="descIndicador" id="descIndicador" size="30" value="Objetos Entregues" /> <!--Este size indica a largura em caracteres--></td> <td height="50"><img src="../Imagens/search.gif" alt="buscar" width="16" height="16" /></td> </tr> </table></td> </tr> <tr> <td height="70"><table border="0" cellpadding="0" cellspacing="0"> <tr> <td height="30"> </td> <td width="130" height="30">Meses Disponíveis </td> <td height="30"> </td> <td height="30">Meses a Pesquisar </td> <td height="30"> </td> </tr> <tr> <td width="80"> </td> <td width="130"><table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="15"> </td> <td width="115"><select name="meses_disponiveis" size="12" multiple style="border:#000066; width:100"> <option>Jan/2008</option> <option>Dez/2007</option> <option>Nov/2007</option> <option>Out/2007</option> </select></td> </tr> </table></td> <td><table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="25" height="25"><img src="../Imagens/play_16x16.gif" width="16" height="16"></td> </tr> <tr> <td width="25" height="25"><img src="../Imagens/fast_forward_16x16.gif" width="16" height="16"></td> </tr> <tr> <td width="25" height="25"><img src="../Imagens/play_reverse_16x16.gif" width="16" height="16"></td> </tr> <tr> <td width="25" height="25"><img src="../Imagens/reverse_16x16.gif" width="16" height="16"></td> </tr> </table></td> <td><table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="15"> </td> <td width="115"><select name="meses_pesquisar" size="12" multiple id="meses_pesquisar" style="border:#000066; width:100" title="Meses"> <option>Jan/2008</option> <option>Dez/2007</option> <option>Nov/2007</option> <option>Out/2007</option> </select></td> </tr> </table></td> <td> </td> </tr> </table></td> </tr> <tr> <td height="50" align="center"><table border="0" cellpadding="0" cellspacing="0"> <tr> <td width="130"> </td> <td>Relatório: </td> <td><input type="checkbox" name="checkbox" value="checkbox" tabindex="9"> .xls </td> <td><input type="checkbox" name="checkbox2" value="checkbox" tabindex="10"> .pdf</td> <td> </td> </tr> </table></td> </tr> <tr> <td align="center"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr > <td width="33%" height="25"> </td> <td width="60" height="25" align="center"><img src="../Imagens/relatorio_16x16.gif" alt="Salvar" width="16" height="16" /></td> <td width="30" height="25" align="center"> <img src="../Imagens/search.gif" alt="Cancelar" width="16" height="16" /></td> <td width="35%" height="25"><label> <input type="submit" name="Submit" value="OK"> </label></td> </tr> </table> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr > <td width="30%" height="15"> </td> <td width="60" height="15" align="center"> Gerar </td> <td width="30" height="15" align="center"> Visualizar </td> <td width="30%" height="15"> </td> </tr> </table></td> </tr> </table> </fieldset></td> </tr> </form> </table> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 1, 2008 Olá remarques, Bom é o seguinte, seu servlet está sendo compilado e disponibilizado dentro da pasta WEB-INF/classes? Outra coisa é..para mapear um servlet imagine a seguinte aplicação rodando em um servidor apache tomcat Aplicação teste http://localhost:8080/teste Servlet de teste da aplicação http://localhost:8080/teste/ServletTeste No web.xml você deve mapear da seguinte maneira. <servlet> <servlet-name>ServletTeste</servlet-name> <servlet-class>meu.pacote.ServletTeste</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletTeste</servlet-name> <url-pattern>/[u][color="#0000ff"]ServletTeste/*[/color][/u]</url-pattern> </servlet-mapping> o * indica que qualquer coisa pra frente do endereço http://localhost:8080/teste/ServletTeste será tratado pelo ServletTeste Faz um teste e verifique se o servlet funciona. Se funcionar tente chamar a link abaixo. http://localhost:8080/teste/ServletTeste/meuServletFunciona Se não der erro nenhum, seu servlet funciona perfeitamente.. Qualquer coisa, postae denovo Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 1, 2008 Olá remarques, Bom é o seguinte, seu servlet está sendo compilado e disponibilizado dentro da pasta WEB-INF/classes? Quando compilo o servlet aparece esse texto abaixo, mas não há nenhuma pasta classes no diretório webinf, e mesmo se eu crio a pasta, não aparece nenhum arquivo lá. init: deps-module-jar: deps-ear-jar: deps-jar: Compiling 1 source file to D:\IDO\Indicadores\build\web\WEB-INF\classes compile-single: EXECUTADO COM SUCESSO (tempo total: 0 segundos) Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 1, 2008 Bem estranho, segundo o deploy do seu netbeans, ele informa que a classe está sendo compilada em D:\IDO\Indicadores\build\web\WEB-INF\classes Da uma olhada neste local, pra ver se existe alguma .class por la. Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 3, 2008 Não vai nenhum class pra lá. Aliás, a pasta nem existe, e se eu crio tb nao vai nada pra lá! Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 6, 2008 Olá, viu tenta olhar na pasta aonde fica os .java para ver se as classes compiladas estão indo para o mesmo local. Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 7, 2008 Descobri onde estão... É que o netbeans cria na realidade DUAS pastas web, com suas respectivas WEB-INF. Como meus servlets estão em um pacote, os .class estao dentro de uma subpasta da web-inf. Ainda não funciona!!! http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 7, 2008 A sub-pasta chama-se classes ? Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 7, 2008 O caminho completo eh esse: Indicadores\build\web\WEB-INF\classes\Controle Sendo que Indicadores é a pasta raiz do projeto... Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 8, 2008 Viu, tenta gerar um arquivo .WAR e da um deploy no apache tomcat pra ver se o servlet funciona. Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 8, 2008 Xiii... Agora você falou grego pra mim... :) Compartilhar este post Link para o post Compartilhar em outros sites
juniorneo2 0 Denunciar post Postado Fevereiro 8, 2008 você esta certa mas na sua pagina JSP, você esta colocando o nome errado, pelo que eu vi no seu action esta assim: <form id="lancar" name="lancar" method="post" action="ServletPrincipal"> No seu servlet esta assim: <url-pattern>/ServletConsulta</url-pattern> então no seu sevlet deve fica assim: <url-pattern>/ServletPrincipal</url-pattern> Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 8, 2008 Vi agora também o form, valew juniorneo2. Coloca no seu action do form, na página JSP assim <form id="lancar" name="lancar" method="post" action="/nomeDaAplicação/ServletPrincipal"> Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 8, 2008 Na verdade, se você reparar bem, eu tenho dois servlets... ;) Compartilhar este post Link para o post Compartilhar em outros sites
juniorneo2 0 Denunciar post Postado Fevereiro 8, 2008 Blza sublyer, e aproveitando este topico queria saber se você conhece esse livro: Desenvolvendo Aplicações com JSP, Servlets, JavaServer Faces, Hibernate, EJB 3 Persist... Editora: Ciência Moderna ISBN: 8573935723 Autor: Edson Gonçalves Páginas: 776 Formato: 16 x 23 se conhecer, este livro é bom? a so entendi, desculpa remarques. remarques você ja tentou compilar somente o servlet? Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 8, 2008 Vi agora também o form, valew juniorneo2. Coloca no seu action do form, na página JSP assim <form id="lancar" name="lancar" method="post" action="/nomeDaAplicação/ServletPrincipal"> Já tentei assim, já tentei sem, já tentei até colocando o caminho completo... :( Compartilhar este post Link para o post Compartilhar em outros sites
juniorneo2 0 Denunciar post Postado Fevereiro 8, 2008 renata em qual pasta você criou seu (pacote) ? Compartilhar este post Link para o post Compartilhar em outros sites
sublyer 0 Denunciar post Postado Fevereiro 11, 2008 Renata, você ja verificou os arquivos de Log do servidor tomcat? Para verificar, entre na pasta de logs no diretório de instalação do tomcat. (%CATALINA_HOME%/logs) Nesta pasta contém vários arquivos de log, procure pelo arquivo stdout_DATA, considerando que a DATA é a data que o tomcat foi iniciado. Depois disto manda pra gente o que o log, por favor. Compartilhar este post Link para o post Compartilhar em outros sites
remarques 0 Denunciar post Postado Fevereiro 11, 2008 Pela estrutura do Netbeans é em "Pacotes de Código fonte". Pela estrutura de diretórios do windows é em: Indicadores\src\java\Controle Sendo Indicadores o nome do projeto e Controle o nome do pacote. Compartilhar este post Link para o post Compartilhar em outros sites
juniorneo2 0 Denunciar post Postado Fevereiro 11, 2008 A eu acho que sei renata, no seu sevlete esta doGet(), e no seu form esta method=post, substitua no seu servlet para doPost() Compartilhar este post Link para o post Compartilhar em outros sites