Pessoal, sou iniciante em Java para Web e já me deparei com um problema. Preciso desenvolver uma aplicação com um formulário em que o usuário imposte vários dados, entre eles a data de nascimento. Ao enviar os dados, a tela retorna os dados digitados e sua idade. Desenvolvi a estrutura de um servlet, mas não compila, creio que ainda não entendo a lógica de Java e esteja fazendo um monte de besteiras, mas vou impostar o código e contar com a boa vontade e paciência de vocês.
[code]import javax.servlet.;
import javax.servlet.http.;
import java.io.;
import java.util.;
public class ParametrosServlet2 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
int idade,diaNasc,mesNasc,anoNasc,idade2;
PrintWriter saida = response.getWriter();
String nome = request.getParameter(“nome”);
diaNasc = Integer.parseInt (request.getParameter(“diaNasc”));
mesNasc =Integer.parseInt ( request.getParameter(“mesNasc”));
anoNasc =Integer.parseInt ( request.getParameter(“anoNasc”));
String rg = request.getParameter(“rg”);
String cpf = request.getParameter(“cpf”);
String endereco = request.getParameter(“endereco”);
String cep = request.getParameter(“cep”);
SimpleDateFormat formataanohoje = new SimpleDateFormat(“yyyy”);
Date a = new Date();
String anohoje = formataanohoje.format (a);
SimpleDateFormat meshoje = new SimpleDateFormat(“mm”);
Date m = meshoje.parse(meshoje);
SimpleDateFormat diahoje = new SimpleDateFormat(“dd”);
Date m = diahoje.parse(diahoje);
idade = (anohoje-anoNasc);
idade2 = (anohoje-anoNasc)-1;
saida.println("");
saida.println("");
saida.println("Nome: " + nome + “
”);
saida.println("RG: " + rg + “
”);
saida.println("CPF : " + cpf + “
”);
saida.println("Endereço : " + endereco + “
”);
saida.println("CEP : " + cep + “
”);
if (diaNasc == 31 && mesNasc == 02){
saida.println(“Esta data é nula.”);}
else if (diaNasc > (diahoje) && mesNasc == (meshoje)){
saida.println(“Idade: “+idade+””);}
else if (diaNasc < (diahoje) && mesNasc ==(meshoje)){
saida.println(“Idade: “+idade2+”” );}
else if (mesNasc >(meshoje)) {
saida.println("Idade: “+idade+” ");}
else if (mesNasc <(meshoje)) {
saida.println("Idade: “+idade2+” ");}
saida.println("");
saida.println("");
}
}[/code]
[code]
Nome:Endereço:
RG:
CPF:
Email:
Data de Nascimento:
[/code]
[code]<?xml version="1.0" encoding="UTF-8"?>
Recupera Parametros ParametrosServlet2 Recupera Parametros /parametros [/code]Postei os códigos em ordem: servlet Java, HTML e XML. Como vocês puderam notar, eu sou péssimo, não só em Java, mas, em HTML também. Em parte, meu código tosco em HTML se deve ao fato de eu não ter me preocupado em utilizar um método, já que sou iniciante. Se vcs puderem me ajudar, eu agradeço muitíssimo.
Para ver a diferença entre datas, dê uma olhada neste tópico:
http://www.guj.com.br/posts/list/9440.java
Valeu, amigo. Utilizei “GregorianCalendar”, o código foi compilado mas, agora o Tomcat não abre o arquivo. Meu código ficou assim:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class ParametrosServlet2 extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
int idade,diaNasc,mesNasc,anoNasc,idade2;
PrintWriter saida = response.getWriter();
String nome = request.getParameter("nome");
diaNasc = Integer.parseInt (request.getParameter("diaNasc"));
mesNasc =Integer.parseInt ( request.getParameter("mesNasc"));
anoNasc =Integer.parseInt ( request.getParameter("anoNasc"));
String rg = request.getParameter("rg");
String cpf = request.getParameter("cpf");
String endereco = request.getParameter("endereco");
String cep = request.getParameter("cep");
Calendar calendar = new GregorianCalendar();
int day = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
idade = (year-anoNasc);
idade2 = (year-anoNasc)-1;
saida.println ("<html>");
saida.println ("<body>");
saida.println ("Nome: " + nome + "<br/>");
saida.println ("RG: " + rg + "<br/>");
saida.println ("CPF : " + cpf + "<br/>");
saida.println ("Endereço : " + endereco + "<br/>");
saida.println ("CEP : " + cep + "<br/>");
if (diaNasc == 31 && mesNasc == 02){
saida.println("Esta data é nula.");}
else if (diaNasc > (day) && mesNasc == (month)){
saida.println("Idade: "+idade+"");}
else if (diaNasc < (day) && mesNasc ==(month)){
saida.println("Idade: "+idade2+"" );}
else if (mesNasc >(month)) {
saida.println("Idade: "+idade+" ");}
else if (mesNasc <(month)) {
saida.println("Idade: "+idade2+" ");}
saida.println("</body>");
saida.println("</html>");
}
}
description The requested resource (/aplicacao/index.html) is not available.
Antes de mais nada, eu salvei os arquivos nas pastas corretas, copiei a pasta para a “webapps” do Tomcat e testei outra aplicação, que funcionou corretamente.
O que pode ter acontecido?
não sei se vai ajudar… mas vou mandar o código que criei pois precisei deste metodo tb…
falow
é só passar duas datas no format “date” que ele retornaa diferença em anos em formato inteiro
public int Diferenca(){
int i;
int f;
int ano = 0;
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
i = Integer.parseInt(formato.format(dataInicial).substring(6, 10));
f = Integer.parseInt(formato.format(dataFinal).substring(6, 10));
ano = f-i;
if (ano!=0){
i = Integer.parseInt(formato.format(dataInicial).substring(3, 5));
f = Integer.parseInt(formato.format(dataFinal).substring(3, 5));
if (f<i){
ano-- ;
} else
i = Integer.parseInt(formato.format(dataInicial).substring(0, 2));
f = Integer.parseInt(formato.format(dataFinal).substring(0, 2));
if (f<i){
ano--;
}
}
return ano;
}