Me ajude com sevlet

16 respostas
X
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);
    }
}

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 ^^

16 Respostas

T

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:

X
cara tentei isso mais rerpota o mesmo erro
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.


--------------------------------------------------------------------------------
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);
    }
}
W

posta tua jsp ae

X

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

E

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

W

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.

W

eberson_oliveira:
Olá,

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

[]s

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

E

weberdls:
eberson_oliveira:
Olá,

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

[]s

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

Se for assim ele poderia simplesmente chamar:

http.../contexto/servlet?nome=jose&endereco=rua2&email=[email removido]&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

T
xxjamisxx:
cara tentei isso mais rerpota o mesmo erro
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.


--------------------------------------------------------------------------------
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);
    }
}

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

W

eberson_oliveira:
weberdls:
eberson_oliveira:
Olá,

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

[]s

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

Se for assim ele poderia simplesmente chamar:

http.../contexto/servlet?nome=jose&endereco=rua2&email=[email removido]&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

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

A

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!

W

W

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!

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

X
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Formulario</title>
</head>
<body>
  <form action="adicionarContato" methor="GET">
    Nome: <input type="text" name="nome" /><br/>
    E-Mail: <input type="text" name="email" /><br/>
    Endereço: <input type="text" name="endereco" /><br />
    Data Nascimento: <input type="text" name="dataNascimento" /><br />
     
     <input type="submit" value="Gravar" />
    </form>
</body>
</html>

acesso pelo servlet por aqui

E

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

X

fmz

Criado 20 de abril de 2010
Ultima resposta 22 de abr. de 2010
Respostas 16
Participantes 5