Servlet/ Arquivo não encontrado

Boa tarde pessoal.
Estou com um problema vergonhosamente simples que não estou conseguindo resolver.

Estou desenvolvendo um servlet que recebe uma string de uma página e retorna “olá + string”.

O servlet quando acessado diretamente do eclipse funciona normalmente. Porém, ao tentar acessá-lo via página HTML fazendo uso de um form + action, acusa arquivo não encontrado.

Estou usando eclipse, lubuntu 13.10, tomcat 6 e firefox.

Seguem os códigos:

SERVLET

[code]
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;

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

public class SecondServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/*
 * (non-Javadoc)
 * @see javax.servlet.http.HttpServlet#doGet
 * (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
 *
 *"Esse servlet recebe uma string como parametro de uma requisição do cliente e imprime-a no browser."
 */

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
	
	String name = request.getParameter("name"); //O método  .getParameter("nome_parametro_a_receber") 
												//obtem o valor do parametro passado 
												//pelo cliente, caso o parâmetro esteja vazio, o método retornará
												// uma string vazia.
	
	PrintWriter out = response.getWriter();
	out.println("<H1>Oi, " + name + "!!!</H1>"); //Obtem o fluxo de saída em forma de caracteres
												//e envia para o browser
	out.close();
	
}

}[/code]

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SecondServlet</display-name>
  <servlet>
    <servlet-name>com_servlet_SecondServlet</servlet-name>
    <servlet-class>com.servlet.SecondServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>com_servlet_SecondServlet</servlet-name>
    <url-pattern>/SecondServlet</url-pattern>
  </servlet-mapping>
</web-app>

PÁGINA HTML

<HTML>
<HEAD>
<TITLE>Introdução</TITLE>
</HEAD>
<BODY>
<FORM ACTION=?http://localhost:8081/SecondServlet/SecondServlet? METHOD="post">
Qual o seu nome?
<INPUT TYPE=TEXT NAME=?name?><P>
<INPUT TYPE=SUBMIT>
</FORM>
</BODY>
</HTML>

Desde já agradeço pela ajuda!

É porque você está tentando fazer uma requisição POST ( METHOD=“post” ) e no teu servlet você permite somente GET (implementou doGet).

Opa, corrigido. Mas ainda sem funcionar…

Como você fez? Implementou o método doPost no servlet? Poste o código alterado.

Pra falar a verdade alterei só o método para GET ná página HTML.

<HTML>  
<HEAD>  
<TITLE>Introdução</TITLE>  
</HEAD>  
<BODY>  
<FORM ACTION=?http://localhost:8081/SecondServlet/SecondServlet? METHOD="get">  
Qual o seu nome?  
<INPUT TYPE=TEXT NAME=?name?><P>  
<INPUT TYPE=SUBMIT>  
</FORM>  
</BODY>  
</HTML>

O correto seria você impementar o doPost, mas assim como está deveria funcionar.

Então experimente mudar a action do form para ACTION="/SecondServlet/SecondServlet".

[quote=g4j]O correto seria você impementar o doPost, mas assim como está deveria funcionar.

Então experimente mudar a action do form para ACTION="/SecondServlet/SecondServlet". [/quote]

Na verdade eu já fiz esse servlet a um tempo atrás, só que no Windows, e lá funcionou normalmente, usando o método GET. O problema só existe agora que estou usando o Lubuntu.

Alterei a URL no HTML e nada ainda…

Inicialmente pensei que fosse algum erro no documento HTML ou no WEB.xml, pois acessado pelo eclipse o servlet executa normalmente, mas os mesmos parecem estar configurados de forma correta.

Será que pode ser alguma configuração no Tomcat?

Fica difícil saber se é alguma coisa no tomcat sem ver a configuração do seu ambiente.

Depois que o tomcat inicia, você deve conseguir acessar via browser o endereço http://localhost:8081/SecondServlet/SecondServlet

[quote=g4j]Fica difícil saber se é alguma coisa no tomcat sem ver a configuração do seu ambiente.

Depois que o tomcat inicia, você deve conseguir acessar via browser o endereço http://localhost:8081/SecondServlet/SecondServlet [/quote]

Pelo eclipse (executanto o servlet no servidor) essa pagina aparece sem problemas, inclusive foi esse o link que copiei e inseri no action da página HTML.

Já já posto uma screen shot com a configuração do servidor no eclipse, o lubuntu vou ter que configurar o lubuntu pra isso.

Segue aí a configuração do server

Alguém se habilita?

