Ajuda para resolver um programinha

olá pessoal, sou novo no forum e gostaria da ajuda de vocês para resolver um programinha HTML que empaquei nele. ainda sou inexperiente na área e peço desculpas se postei no lugar errado.
ai vai:

<%–
Document : index
Created on : 28/10/2008, 08:01:52
Author : cliente
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<!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=UTF-8”>
<title>JSP Page</title>
</head>
<body>
<h2>Ola Internet!</h2>
<form action=processar.jsp>
Insira seu nome: <input type=text name=nome value=‘nome aqui’>

Insira sua idade: <input type=text name=idade value=‘0’ maxlength=2>

<input type=submit value=enviar>
</form>
<%
String sNome = request.getParameter(“nome”);
int idade = Integer.parseInt(request.getParameter(“idade”));
out.println(“Olá “+sNome+”<br>”);
out.println(“Hoje você tem”+Integer.toString(idade)+“anos<br>”);
%>
</body>
</html>

quando compilo ele consta no seguinte erro:

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 25

22: </form>
23: <%
24: String sNome = request.getParameter(“nome”);
25: int idade = Integer.parseInt(request.getParameter(“idade”));
26: out.println(“Olá “+sNome+”<br>”);
27: out.println(“Hoje você tem”+Integer.toString(idade)+“anos<br>”);
28: %>

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:415)
java.lang.Integer.parseInt(Integer.java:497)
org.apache.jsp.index_jsp._jspService(index_jsp.java:74)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

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

agradeço desde já a ajuda dos colegas :slight_smile:

cade a sua servlet? vc esta passando o Request.getParameter(“nome”); o nome como paramentro ou atributo?
nao seria request.getAttribute(“nome”);?

[quote=abelgomes]cade a sua servlet? vc esta passando o Request.getParameter(“nome”); o nome como paramentro ou atributo?
nao seria request.getAttribute(“nome”);?[/quote]

ele é um request.getParameter(“nome”); mesmo. esse é um exemplo bem básico que tenho na apostila. digitei tudo corretamente.

esse exemplo consiste em criar uma HTML falando Olá Internet e pedindo para o usuário digitar nome e idade. depois que ele digitar ele receberá uma resposta falando o nome dele, a idade, e que em breve ele terá 1 ano a mais. como vc ja deve saber :lol:.

nesse caso está faltando o servlet??? como implemento ele??

muito obrigado por sua resposta amigo.

pq esse erro que ta dando é pq vc esta tentando incializar um int com “”…se essa String tivesser um numero OK…mas se nao tiver nada…da esse erro ai…
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:415)
java.lang.Integer.parseInt(Integer.java:497)

Cara, eu encontrei dois erros:

1 - O primeiro é que você não está colocando o cabeçalho que informa ao servidor a linguagem da página;
2 - Você tá requisitando parametros que ainda não foram passados, logo o java tenta encontrar esses parametros e não os encontra, por isso o erro.

Uma solução seria você colocar o cabeçalho JSP como esse no topo da página :
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

e retirar os parametros que geram o erro

<%
String sNome = request.getParameter(“nome”); // aqui acontece o erro
int idade = Integer.parseInt(request.getParameter(“idade”)); // aqui acontece o erro
out.println(“Olá “+sNome+”
”);
out.println(“Hoje você tem”+Integer.toString(idade)+“anos
”);
%>

coloquei um objeto session para que fiquem armazenados as variáveis que seriam colocadas. mas deu erro, também coloque o cabeçalho que o amigo Leandro passou e deu erro também. ai vai:

com o cabeçalho antigo:
<%–
Document : index
Created on : 28/10/2008, 08:01:52
Author : cliente
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>

JSP Page

Ola Internet!

