Aprendendo Web

11 respostas
Algebra

Eu estou desenvolvendo uma aplicação simples web só para perceber a funcionalidade de todos os tipos de arquivo. Meu objetivo é criar uma funcionalidade de calculadora que some dois valores só que a funcão soma está em código java e o resultado é exibido em outra página jsp. então tenho 4 arquivos o index: o qual eu passo os valores a e b; o Servelet: que pega este valores e mandam para a função soma que está no arquivo java Funcoes e o arquivo jsp resultado que se encarrega de exibir este valor, mas o problema é que não está funcionando, estou mandando trechos dó código para vcs me ajudarem…

trecho do index:

<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title>Exemplo Web em Java</title>
</head>
<body>
<h1>Função Soma</h1>
<form name=“result” action=“resultado.jsp” method=“POST” enctype=“multipart/form-data”>
<label>A</label><input type=“text” name=“edta” size=“10”>
<label>B</label><input type=“text” name=“edtb” size=“10”>
<input type=“submit” value=“Somar” >
</form>
</body>
</html>

trecho do Servelet:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String a = request.getParameter(“edta”);

String b = request.getParameter(“edtb”);
request.setAttribute("at1", Funcoes.soma(a,b));

}

trecho da classe Funcoes:

public class Funcoes {

public static String soma(String a, String b){

int r = Integer.parseInt(a)+Integer.parseInt(a);

return Integer.toString®;

}

}

trecho da página resultado:

<html>

<head>

<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>

<title>Resultado Teste</title>

</head>

<body>

<h1>Resultado</h1>

<form name=“exibe” action=“index.jsp”>

<%=request.getAttribute(at1) %>

</form>

</body>

</html>

porque será que eu não consigo obter o valor do resultado na página resultado aparece somente o valor “null”

agradeço quem tiver a paciencia de ajudar…

11 Respostas

wbdsjunior

coloque o código entre as tags code.

no atributo action do formulário da página index você deve colocar o nome do servlet, configurado no web.xml.

&lt;form name="result" action="nomeDoServlet" method="POST" enctype="multipart/form-data"&gt;

você deve chamar o servlet que irá processar os dados e depois redirecionar para a página de resultado.

Algebra

fazendo oque vc disse acima ele dá o seguinte 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.NumberFormatException: null

java.lang.Integer.parseInt(Integer.java:417)

java.lang.Integer.parseInt(Integer.java:499)

Funcoes.soma(Funcoes.java:13)

ServeletEx.processRequest(ServeletEx.java:32)

ServeletEx.doPost(ServeletEx.java:60)

javax.servlet.http.HttpServlet.service(HttpServlet.java:637)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

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.18 logs.

Apache Tomcat/6.0.18

Algebra

oque pode ser?

lazarento

Provavelmente não esta vindo valor nenhum do form , tenta assim na hora de pegar o parametro do form.

wbdsjunior

ocorreu um erro ao converter a String em inteiro no método soma da classe Funcoes.

Funcoes.soma(Funcoes.java:13)

int r = Integer.parseInt(a)+Integer.parseInt(a);

imprima os valores de a e b no console antes de fazer a conversão, para ter certeza que os valores passados por parâmetros não estão nulos ou são realmente números inteiros.

System.out.println("a = " + a + " e b = " + b); int r = Integer.parseInt(a)+Integer.parseInt(a);

Algebra

fiz um teste e descobri que este código dentro da funcão do servelet não está funcionando

String a = request.getParameter(“edta”);
String b = request.getParameter(“edtb”);

Algebra

realmente wbdsjunior a e b estão vindo nulos oque pode ser?

Josemar_Jobs

Vc pode tentar assim, altere o codigo da servlet

protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String a = request.getParameter("edta");
		String b = request.getParameter("edtb");

		request.setAttribute("at1", Funcoes.soma(a, b));
		RequestDispatcher ds = request.getRequestDispatcher("resultado.jsp");
		ds.forward(request, response);
}
e o jsp de resultado pode ser somente assim:
<html>
<body>
<%= request.getAttribute("at1") %>
</body>
</html>

e todo outro codigo pode continuar como está...

Algebra

para que meu código funcionasse eu tive que tirar o valor enctype=“multipart/form-data” do form que criei no index.jsp

vlw pelas dicas galera…

A

Por favor me falem mais sobre o request ví que tem tantas formas de usá-lo:

Vide:
1 - request.getAttribute();

2 - forward(request, response);

3 - RequestDispatcher ds = request.getRequestDispatcher();

4 - request.getParameter

5 - HttpServletRequest ex: chamar o request.getRequestURI();

André AS

wbdsjunior

andredecotia:
Por favor me falem mais sobre o request ví que tem tantas formas de usá-lo:

Vide:
1 - request.getAttribute();

2 - forward(request, response);

3 - RequestDispatcher ds = request.getRequestDispatcher();

4 - request.getParameter

5 - HttpServletRequest ex: chamar o request.getRequestURI();

André AS


dê uma olhada neste livro (em inglês, online e gratuito), em especial os capítulos 4 e 5, e depois poste suas dúvidas.

bons estudos.

abraço.

Criado 20 de janeiro de 2010
Ultima resposta 17 de abr. de 2010
Respostas 11
Participantes 5