Dados digitados no formulario não aparecem na tela

1 resposta
D

Saudações.

Desenvolvi 3 classes servlets para usar como chat num exemplo que peguei no Guj. As classes são:
//package classes;


import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.*;

//import classes.*;
public class Formulario extends HttpServlet {
    // Método Get
    protected void doGet(
            final HttpServletRequest req,
            final HttpServletResponse res)
    throws ServletException{
        try{
          // seta o Tipo de Conteúdo
			res.setContentType("text/html");
			res.getWriter().println("<html><header><meta HTTP-EQUIV="Pragma" CONTENT="no-cache">" 
			                         + "</header><body>");
	     // Pega a lista de Usuários
			String codigoPara = "<option selected value="">Todos</option>";
			Iterator i = new HashMap(UsuarioChat.getUsuarios()).keySet().iterator();
			while (i.hasNext()){
			    String value = (String) i.next();
			    codigoPara += "<option value=""
			    	            + value
			    	            + "">"
			    	            + value
			    	            + "</option>";
			}
			// mostra o formulário
			res.getWriter().print(
			        "<html> <form name=chat action=""
			        + this.getClass().getName()
			        + "" method=post>
"
			        + "<input type=hidden name=show value=form>
"
			        + "
	<input name=message> para <select name=para>"
			        + codigoPara
			        + "</select>"
			        + "
	<input type=submit value="Enviar">
"
			        + "
	<input type=hidden name=sair value="">"
					+ "<input onClick="chat.sair.value='1';chat.submit();" type=button value=Sair>
"
			        + "</form>
"
			        + "<script>document.getElementById('message').focus();</script>"
			        + "</html>"
			        );
        }catch(Exception ex){
            Sala.saveLog("Execption Ocorreu! ", ex);
            throw new ServletException("Servlet Exception", ex);            
        }
    }

	/**
	 * Sends a message
	 * @see javax.servlet.http.HttpServlet#doPut(HttpServletRequest, HttpServletResponse)
	 */
	protected void doPost(
		final HttpServletRequest req,
		HttpServletResponse res)
		throws ServletException, IOException {

		// a sessao
		HttpSession session = req.getSession(false);
		if (session == null) {
			res.getWriter().println("Sua sessao expirou!");
			// manda uma msg nula pra verificar quem saiu
			UsuarioChat.enviaMensagem(null);
			return;
		}

		// o usuario
		final Usuario user = (Usuario) req.getSession(false).getAttribute("user");

		try {

			// se existir algum texto
			if (req.getParameter("message") != null) {
				
				// se mensagem nao for vazia
				if (!req.getParameter("message").trim().equals("")) {

					// cria a mensagem
					Mensagem msg =
						new UsaMensagem(
							user,
							UsuarioChat.getPorNome(req.getParameter("para")),
							req.getParameter("message"));

					// envia a mensagem
					UsuarioChat.enviaMensagem(msg);
					
				}

				// mostra o formulario novamente
				doGet(req, res);

			}
			
			// se for para sair
			if (req.getParameter("sair").equals("1")) {
				user.desconecta();
				res.getWriter().println(
					"<script>top.document.location.href='http://www.guj.com.br';</script>");
				return;
			}

		} catch (Exception ex) {
			Sala.saveLog("Usuario " + user.getNome() + " deu pau", ex);
		}

	}
}
//package classes;
import java.io.IOException;

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

//import classes.*;

public class Login extends HttpServlet {

//  Tempo de sessão: 10 minutos
    final private static int tempoDeSessao = 10 * 60;
    
