Me ajude com sevlet

[code]package br.com.caelum.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import br.com.Modelo.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.DAO.*;

public class OiMundo extends HttpServlet{

/**
 * 
 */


protected void service(HttpServletRequest request,HttpServletResponse response)
   throws ServletException, IOException{
	 
	PrintWriter out = response.getWriter();
    
	String  nome =request.getParameter("nome");
	String  endereco = request.getParameter("endereco");
	String email = request.getParameter("email");
	String datan =request.getParameter("dataNascimento");
	 Calendar datanascimento = null;  
	
	 try {  
		Date date =  new SimpleDateFormat("dd/mm/yyyy").parse(datan);
     datanascimento = Calendar.getInstance();
         datanascimento.setTime(date);
          
	} 
	catch 
		(ParseException e) {
		     out.println("erro na conveçao");
      return;         	
	} 

	 Contato contato = new Contato(); 
		contato.setNome(nome);
		contato.setEmail(email);
		contato.setEndereco(endereco);
		contato.setDatanascimento(datanascimento);
	    
		ContatoDAO dao = new ContatoDAO();
		dao.doinsert(contato);
		
}

protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException ,IOException {
service(request, response);
}
protected void doPost(HttpServletRequest request ,HttpServletResponse response)
throws ServletException ,IOException
{
service(request, response);
}
}
[/code]

minha servlet e esta da erro na converça da data

HTTP Status 500 - 

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

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.lang.NullPointerException
	java.text.SimpleDateFormat.parse(Unknown Source)
	java.text.DateFormat.parse(Unknown Source)
	br.com.caelum.servlet.OiMundo.processRequest(OiMundo.java:38)
	br.com.caelum.servlet.OiMundo.doGet(OiMundo.java:58)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.


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

Apache Tomcat/6.0.26

gera este erro =/

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Fj21-agenda</display-name>
  <servlet> 
     <servlet-name>servletOiMundo</servlet-name>
     <servlet-class>br.com.caelum.servlet.OiMundo</servlet-class> 
   </servlet> 
  <servlet-mapping> 
     <servlet-name>servletOiMundo</servlet-name>
     <url-pattern>/oi</url-pattern> 
   </servlet-mapping>   
   <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app> 

a xml ae quem puder me ajuda agradeço ^^

Vamos analisar o erro

Ou seja, você está tentando manipular um objeto nulo no método processRequest do arquito OiMundo na linha 38
Que contém o seguinte código

Date date =  new SimpleDateFormat("dd/mm/yyyy").parse(datan);  

Dando uma analisada, vi que a variável datan é um parâmetro da request cujo você pega o seu valor da seguinte maneira:

request.getParameter("dataNascimento");

Onde o certo é

request.getAttribute("dataNascimento");

Tudo bem que ninguém nasce sabendo, mas, um pouquinho de atenção as mensagens de erro, você teria chego a mesma conclusão!!! :wink:

cara tentei isso mais rerpota o mesmo erro

[code]HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
java.text.SimpleDateFormat.parse(Unknown Source)
java.text.DateFormat.parse(Unknown Source)
br.com.caelum.servlet.OiMundo.service(OiMundo.java:39)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.


[/code]

package br.com.caelum.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import br.com.Modelo.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.DAO.*;

public class OiMundo extends HttpServlet{

	/**
	 * 
	 */


	@Override
		protected void service(HttpServletRequest request, HttpServletResponse response)
				throws ServletException, IOException {
			// TODO Auto-generated method stub
			
		
			PrintWriter out = response.getWriter();
		    
			String  nome =request.getParameter("nome");
			String  endereco = request.getParameter("endereco");
			String email = request.getParameter("email");
		String datan =(String) request.getAttribute("dataNascimento");
			 Calendar datanascimento = null;  
			

			 try {  
					Date date =  new SimpleDateFormat("dd/mm/yyyy").parse(datan);
		         datanascimento = Calendar.getInstance();
			         datanascimento.setTime(date);
			          
				} 
				catch 
					(ParseException e) {
					     out.println("erro na conveçao");
			      return;         	
				} 
		
			 Contato contato = new Contato(); 
				contato.setNome(nome);
				contato.setEmail(email);
				contato.setEndereco(endereco);
				contato.setDatanascimento(datanascimento);
			    
				ContatoDAO dao = new ContatoDAO();
				dao.doinsert(contato);
				
		}
	
		
   protected void doGet(HttpServletRequest request,HttpServletResponse response)
   throws ServletException ,IOException {
	   service(request, response);
   }
   protected void doPost(HttpServletRequest request ,HttpServletResponse response)
    throws ServletException ,IOException 
    {
	   service(request, response);
    }
}

posta tua jsp ae

cara nao fiz jsp pq ainda nao aprendir
primeira vez que to mexendo com servlet
entao so fiz o servelt
se puder me ajuda agradeço

Olá,

Ok, isto está ficando confuso. Explica então como você fez para acessar a servlet e ocorrer a exceção?

Acredito que o problema ocorre por causa da forma como a servlet está sendo acessada. Ela não lançaria exceção se não fosse requisitada (o fato de subir o servidor e não acessar a servlet, não implica na ocorrência da exceção)… por isso queria saber como você fez para acessar a sua servlet.

