Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MAILER DAEMON smtp-load.com

system.out que ninguém consegue tirar

Recommended Posts

Sou novato na linguagem Java, me sinto super a vontade com o jeito de programar do PHP, porem me informaram que uma boa prática de programação em JSP seria deixar a página web isolada das classes e métodos. Pois bem, eu coloco as classes e métodos num arquivo e deixo tudo lá(isso eu já fazia em PHP tambem) , dou o nome de kernel, na verdade ele é o tal de beans que todo mundo fala, porem quando

eu faço uma classe com um método e dentro dele coloco um System.out.println("<h1>OI Mundo.</h1>"); ele imprime para os arquivos de logs, ele não imprime na página HTML que foi chamada.

 

Aí me falaram para usar o out.println(""); Esse ultimo funciona apenas fora de classes e métodos, quando tento coloca-lo dentro de uma classe, ele dá um erro de inner class.

Nossa, todas as linguagens que eu conheço deixam eu passar mensagens para o usuário usando funções ou métodos, só Java não deixa? Fiquei até decepcionado com isso.

 

Programadores de forums conhecidos na internet me deram a alternativa de criar o método dentro da classe e depois imprimir o seu conteúdo fazendo a função retornar um valor e eu imprimir esse valor na página JSP usando um out.println , eu achei essa saída um pouco "suja" pois não me permite imprimir várias informações ao mesmo tempo ou comunicar erros ao usuário.

 

Pergunto a você, que código eu tenho que fazer para que o método que reside numa classe dentro de um pacote de beans consiga imprimir mensagens ao ter esse método chamado por um objeto dentro da página JSP?

 

 

Vou dar um exemplo fictício, não tentem compilar!

 

No beans temos:

 

package  maldosa;

class Fofoqueira
{
     public Fofocar(String fofoca)
    {
         // Imprime a fofoca
         System.out.println(fofoca); // Isso só irá imprimir para os logs, se eu usar out.println aqui, apenas, irá dar erro de inner class final.  
         // Imprime a assinatura
         System.out.println("<BR> <BR> Essa foi mais uma fofoca da dona Candinha!");  
    }
}

Na pagina JSP

------------------------

 

<Importe a classe maldosa.Fofoqueira>

<%
   Fofoqueira vizinha = new  Fofoqueira();
   vizinha.Fofocar("A mãe dele tá saindo com outro cara!");
%>

 

 

Pois bem, o codigo fictício acima nao dá erro mas tambem não imprime nada na página HTML, eu gostaria que imprimisse, é impossível isso em JSP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo ! No seu servlet, dentro do metodo doGet (caso voce esteja pedindo a pagina atraves pelo metodo GET, que imagino que seja seu caso) coloque o seguinte:

 

PrintWriter out = response.getWriter();
out.write("Sua mensagem");
out.close();

 

Esse codigo pede para o objeto request um objeto do tipo PrintWriter, que por sua vez é usado para escrever em arquivos, no nosso caso, arquivos .html. Entendeu ?

 

O codigo acima causa o mesmo efeito do System.out.println, só que ao inves de imprimir pro log, imprime para a propria pagina HTML a qual ele vai enviar como resposta para o browser. Se não der certo avise.

 

Só mais uma coisa: Para fazer o mesmo em JSP, voce usa o codigo:

 

<% out.write("Ola mundo"); %>

 

E nesse caso voce nao precisa fazer nenhum import, pois out é o que chamamos de objeto implicito. Espero ter te ajudado, abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo ! No seu servlet, dentro do metodo doGet (caso voce esteja pedindo a pagina atraves pelo metodo GET, que imagino que seja seu caso) coloque o seguinte:

 

PrintWriter out = response.getWriter();
out.write("Sua mensagem");
out.close();

 

Esse codigo pede para o objeto request um objeto do tipo PrintWriter, que por sua vez é usado para escrever em arquivos, no nosso caso, arquivos .html. Entendeu ?

 

O codigo acima causa o mesmo efeito do System.out.println, só que ao inves de imprimir pro log, imprime para a propria pagina HTML a qual ele vai enviar como resposta para o browser. Se não der certo avise.

 

Só mais uma coisa: Para fazer o mesmo em JSP, voce usa o codigo:

 

<% out.write("Ola mundo"); %>

 

E nesse caso voce nao precisa fazer nenhum import, pois out é o que chamamos de objeto implicito. Espero ter te ajudado, abraços.

 

 

Amigo,

Não sei porque você falou de método doGet, o exemplo do código está aí em cima , só basta fazer pouquíssimas modificações para ficar um

código real, acho que se eu uso post ou get não vem ao caso, afinal a pagina exemplo.jsp , nesse momento não recebe dados do usuário e nem formulario tem,

a obrigação dessa página é apenas chamar um método de uma classe ao ser carregada, quando alguem digitar www.site.com.br/exemplo.jsp , só isso.

 

Quando coloquei o codigo PrintWriter out = response.getWriter(); dentro da método Fofocar, o Netbeans me reclamou que eu deveria fazer uma classe chamada PrinterWriter ou adicionar um import java.io.PrintWriter , pois bem , coloquei o import, depois que coloquei o import o Netbeans disse que o response estava errado, para eu corrigir eu deveria criar uma classe com o mesmo nome ou declarar uma variavel privada.