<% if(session.getAttribute("nome")!=null) { out.println("Você já passou por aqui, seu nome é"+session.getAttribute("nome")+" e você tem "+session.getAttribute("idade")+"anos."); } %> Insira seu nome:
Insira sua idade:
<% String sNome = request.getParameter("nome"); int idade = Integer.parseInt(request.getParameter("idade")); out.println("Olá "+sNome+"
"); out.println("Hoje você tem"+Integer.toString(idade)+"anos
"); out.println("Em breve você terá "+Integer.toString(idade+1)+" anos
"); session.setAttribute("nome", sNome); session.setAttribute("idade", idade); %>

erro:
HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 33

30:
31: <%
32: String sNome = request.getParameter(“nome”);
33: int idade = Integer.parseInt(request.getParameter(“idade”));
34: out.println(“Olá “+sNome+”
”);
35: out.println(“Hoje você tem”+Integer.toString(idade)+“anos
”);
36: out.println(“Em breve você terá “+Integer.toString(idade+1)+” anos
”);

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:415)
java.lang.Integer.parseInt(Integer.java:497)
org.apache.jsp.index_jsp._jspService(index_jsp.java:84)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

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

com o cabeçalho passado por Leandro:
<%–
Document : index
Created on : 28/10/2008, 08:01:52
Author : cliente
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

Ola Internet!

<% if(session.getAttribute("nome")!=null) { out.println("Você já passou por aqui, seu nome é"+session.getAttribute("nome")+" e você tem "+session.getAttribute("idade")+"anos."); } %> Insira seu nome:
Insira sua idade:
<% String sNome = request.getParameter("nome"); int idade = Integer.parseInt(request.getParameter("idade")); out.println("Olá "+sNome+"
"); out.println("Hoje você tem"+Integer.toString(idade)+"anos
"); out.println("Em breve você terá "+Integer.toString(idade+1)+" anos
"); session.setAttribute("nome", sNome); session.setAttribute("idade", idade); %>

erro:

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: /index.jsp(13,8) Page directive: illegal to have multiple occurrences of contentType with different values (old: text/html, new: text/html; charset=ISO-8859-1)
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
org.apache.jasper.compiler.Validator$DirectiveVisitor.visit(Validator.java:133)
org.apache.jasper.compiler.Node$PageDirective.accept(Node.java:590)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
org.apache.jasper.compiler.Validator.validate(Validator.java:1700)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:165)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:294)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:281)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

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

estou grato pela ajuda que estão mi dando pessoal.

abraço

