Duvida em servlet - execucao

7 respostas
LPJava

ae pessoal estudando servlet cap 2 - head first… tentei implementar o codigo em anexo porem o /foca roda normal e o /compras nao.

HTTP Status 404 - Servlet Compras is not available


type Status report

message Servlet Compras is not available

description The requested resource (Servlet Compras is not available) is not available.


Apache Tomcat/5.5.25

to digitando:
http://localhost:8080/headf/compras

quem puder me ajudar agradeco!

7 Respostas

gleise
Então, o seu servlet DptoCompra está sem o public:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

class DptoCompra extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("<h1>lopes camilo</h1>");
		out.println("</body>");
		out.println("</html>");

	}
}

Devia ser assim:

public class DptoCompra extends HttpServlet {
LPJava

hum… po verdade… funcionou… Valeu!!rpz a q viaje… viu… mas me diz uma coisa… sempre tem q ser public minhas classes?

gleise

Então, qdo servlet sim, porque o container precisa ter acesso. Agora, de maneira geral não é necessário, aí depende de como você planejou o sistema e seus pacotes.

LPJava

entao somente a que vai se comunciar com o container que precisa do public ? Interessante hehe… :smiley:

rodrigoallemand

Neste caso, quando vc não colocou nenhum modificador de acesso na classe, ela assume o default, tambem conhecido como package private, ou seja, somente classes do mesmo pacote poderiam instancia-la.
Como quem starta a chamada a sua classe é o servidor, que não segue a mesma nomeclatura e padrão de pacote que a sua, ele nçao conseguiu achar a classe, sacou?!?
Mais aqui.

LPJava

saquei nivel de acesso… hehe mais nem imaginei que o servidor se comunicava dessa forma heeh :smiley:

gleise

ops… eu não quis dizer que somente o servlet precisa ser public… :oops:

Eu normalmente crio minhas classes como public porque elas são acessadas de pacotes externos. :wink:

Muito legal a dica rodrigo!

Criado 21 de novembro de 2007
Ultima resposta 21 de nov. de 2007
Respostas 7
Participantes 3