    protected void doGet(
            final HttpServletRequest req,
            final HttpServletResponse res)
            throws ServletException, IOException{
        res.setContentType("text/html");
        res.getWriter().println("<html><header><meta HTTP-EQUIV="Pragma" " +
                                "CONTENT="no-cache"></header>" +
                                "<title> Ead ChAt - Ensino á Distância Unerj </title><body>");
        res.getWriter().println("Login para o chat: " +
                                  "<form action="" +
                                  this.getClass().getName() +
        "" method=post><input name=login><input type=submit" + 
        " value=Login></form></html>");
    }
    /* O método POST checa a viabilidade de criar um usuário
     * e o cria */
    	protected void doPost(final HttpServletRequest req,
    	        final HttpServletResponse res)
    	throws ServletException, IOException{
//    	  Seta o tipo de conteúdo
            res.setContentType("text/html");
        // Se já existe uma sessão, invalida ela
            if (req.getSession() != null 
                && req.getSession().getAttribute("user") != null) {
                    req.getSession().invalidate();
            }
            try{
                // Cria um usuário
                Usuario usuario = new UsuarioChat(req.getParameter("login"));
                req.getSession().setAttribute("user", usuario);
                
                // Tempo Limite
                req.getSession().setMaxInactiveInterval(tempoDeSessao);
            }catch(IllegalArgumentException iaex){
                // se já existe um usuário, mostra pagina de login novamente
    			res.getWriter().println("<html><header><meta HTTP-EQUIV="Pragma" CONTENT="no-cache"></header><body>");
    			res.getWriter().println(
    					""
    						+ "
	 <b>Desculpe!</b>  existe um usuario com esse nome:<br>"
							+  "Por favor, insira um nome diferente!<br>"
    						+ "
	<form action="
    						+ this.getClass().getName()
    						+ " method=post>"
    						+ "
		<input name=login>"
    						+ "
		<input type=submit value=Entrar>"
    						+ "
	</form>"
    						+ "
</html>");
                return;
             }

		res.getWriter().print(
			         "<html><frameset rows=*,100><frame name="text""
		             + "src="" + this.getClass().getName()
				     + ".sla">
<frame name="form" src="" + this.getClass().getName()
					 + ".for">"
					 + "</frameset></html>");
       
    	return;
		}
		
}
//package classes;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.SocketException;
import java.text.SimpleDateFormat;
import java.util.Date;

//import classes.*;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Sala extends HttpServlet {


/**    static class UsuarioChat{

       public static void enviaMensagem(UsaMensagem mensagem) {

                     
        }

        public static void remUsuario(Usuario usuario) {
        
            
       }
	       
    } */
    
    /** Mensagem de Boas Vindas */
    final private static String bemVindo =
        "<table widht=100%><tr><td><font size= +1 color=red>Bem Vindo ao Chat EaD </font> <br><br>
"
        + "<li> Envie seus comentários para <a href='mailto:[email removido]' target=novo> o Ead </a><br>
"
        + "</td></tr></table><br><br><br>";
    
     Usuario usuario;
    Sala sessao;
    /** Tempo de sessão = 10 minutos */
    final private static int tempoSessao = 10 * 60;
    