[]s

Achamos o problema então ! rs

Essa classe que você criou, vai interagir com suas jsp’s, que nada mais são, do que suas páginas, com códigos HTML, tags, JSTL e tudo mais.

Da forma como vc criou, só a Servlet não resolve, pois você está buscando parametros de um “request”, que nada mais é do que um “clique” em sua JSP submetendo seu formulário com data de nascimento, etc, etc…

Eu poderia colar aqui uma JSP que acessasse sua Servlet, mas não teria graça! Agora o que vc tem que fazer, é pesquisar, como as paginas jsp interagem com as servlets! Acredite, vai ser muito melhor do que eu colar aqui pronto pra vc.

www.caelum.com.br , lá tem a apostila fj-21, que vai te dar muitos conceitos legais.

[quote=eberson_oliveira]Olá,

Ok, isto está ficando confuso. Explica então como você fez para acessar a servlet e ocorrer a exceção?

[]s[/quote]

Ele deve ter tentado acessar a servlet direto no contexto que ele mapeou : /oi

[quote=weberdls][quote=eberson_oliveira]Olá,

Ok, isto está ficando confuso. Explica então como você fez para acessar a servlet e ocorrer a exceção?

[]s[/quote]

Ele deve ter tentado acessar a servlet direto no contexto que ele mapeou : /oi[/quote]

Se for assim ele poderia simplesmente chamar:

http.../contexto/servlet?nome=jose&endereco=rua2&email=usuario@dominio.com&dataNascimento=dataqq

que já funcionaria… a necessidade de uma jsp/html é evidente, mas pode ser que ele ainda não tenha chegado a esse ponto. Por isso acaba sendo mais simples montar uma url que a servlet entenda.

[]s

[quote=xxjamisxx]cara tentei isso mais rerpota o mesmo erro

[code]HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
java.text.SimpleDateFormat.parse(Unknown Source)
java.text.DateFormat.parse(Unknown Source)
br.com.caelum.servlet.OiMundo.service(OiMundo.java:39)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.


[/code]

[code]
package br.com.caelum.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import br.com.Modelo.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.DAO.*;

public class OiMundo extends HttpServlet{

/**
 * 
 */


@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	
		PrintWriter out = response.getWriter();
	    
		String  nome =request.getParameter("nome");
		String  endereco = request.getParameter("endereco");
		String email = request.getParameter("email");
	String datan =(String) request.getAttribute("dataNascimento");
		 Calendar datanascimento = null;  
		

		 try {  
				Date date =  new SimpleDateFormat("dd/mm/yyyy").parse(datan);
	         datanascimento = Calendar.getInstance();
		         datanascimento.setTime(date);
		          
			} 
			catch 
				(ParseException e) {
				     out.println("erro na conveçao");
		      return;         	
			} 
	
		 Contato contato = new Contato(); 
			contato.setNome(nome);
			contato.setEmail(email);
			contato.setEndereco(endereco);
			contato.setDatanascimento(datanascimento);
		    
			ContatoDAO dao = new ContatoDAO();
			dao.doinsert(contato);
			
	}

protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException ,IOException {
service(request, response);
}
protected void doPost(HttpServletRequest request ,HttpServletResponse response)
throws ServletException ,IOException
{
service(request, response);
}
}
[/code][/quote]

Pelo que você postou aí, não alterou em nada o código anterior!

[quote=eberson_oliveira][quote=weberdls][quote=eberson_oliveira]Olá,

Ok, isto está ficando confuso. Explica então como você fez para acessar a servlet e ocorrer a exceção?

[]s[/quote]

Ele deve ter tentado acessar a servlet direto no contexto que ele mapeou : /oi[/quote]

Se for assim ele poderia simplesmente chamar:

http.../contexto/servlet?nome=jose&endereco=rua2&email=usuario@dominio.com&dataNascimento=dataqq

que já funcionaria… a necessidade de uma jsp/html é evidente, mas pode ser que ele ainda não tenha chegado a esse ponto. Por isso acaba sendo mais simples montar uma url que a servlet entenda.

[]s[/quote]

Sim, outra solução. Ele pode testar passando pela url e depois aprender a forma correta + muitos conceitos com a apostila.

não necessariamente!

mesmo sem o JSP você pode acessar a Servlet, a questão deve ser os parametros via GET que vc não passou, debug e veja quais os valores da requisão!

não necessariamente!

mesmo sem o JSP você pode acessar a Servlet, a questão deve ser os parametros via GET que vc não passou, debug e veja quais os valores da requisão![/quote]

[/quote]

Só editando pra arrumar, falei errado mesmo, os caras arrumaram o que eu disse ai

[code]

Formulario Nome:
E-Mail:
Endereço:
Data Nascimento:
 <input type="submit" value="Gravar" />
</form>
[/code]

acesso pelo servlet por aqui

Você está preenchendo todos os campos?

Dá uma “debugada” e verifique o que está chegando para a sua servlet… qualquer coisa coloca os parâmetros que estão chegando na sua servlet para que possamos tentar ajudar.

[]s

fmz