Primeiramente, faça um favor para nós: quando for coloar os códigos… coloque-os entre as Tags [ code ] e [ / code ] (sem espaço entre os caracteres…

&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;html&gt;
&lt;head&gt;
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%&gt;
&lt;/head&gt; 

Voce está setando o tipo de conteúdo da página duas vezes… :
contentType="text/html"
e
contentType="text/html"…

Elimina um deles.

Outra coisa… faz uma validação pra saber se os parametros nao estão nulos (idade e nome <> null)
Aqui em baixo, colocou int = Integer…
deixe tudo como Integer.

int idade = Integer.parseInt(request.getParameter(&quot;idade&quot;)); 

fica:

Integer idade = Integer.parseInt(request.getParameter(&quot;idade&quot;));

Ab’s

obrigado pelas dicas rafaeldiego, é que mi cadastrei agora a pouco no forum hehe.
realemente eu mi distrai e coloquei 2 contentType=“text/html”.
também coloquei o Integer no lugar do int e deu o mesmo erro, alias, na hora que coloquei o Integer no lugar do Int apareceu as exclamações vermelhas hehe.

ta ai ele com as modificações, lembrando q eu coloquei Integer no lugar do Int e deu erro.

[code]<%–
Document : index
Created on : 28/10/2008, 08:01:52
Author : cliente
–%>

JSP Page

Ola Internet!

<% if(session.getAttribute("nome")!=null) { out.println("Você já passou por aqui, seu nome é"+session.getAttribute("nome")+" e você tem "+session.getAttribute("idade")+"anos."); } %> Insira seu nome:
Insira sua idade:
<% String sNome = request.getParameter("nome"); int idade = Integer.parseInt(request.getParameter("idade")); out.println("Olá "+sNome+"
"); out.println("Hoje você tem"+Integer.toString(idade)+"anos
"); out.println("Em breve você terá "+Integer.toString(idade+1)+" anos
"); session.setAttribute("nome", sNome); session.setAttribute("idade", idade); %> [/code]

o erro ai:
HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 32

29:
30: <%
31: String sNome = request.getParameter(“nome”);
32: int idade = Integer.parseInt(request.getParameter(“idade”));
33: out.println(“Olá “+sNome+”
”);
34: out.println(“Hoje você tem”+Integer.toString(idade)+“anos
”);
35: out.println(“Em breve você terá “+Integer.toString(idade+1)+” anos
”);

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:415)
java.lang.Integer.parseInt(Integer.java:497)
org.apache.jsp.index_jsp._jspService(index_jsp.java:83)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

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

Bom Davie, eu só joguei no Ecplise aqui e dei uma mexida, mas nem rodei ainda…
é pra ver se te adianta mesmo…

coloquei o Integer e não acusou erro nao…
no mais, coloquei o form submetendo pra mesma pagina,
pq no seu codigo, tinham 2 <body>'s e indicava que o form ia pra outra pagina… (… ? )

tb validei pra ver se algo era nulo ou em branco…

segue o que fiz:

&lt;%-- 
    Document   : index
    Created on : 28/10/2008, 08:01:52
    Author     : cliente
--%&gt;

&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;title&gt;JSP Page&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h2&gt;Ola Internet!&lt;/h2&gt;

&lt;%
	if (session.getAttribute("nome") != null) {
		out.println("Você já passou por aqui, seu nome é"+ session.getAttribute("nome") + " e você tem "
				+ session.getAttribute("idade") + "anos.");
	}
%&gt;

&lt;!-- este form submete para a página corrente --&gt;
&lt;form name='incluir' method='post'&gt;
	Insira seu nome: &lt;input type=text name=nome value='nome aqui'&gt; <br>
	Insira sua idade: &lt;input type=text name=idade value='0' maxlength=2&gt;
	<br>
	&lt;input type=submit value=enviar&gt;
&lt;/form&gt;

&lt;%
	//verifica se o nome não é nulo ou está em branco.
	if (request.getParameter("nome") != null) {
		if (request.getParameter("nome").equals("") == false) {
			
			String sNome = request.getParameter("nome");
			Integer idade = Integer.parseInt(request.getParameter("idade"));
			
			out.println("Olá " + sNome + "&lt;br&gt;");
			out.println("Hoje você tem " + idade+ " anos&lt;br&gt;");
			out.println("Em breve você terá "+ (idade + 1) + " anos&lt;br&gt;");
			
			session.setAttribute("nome", sNome);
			session.setAttribute("idade", idade);
		}
	}
%&gt;
&lt;/body&gt;
&lt;/html&gt;

[quote=rafaeldiego]
no mais, coloquei o form submetendo pra mesma pagina,
pq no seu codigo, tinham 2 <body>'s e indicava que o form ia pra outra pagina… (… ? )

tb validei pra ver se algo era nulo ou em branco…[/quote]

no caso era para ir para outra página mesmo.
esse que vc fez deu certo aqui, só que no lugar das letras com acentos apareceram interrogações.

gostaria de saber se tem como fazer para que a resposta apareça em outra página como eu havia feito.

outra coisa é que quando preencho o formulário e clico em enviar ele mostra a mensagem: Você já passou por aqui, seu nome é (qualquer nome) e você tem (qualquer idade)anos. conforme vou colocando os nomes ele mostra a mensagem com o nome anterior ao que eu digitei, exemplo: digito Davie e idade 21, então ele mostra a mensagem normal, só que quando digito joão 31 ele mostra a mensagem anterior com o nome de Davie: Você já passou por aqui, seu nome é Davie e você tem 21 anos. só depois que eu digito joao 31 novamente é que ele registra.

cara, agradeço a ajuda, pelo menos algum progreço ja tive :wink: hehe.

abraço

Davie, para aprecer em outra JSP, é só voce fazer o seguinte:
alterar o form <form action='formata.jsp' method='post'> e retirar a parte que começa depois do até o

depois, vc cria o arquivo “formata.jsp”… nele voce cria esta estrutura:

[code]
<%–
Document : formata.jsp
–%>

JSP Page

<%
//verifica se o nome não é nulo ou está em branco.
if (request.getParameter(“nome”) != null) {
if (request.getParameter(“nome”).equals("") == false) {

		String sNome = request.getParameter("nome");
		Integer idade = Integer.parseInt(request.getParameter("idade"));
		
		out.println("Olá " + sNome + "<br>");
		out.println("Hoje você tem " + idade+ " anos<br>");
		out.println("Em breve você terá "+ (idade + 1) + " anos<br>");
		
		session.setAttribute("nome", sNome);
		session.setAttribute("idade", idade);
	}
}

%>

[/code]

Desta maneira, voce preenche o formulario em uma página e envia para outra.

Sobre o nome que aparece qdo voce submete, ele aparece o último nome pq voce colocou o código antes de submeter o form.
Para aparecer o nome que voce acabou de digitar, é só colocar depois de enviar o form.

Voce pode fazer isso tirando isso aqui do index.jsp e colocando no ‘formata.jsp’:

<% if (session.getAttribute("nome") != null) { out.println("Você já passou por aqui, seu nome é"+ session.getAttribute("nome") + " e você tem " + session.getAttribute("idade") + "anos."); } %>

Sobre aparecer ? no lugar das letras acentuadas, é pela codificação da página, que está “charset=UTF-8”, se não me engano, teria que ser outra… tipo ISO-8859-1
Mas isso tem que conferir.

No mais,

opa, demorei um pouco para responder mais agora deu certo :slight_smile: .

resolvi deixar o objeto session no index.jsp pois quando o usuário clicar em enviar e depois clicar no comando aqui que coloquei logo abaixo, ele voltará a página de index e receberá a resposta do session de que ele ja passou por ali.

resumindo eu dei so uma pequena reformulada no que foi feito.

aqui vai o index.jsp:

[code]
<%–
Document : index
Created on : 29/10/2008, 11:26:13
Author : admin
–%>

<%@page contentType=“text/html” pageEncoding=“ISO-8859-1”%>

JSP Page

Olá usuário

<% if(session.getAttribute("nome")!=null) { out.println("Você ja passou por aqui, seu nome é "+session.getAttribute("nome")+" e você tem "+session.getAttribute("idade")+" anos."); } %>

  • Entre seu nome:
  • Entre sua idade:
[/code]

aqui vai o formata.jsp:

[code] <%–
Document : formata.jsp
–%>
<%@page contentType=“text/html” pageEncoding=“ISO-8859-1”%>

JSP Page
<%    
   if (request.getParameter("nome") != null) {  
       if (request.getParameter("nome").equals("") == false) {  
             
           String sNome = request.getParameter("nome");  
           Integer idade = Integer.parseInt(request.getParameter("idade"));  
           out.println("Olá " + sNome + "<br>");  
           out.println("Hoje você tem " + idade + " anos<br>");  
           out.println("Em breve você terá "+ (idade + 1) + " anos<br>");  
             
           session.setAttribute("nome", sNome);  
           session.setAttribute("idade", idade); 
       }  
   } 

%>

clique aqui para voltar a página anterior [/code]

como falei no final coloquei o para que ele volte a página anterior que no caso é a index.

a respeito das interrogações vc tinha razão também rafaeldiego, mudei o codigo no inicio e deu certo :stuck_out_tongue: .

agora eu queria da uma arrumada dando uma centralizada nele. eu ja tentei por em tabela usando

texto
e ja tentei por parágrafos e nao consegui alinhar ele.

deve ser algo bem bobo, mas não estou conseguindo :roll: .

gostaria de agradecer pela ajuda de todos :-o

abraço

up.

alguém pode ajudar??