Problema com Servlet

7 respostas
TFLima

Estou fazendo uma aplicação jsp em MyEclipse e não consigo acessar um servlet através de um formulário. O method do form é post e no action eu coloco o nome do Servlet. Já tentei de tudo pra resolver o problema, mas quando clico no submit só dá “http status 404” e diz que o servlet “is not available”.
Alguém pode me ajudar?

7 Respostas

wbdsjunior

FTLima,

coloque o código para agente dar uma olhada.

ivo_costa

Faça perguntas inteligentes:
http://www.linuxdicas.com.br/perguntas.html

Se vc deseja ser respondido, poste as partes mais importantes do código jsp, do servlet e da stack de erro. Pois assim fica complicado. :lol:

TFLima

Nada mal esse linux dicas, :smiley: eis o código:

<form method="post" action="Controle" name="pesquisa">
	<table>
		<tr>
			<td colspan="3"><input size="30" type="text" value="" name="campo"/>
			<td><input type="submit" value="Procurar"/>						
		</tr>		
		<tr>
			<td>Procurar por:
			<td><input type="radio" name="categoria" value="musica" checked>&nbsp;Música
			<td><input type="radio" name="categoria" value="album">&nbsp;Álbum
			<td><input type="radio" name="categoria" value="artista">&nbsp;Artista			
		</tr>
	</table>
</form>
ivo_costa

Kd a servlet?
Kd o web.xml?
Dá algum erro ao subir o tomcat?
Se vc acessar o Servlet direto no navegador tipo : http://localhost:8080/Controle Funciona?

TFLima

Não já tentei acessar direto mas dá o mesmo erro.

<?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>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>Controle</servlet-name>
    <servlet-class>caminho.Controle</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Controle</servlet-name>
    <url-pattern>/servlet/Controle</url-pattern>
  </servlet-mapping>

</web-app>

Servlet:

package caminho;

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 Controle extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public Controle() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the POST method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
ivo_costa

O servlet parece estar certo.
Vc fez o arquivo web.xml e colocou na pasta WEB-INF?
Dá algum erro ao subir o tomcat?

eis um exemplo de web.xml:

&lt;?xml version="1.0"?&gt;
&lt;web-app&gt;
   &lt;description&gt;Ivo&lt;/description&gt;

   &lt;welcome-file-list&gt;
   		&lt;welcome-file&gt;index.html&lt;/welcome-file&gt;
   &lt;/welcome-file-list&gt;
   
   &lt;servlet&gt;
      &lt;servlet-name&gt;Upload&lt;/servlet-name&gt;
      &lt;servlet-class&gt;br.com.ivocosta.servlet.Upload&lt;/servlet-class&gt;
   &lt;/servlet&gt;
   &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;Upload&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/Upload&lt;/url-pattern&gt;
   &lt;/servlet-mapping&gt;   
&lt;/web-app&gt;
TFLima

Descobri o problema:

com erro:

Controle
/servlet/Controle

sem erro:

Controle
/Controle

o interessante é que o web.xml já tinha sido gerado assim automaticamente, e eu não tinha mexido em nada até agora.
Vlw pela paciência!
Abraço

Criado 28 de agosto de 2008
Ultima resposta 28 de ago. de 2008
Respostas 7
Participantes 3