Resumindo, não funcionou.

 

Outra coisa, imprimir

usando dentro de <% %> numa página jsp é facílimo, é só fazer

<%
 // Isso funciona normalmente direto na página jsp, acontece que quem deve dar os avisos é um método
 //  que está numa classe dentro do beans,  a boa pratica de programação em JSP diz que a página em si não
 //  deve ter o código Java mas sim só chamar códigos depositados numa classe(o beans), quando o out 
 // fica dentro de uma classe/método que está em outro arquivo que está em outro pacote, ele dá erro, entendeu?
 out.println("Oi pessoal");
%>

 

Só lembrando que o código que desenvolve a problemática está aí acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Amigo,

Não sei porque você falou de método doGet, o exemplo do código está aí em cima , só basta fazer pouquíssimas modificações para ficar um

código real, acho que se eu uso post ou get não vem ao caso, afinal a pagina exemplo.jsp , nesse momento não recebe dados do usuário e nem formulario tem,

a obrigação dessa página é apenas chamar um método de uma classe ao ser carregada, quando alguem digitar www.site.com.br/exemplo.jsp , só isso.

 

 

Primeiramente, se não fez sentido pra você o que o Luis falou, é porque você precisa pelo menos ter uma noção mínima de Servlets. Pra fazer isso que você quer, é necessário que a sua classe estenda / herde de HttpServlet e implemente os métodos doGet e doPost. Os métodos doGet e doPost recebem as implementações de HttpServletRequest que contém os dados da requisição e HttpServletResponse que contém informações de resposta ao cliente. Segundo, não faz sentido programar do jeito que você quer. Essa forma de programar usando Servlet pra ficar imprimindo coisas pro cliente através de PrintWritter está completamente defasada.

 

Depois que tiver um conhecimento regular de servlets vá estudar a arquitetura MVC e frameworks que a implementem (JSF por exemplo). O seu raciocínio ainda está bem a aquém da arquitetura Java.

 

Apenas como forma de aprender a usar servlets, dê uma estudada neste tutorial básico http://javafree.uol.com.br/artigo/9127/Tutorial-basico-de-Servlet.html

 

Na internet você acha uma infinidade de tutoriais do gênero. Mas como disse, se preocupe mais em dominar a programação orientada a objetos e a arquitetura MVC.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Amigo,

Não sei porque você falou de método doGet, o exemplo do código está aí em cima , só basta fazer pouquíssimas modificações para ficar um

código real, acho que se eu uso post ou get não vem ao caso, afinal a pagina exemplo.jsp , nesse momento não recebe dados do usuário e nem formulario tem,

a obrigação dessa página é apenas chamar um método de uma classe ao ser carregada, quando alguem digitar www.site.com.br/exemplo.jsp , só isso.

 

 

Primeiramente, se não fez sentido pra você o que o Luis falou, é porque você precisa pelo menos ter uma noção mínima de Servlets. Pra fazer isso que você quer, é necessário que a sua classe estenda / herde de HttpServlet e implemente os métodos doGet e doPost. Os métodos doGet e doPost recebem as implementações de HttpServletRequest que contém os dados da requisição e HttpServletResponse que contém informações de resposta ao cliente. Segundo, não faz sentido programar do jeito que você quer. Essa forma de programar usando Servlet pra ficar imprimindo coisas pro cliente através de PrintWritter está completamente defasada.

 

Depois que tiver um conhecimento regular de servlets vá estudar a arquitetura MVC e frameworks que a implementem (JSF por exemplo). O seu raciocínio ainda está bem a aquém da arquitetura Java.

 

Apenas como forma de aprender a usar servlets, dê uma estudada neste tutorial básico http://javafree.uol.com.br/artigo/9127/Tutorial-basico-de-Servlet.html

 

Na internet você acha uma infinidade de tutoriais do gênero. Mas como disse, se preocupe mais em dominar a programação orientada a objetos e a arquitetura MVC.

 

 

Olha, quem deve saber se faz sentido ou não sou eu que estou desenvolvendo.

O exemplo acima ninguém se deu ao trabalho de analisar antes, nem você mesmo sabe

fazer o código para sanar o problema proposto, então não é porque o código seja sem sentido para você

que ele seja sem sentido para todos.

Por acaso se você tem vários métodos funcionando e esses métodos encontram erros de tratamento de dados

ele não podem comunicar ao usuário? Sem sentido seria eu declarar várias variareis que eu não uso, colocar tudo num looping infinito e tentar chamar main dentro

desse looping, isso que é sem sentido. Agora uma página JSP chamar um método em uma classe para por exemplo imprimir uma saída formatada ser sem sentido,

me desculpe, mas sem sentido foi sua colocação pois se um código supre as minhas necessidades ele não é sem sentido.

 

Agora confesse que nem você mesmo sabe resolver o problema de fazer um out.println() funcionar dentro de um método.

Em PHP isso é tão fácil, basta eu fazer a classe, depois a função e dentro da função usar echo ou print, não uso PHP me exigem que o código seja em java.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eh meu caro! Com essa sua humildade você vai longe... Boa-sorte na solução do seu problema!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.