    /** Método get */
     public final void doGet(
            final HttpServletRequest req,
            final HttpServletResponse res)
    throws ServletException, IOException{
        try{
            // Seta o tipo de conteúdo
            res.setContentType("text/html");
            res.getWriter().println("<html><header><meta HTTP-EQUIV="Pragma" CONTENT="no-cache"></header><body>");
            
            // Envia o cabeçalho Html
            res.getWriter().print(bemVindo);
            
            // A sessão
            HttpSession sessao = req.getSession(false);
            if (sessao == null){
                res.getWriter().println("Sua sessão expirou");
                Sala.saveLog(
                        "Sessão Expirada", 
                        new SocketException("Sessão expirou durante envio de mensagem"));
                return;
            }
            
            // O Usuário
            final Usuario usuario = (Usuario) sessao.getAttribute("user");
             if (usuario == null){
                res.getWriter().println("Não foi possivel fazer identificação");
                Sala.saveLog(
                        "Não foi possivel achar o usuário", new SocketException("Cadê ele?"));
                return;
            }
            usuario.setResposta(res);
            usuario.setSessao(req);
            
            // Script de auto scrolling, auto removing de usuário e auto add
            res.getWriter().println(
                    "<script>
"
					+ "function scl()
"
					+ "{
"
					+ "  document.writeln("<S"+"CRIPT>window.scrollBy(0,100000)</S"+"CRIPT>");
"
					+ "}
"
					+ "function remUsuario(my_value)
"
					+ "{
"
					+ "  var my_index=-1;
"
					+ "  for (var m=0; m<top.frames[1].document.forms[0].para.options.length; m++) {
"
					+ "    if (top.frames[1].document.forms[0].para.options[m].value==my_value) {
"
					+ "      my_index=m;
"
					+ "    }
"
					+ "  }
"
					+ "  if(my_index!=-1) { top.frames[1].document.forms[0].para.options.remove(my_index); }
"
					+ "}
"
					+ "function addUser(my_value)
"
					+ "{
"
					+ "  var oOption = document.createElement("OPTION");
"
					+ "  oOption.text=my_value;
"
					+ "  oOption.value=my_value;
"
					+ "  top.frames[1].document.forms[0].para.options.add(oOption);
"
					+ "}
"
					+ "document.write("
					+ "Este é um JavaScript!"
					+")"
					+ "</script>
"
			  );
            
            // Emite o flush
            res.getWriter().flush();
            res.flushBuffer();
        
            // Envia mensagem de entrada
             UsuarioChat.enviaMensagem(
                    new UsaMensagem(usuario, " entrou na sala" 
                            + new SimpleDateFormat("hh:mm").format(new Date())
                            + "<script>addUser('"
                            + usuario.getNome()
                            + "');</script>")
                            );
            // Roda eternamente até houver uma exceção
            while (usuario.estaConectado()){
                try{
                    // Espera pela próxima mensagem
                    Mensagem msg = usuario.getNovaMensagem();
                    
                    // Checa a sessão
                    usuario.checaSessao();
                    
                    // Se for uma mensagem mostra ela senão ...
                    if (msg != null){
                      //usuario.addLog(msg.getCodHtml());
                        usuario.mostraMensagem(msg);
						
						
                    }
                    // ... verifica a conexão
                    else{
                        usuario.mostraMensagem(null);
						
                    }
                    
                }catch(SocketException e){
                    //usuario.addLog("socketexception:
" + exceptionToString(e));
                    usuario.desconecta();                    
                }
            }            
        }catch(Exception e){
            UsuarioChat.enviaMensagem(
                    new UsaMensagem(usuario, exceptionToString(e)));
           // usuario.addLog("deu exception, desconectar: ", e.toString());
            usuario.desconecta();
        }
  
    
    // Tira o usuário da lista e ...
     //usuario.addLog("usuário saíu da sala");
      UsuarioChat.remUsuario(usuario);
      
    // ... inválida a sessão
      try{
     //   sessao.in  
      }catch(IllegalStateException ex){
          Sala.saveLog("Exception Ocorreu!", ex);
          throw new ServletException("ServletException", ex); 
      }
    }
      
      // Salva a informação
      static public void saveLog(String msg, Throwable ex) {
  	}

  	private static String exceptionToString(Throwable e) {
  		// se der uma exception
  		StringWriter writer = new StringWriter();
  		e.printStackTrace(new PrintWriter(writer));
  		return (writer.getBuffer().toString());
  	}

}

Executando no Tomcat consigo fazer o login normalmente usando a classe Login, abre os 2 frames com Sala e Formulario, mas quando digito a mensagem e mando enviar não aparece nada em Sala.

Como poderia resolver isso?

Obrigado pela atenção!

1 Resposta

G

Também estou com um problema parecido.

Help.

Criado 18 de maio de 2004
Ultima resposta 18 de mai. de 2004
Respostas 1
Participantes 2