Servlet básico - System.out.println não funciona pq?

Olá a todos,

Este é meu primeiro post no fórum e também a primeira das muitas dúvidas que virão hehe

Seguem os códigos

import javax.servlet.*;
import java.io.IOException;

public class PrimitiveServlet implements Servlet {

public void init(ServletConfig config) throws ServletException {
System.out.println("init");
}

public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
System.out.println("service");
}

public void destroy() {
System.out.println("destroy");
}

public String getServletInfo() {
return null;
}
public ServletConfig getServletConfig() {
return null;
}

}
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<servlet>
<servlet-name>Testing</servlet-name>
<servlet-class>TestingServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>Primitive</servlet-name>
<servlet-class>PrimitiveServlet</servlet-class>
</servlet>

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

<servlet-mapping>
<servlet-name>Primitive</servlet-name>
<url-pattern>/servlet/Primitive</url-pattern>
</servlet-mapping>
</web-app>

Bom, a chamada ao servlet funciona sem problema, a dúvida é que o System.out não exibe nada e a página fica em branco

Estou usando o livro do Budi Kurniawan para começar em Servlet /JSP

“Java para a Web com Servlets, JSP e EJB”

Agradeço por qualquer ajuda!

Vlw!

Em servlets, quando se usa System.out.println(), a saída ocorre no console do servidor, não na página web. Olhe o console onde está aberto o seu servidor…

Se quizer ver os resultados na tela, use:

 out.print("sua mensagem que irá aparecer na página"); 

Té+.

Olá amigo,

só para completar o que o nosso amigo rafa falou, se você estiver usando uma IDE como o Eclipse, você pode rodar o Tomcat pelo Eclipse atraves de um plugin e acompanhar seus System.out no proprio console do Eclipse, mas se você estiver rodando o Tomcat pelo serviço do windows, você pode acompanhar os System.out pelos logs do Tomcat que ficam na pasta logs dentro da pasta do Tomcat, o log que vai gerar seus System.out se não me engano é o tomcat.out .
E para aparece algo na sua página você precisa escrever algo nela, no seu caso coloque no metodo service o comando out.print(“aqui é o que você deseja que apareça na tela”); como disse nosso amigo danilo.

Pessoal se eu estiver falando besteira me corrijam, please.

Bom espero ter ajudado. :slight_smile:

[]`s

Somente corrigindo o colega, para que possa escrever na página que está sendo processada deve proceder da seguinte forma:

PrintWriter saida = response.getWriter();
saida.println("<h1>Hello World.</h1>");

// ou ainda

out.println("<h1>Hello World</h1>");

Té mais!

Vlw danilo,

já editei o post para não ter informações erradas…

[]`s

Obrigado a todos, perfeito!

Dentro da pasta tomcat/logs ele cria 1 arquivo STDOUT.txt com o out.println resultante.

Vlw a todos!!

[quote=tecdanilo][quote=silviofernandes]
E para aparece algo na sua página você precisa escrever algo nela, no seu caso coloque no metodo service o comando response.write(“aqui é o que você deseja que apareça na tela”);

[/quote]

Somente corrigindo o colega, para que possa escrever na página que está sendo processada deve proceder da seguinte forma:

PrintWriter saida = response.getWriter();
saida.println("<h1>Hello World.</h1>");

// ou ainda

out.println("<h1>Hello World</h1>");

Té mais![/quote]

Pessoal, também to lendo o mesmo livro e tendo os mesmos problemas com esse exemplo aí. Já segui as orientações de voces e o resultado foi o seguinte:

a) localizei o arquivo stdout_.log com as saídas do system.out.println. Beleza!

 Agora, gostaria de saber o seguinte: a única forma de acompanhar o console do tomcat é editando esse arquivo sempre que executar o servlet ou existe algo mais prático (alguma janela que se atualize sempre que o conteudo do arquivo mudar, ou algum comando no DOS que gere os resultados a cada execução, ou coisa do tipo..)?

b) alterei o código para:

import javax.servlet.*;

public class PrimitiveServlet implements Servlet {

	public void init(ServletConfig config) throws ServletException
	{
		PrintWriter saida = response.getWriter();
		saida.println("<h1>init</h1>");
	}
}
 Mas o Eclipse acusou : "PrintWriter cannot be resolved to a type" e "response cannot be resolved".  Então fiz as seguintes alterações no código:
import java.io.PrintWriter;
import javax.servlet.*;

public class PrimitiveServlet implements Servlet {
   
	public void init(ServletConfig config) throws ServletException
	{
		ServletResponse response;
		PrintWriter saida = response.getWriter();
		saida.println("<h1>init</h1>");
	}
}
 Mas o Eclipse continuou acusando erros: "Unhandled exception type IOException" e "The local variable response may not have been initialized".  O Eclipse recomenda "Add throws declaration" (isso deixaria a assinatura do método diferente da assinatura na interface implementada - javax.servlet.Servlet.init()), "Initialize the variable"(isso eu implementei) e "Surround with try/catch"(implementei também).  O Eclipse então reclamou que a variável "saida" também deveria ser inicializada e eu o fiz, resultando no seguinte código:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;

public class PrimitiveServlet implements Servlet {
   
	public void init(ServletConfig config) throws ServletException
	{
		ServletResponse response = null;
		PrintWriter saida = null;
		try {
			saida = response.getWriter();
			saida.println("<h1>init</h1>");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
 Resultado: o Eclipse compilou normalmente mas a execução no tomcat causou uma exceção do tipo: 

E o que é que eu faço agora?! :frowning: :!: