Aprendendo Web

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…

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.

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

oque pode ser?

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

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

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

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

Vc pode tentar assim, altere o codigo da servlet

[code]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);

}[/code]

e o jsp de resultado pode ser somente assim:

[code]

<%= request.getAttribute("at1") %> [/code]

e todo outro codigo pode continuar como está…

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…

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

[quote=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

[/quote]
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.