Dúvida - Validação de String usando Servlets

2 respostas
E

Olá! Antes de mais nada, preciso dizer que sou iniciante no uso da linguagem Java… Estou com uma dúvida, que para mtos pode parecer primária, mas que nesta altura me aflige bastante… vamos ao problema: estou aprendendo a usar Servlets com o protocolo Http, para isso estou desenvolvendo códigos bem curtos. A minha dúvida é como validar uma String, sendo que, antes do “usuário” fornecer seu nome e sobrenome, e unir esses parâmetros posteriormente, eu transformo as variáveis nulas em vazias. Não sei como fazer essa verificação depois… :oops:

O código é este abaixo:

import java.io.IOException;
import java.io.PrintWriter;

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

public class nomeSobrenome extends HttpServlet 
{
	protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
	{
		writeHeader(response);
		writeForm(request, response);
		writeFooter(response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
	{
		writeHeader(response);
		writeForm(request, response);
		PrintWriter pw = response.getWriter();
		pw.println("<BR>");
		
		String nome = request.getParameter("NOME");
		
		try
		{
			nome.equals("");
		}
	catch(Exception e)
		{
		pw.println("Por favor escreva o nome!");
		writeFooter(response);
		return;
		}
		String sobrenome = request.getParameter("SOBRENOME");
		
		try
		{
			sobrenome.equals("");
		}
		catch(Exception e)
		{
			pw.println("Por favor escreva o sobrenome!");
			writeFooter(response);
			return;
		}
		pw.println("O nome completo é:" + (nome + sobrenome));
		writeFooter(response);
	}
	private final void writeHeader (HttpServletResponse response)throws IOException
	{
		response.getWriter().println("<HTML><TITLE>NOME COMPLETO</TITLE><BODY>");
	}
	private final void writeFooter (HttpServletResponse response)throws IOException
	{
		response.getWriter().println("</BODY></HTML>");
	}
	private final void writeForm (HttpServletRequest request, HttpServletResponse response)throws IOException 
	{
		String nome = new String();
		nome = "";
		nome = request.getParameter("NOME");
		
		PrintWriter pw = response.getWriter();
		
		if (nome == null)
		{
			nome = "";
			pw.println("<INPUT TYPE=\"TEXT\" NAME=\"NOME\" VALUE =\"" + nome + "\"/>");
		}
		
		else if(nome.equals(""))
		{
			pw = response.getWriter();
			pw.println("Campo nome vazio ou com preenchimento inválido. Por favor escreva o nome!");
		}
		else
		{
			pw = response.getWriter();
			pw.println("<INPUT TYPE=\"TEXT\" NAME=\"NOME\" VALUE =\"" + nome + "\"/>");
		}
		
		String sobrenome = new String();
		sobrenome = "";
		sobrenome = request.getParameter("SOBRENOME");
		
		pw = response.getWriter();
		
		if(sobrenome == null)
		{
			sobrenome = "";
			pw.println("<INPUT TYPE=\"TEXT\" NAME=\"NOME\" VALUE =\"" + sobrenome + "\"/>");
		}
		
		else if(sobrenome.equals(""))
		{
			pw = response.getWriter();
			pw.println("Campo sobrenome vazio ou com preenchimento inválido. Por favor escreva o sobrenome!");
		}
		else
		{
			pw = response.getWriter();
			pw.println("<INPUT TYPE=\"TEXT\" NAME=\"SOBRENOME\" VALUE =\"" + sobrenome + "\"/>");
		}
		
		pw = response.getWriter();
		
		pw.println("<FORM ACTION=\"nomeSobrenome\" METHOD=\"POST\">");
		pw.println(" + ");
		pw.println("<INPUT TYPE=\"SUBMIT\" VALUE=\"UNIR\"/>");
		pw.println("</FORM>");
	}
	
}

Da maneira que está ele mostra os text box e o button UNIR, mas a validação não ocorre… e ele retorna a seguinte msg de erro:

Por favor escreva o nome!

Agradeço caso alguém tenha paciência e boa vontade para tentar me fazer entender isso…

Érica :?

2 Respostas

J
try
 		{
 			nome.equals("");
 		}
 	catch(Exception e)
 		{
 		pw.println("Por favor escreva o nome!");
 		writeFooter(response);
                        return;

O que vc deseja fazer neste código deve ser para verificar se a variável nome está fazia para isto altere seu try{ … }catch{…} para:

if(nome != null){
    if(nome.equals("")){
        pw.println("Por favor escreva o nome!");
        writeFooter(response);
        return;
    }
}

Altere tanto para nome quanto para sobrenome. Verifique se no seu form os nomes dos campos (<IMPUT TYPE=“TEXT” NAME="…") é “NOME” e “SOBRENOME”, com caixa alta mesmo, lembre que deve ser idêntico o nome do form com o nome utilizado em seu sevlet.

Agora…

Para efeitos de aprendizado está tudo certo mas se deseja fazer algo mais profissional e mesmo para aprendizado após finalizar esta etapa mais básica sugiro estudar as arquiteturas MVC e controladores como VRaptor, Mentawai e Struts 2.0 para sua camada de Controle e vai adicionando outros frameworks para camada de Modelo, como Hibernate e outros para camada de Visualização a medida que for se sentido mais segura.

É isto!!

E

Oi Jefferson, obrigado pela atenção! :lol:
Então, substitui a estrutura try/ catch pelo trecho de código que você sugeriu. Porém, o retorno da operação é:

Resumo da ópera, os parâmetros de entrada não são mostrados… :cry:

érica

Criado 18 de maio de 2007
Ultima resposta 18 de mai. de 2007
Respostas 2
Participantes 2