Ctrl+C … Ctrl+V do seu código num projeto na minha máquina. Não sou mestre no assunto mas as seguintes alterações no html fizeram tudo funcionar pelo Eclipse e também direto pelo browser. Além disso também fiz a mudança que já foi citada de mudar de doGet para doPost no servlet

Meu html ficou assim

[code]

Introdução Qual o seu nome?

[/code]

Pelo que entendi do trecho abaixo no ACTION você colocou o caminho todo do servlet com nome do projeto junto. No meu html eu coloquei somente o nome do servlet que mapeado pelo xml encontra o pacote e a classe. O ACTION do jeito que você colocou não funcionou aqui.

E no trecho …NAME=?name?>… também retirei os ?s e deu certo.

<FORM ACTION=?http://localhost:8081/SecondServlet/SecondServlet? METHOD="get">    
Qual o seu nome?    
<INPUT TYPE=TEXT NAME=?name?><P> não entendo por que ?name?

Comparei as configurações do teu tomcat e estão iguais. Uso ubuntu + tomcat 6 + firefox.
Como disse também estou estudando o assunto portanto não sei muito, mas as alterações do html fizeram tudo funcionar aqui.

[quote=dio.msg]Ctrl+C … Ctrl+V do seu código num projeto na minha máquina. Não sou mestre no assunto mas as seguintes alterações no html fizeram tudo funcionar pelo Eclipse e também direto pelo browser. Além disso também fiz a mudança que já foi citada de mudar de doGet para doPost no servlet

Meu html ficou assim

[code]

Introdução Qual o seu nome?

[/code]

Pelo que entendi do trecho abaixo no ACTION você colocou o caminho todo do servlet com nome do projeto junto. No meu html eu coloquei somente o nome do servlet que mapeado pelo xml encontra o pacote e a classe. O ACTION do jeito que você colocou não funcionou aqui.

E no trecho …NAME=?name?>… também retirei os ?s e deu certo.

<FORM ACTION=?http://localhost:8081/SecondServlet/SecondServlet? METHOD="get">    
Qual o seu nome?    
<INPUT TYPE=TEXT NAME=?name?><P> não entendo por que ?name?

Comparei as configurações do teu tomcat e estão iguais. Uso ubuntu + tomcat 6 + firefox.
Como disse também estou estudando o assunto portanto não sei muito, mas as alterações do html fizeram tudo funcionar aqui.[/quote]

Assim que chegar em casa vou testar essas alterações, e em relação as “?” elas não estão no html original, surgiram aqui no fórum
Já já eu posto o resultado.

Mas já agradeço peja ajuda!

[quote=ruds][quote=dio.msg]Ctrl+C … Ctrl+V do seu código num projeto na minha máquina. Não sou mestre no assunto mas as seguintes alterações no html fizeram tudo funcionar pelo Eclipse e também direto pelo browser. Além disso também fiz a mudança que já foi citada de mudar de doGet para doPost no servlet

Meu html ficou assim

[code]

Introdução Qual o seu nome?

[/code]

Pelo que entendi do trecho abaixo no ACTION você colocou o caminho todo do servlet com nome do projeto junto. No meu html eu coloquei somente o nome do servlet que mapeado pelo xml encontra o pacote e a classe. O ACTION do jeito que você colocou não funcionou aqui.

E no trecho …NAME=?name?>… também retirei os ?s e deu certo.

<FORM ACTION=?http://localhost:8081/SecondServlet/SecondServlet? METHOD="get">    
Qual o seu nome?    
<INPUT TYPE=TEXT NAME=?name?><P> não entendo por que ?name?

Comparei as configurações do teu tomcat e estão iguais. Uso ubuntu + tomcat 6 + firefox.
Como disse também estou estudando o assunto portanto não sei muito, mas as alterações do html fizeram tudo funcionar aqui.[/quote]

Assim que chegar em casa vou testar essas alterações, e em relação as “?” elas não estão no html original, surgiram aqui no fórum
Já já eu posto o resultado.

Mas já agradeço peja ajuda![/quote]

Cheguei ontem em casa e pra minha alegria estava sem internet… Pois bem.
Hoje pela manhã aqui na empresa fiz as alterações indicadas, mas somente por elas não funcionou…

Só a alteração do método doGet para doPost não funcionou, no entanto a inclusão de ambos os métodos fez o servlet funcionar tranquilamente!

E a url com o caminho completo do servlet funcionou de boa no ACTION.

Agradeço pela ajuda, foi de muita valia.

Estou voltando a estudar J2EE depois de um tempo parado, tenho que relembrar muitas coisas.

Mais uma vez obrigado! RESOLVIDO