Error ao abrir um servlet ( pagina em branco)

3 respostas
GrayFoxbh

E ae galera blz?

Bom, nesse semestre na facul estou aprendendo sobre Jsp e Servlets.

Em um exercicio tinha que fazer uma pagina em html com 3 inputs ( 2 campos de operandos e 1 de operador) e um botao submit para fazer um calculo basico de calculadora. Foi pedido conscistencias tb como nao permitir divisao por zero, essas coisas.

Fiz no eclipse. Fiz a pagina em html com um form que no action passa o nome do mapeamento ( la no url-mapping) do servlet.
Fiz o servlet tb e teoricamente funciona.

Tipo:
Quando executo o servlet sozinho pelo Tomcat no Eclipse ele carrega ( abre uma pagina que eu queria mas com, claro, todos os erros de incosistencia mostrados ja que nao foi passado nenhum parametro antes).
Quando executo o .html tb eh executado a pagina. Mas ao clicar no botao submit ela abre uma pagina em branco e o servlet simplesmente parece nao executar. Engracado eh que se eu clico no endereco que abriu após clicar no botao submit o servlet eh carregado, claro, com os erros de inconsistencia. Assim, imagino eu, mostrando que pelo menos o html ta achando o servlet.

Alguem sabe o que poderia estar acontecendo pra pagina estar em branco?
Obrigado desde ja...

Codigo do servlet:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 public class CalculadoraServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   
	public CalculadoraServlet() {
		super();
	}   	
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		response.setContentType("text/html");
		out.println("<html>"+
				"<head>"+
				"<title>");
		out.println("Calculadora");
		out.println("</title>"+
				"</head>"
				+"<body>");
		out.println("<h1>Resultado da Conta:</h1>");
		
		double oper1=0.0;
		double oper2=0.0;
		
		
		String operador1 = request.getParameter("operador1");
		
		try {
			if (operador1!=null) {
				oper1= Double.parseDouble(operador1);
			}
			else {
				out.println("Primeiro operador inexistente<br>");
			}
		} catch (NumberFormatException e) {
			out.println("Operador 1 inv?lido<br>");
		}
		
		String operador2 = request.getParameter("operador2");
		
		
		try {
			if (operador2!=null){
				oper2 = Double.parseDouble(operador2);
			}
			else {
				out.println("Segundo operador inexistente<br>");
			}
		} catch (NumberFormatException e) {
			out.println("Operador 2 inv?lido<br>");
		}
		
		String operando = request.getParameter("operando");
		
		if (!("+".equals(operando) || "-".equals(operando) || "*".equals(operando) || "/".equals(operando))){
			out.println("Operador inv?lido<br>");
			operando=null;
		}
		
		if ("/".equals(operando) && oper2==0.0){
			out.println();
		}
		
		if (operador1!=null && operador2!=null && operando!=null){
			out.println(operador1+" "+operando+" "+operador2);
		}
		if ("+".equals(operando))
			out.println(oper1+oper2);
		else if("-".equals(operando))
			out.println(oper1-oper2);
		else if ("*".equals(operando))
			out.println(oper1*oper2);
		else if ("/".equals(operando))
			out.println(oper1/oper2);
		
		out.println("<br><a href='calculadora.html'>Voltar</a><br>");
		out.println("</body></html>");
			
			
				
	}  	
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	}   	  	    
}
Codigo da pagina:
<!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">
<style type="text/css">
body { 
	background: black;	
	font-family: Arial, verdana;
}

h1{
	font-size: 20px;
	color: red;
}

input {
	width:100px;
	background-color:#dddddd;
}

select {
	width: 100px;
	background-color:#dddddd;
}

.selectOperador {
	width: 40px;
	background-color:#dddddd;
}

</style>


<title>Calculadora</title>
</head>
<body>
	<h1>Insira o que quer calcular:</h1><br>
		<form action="calculadoraExemplo1" method="post">
			<input name="operador1" type="text">
			<select class="selectOperador" name="operando">
				<option>+</option>
				<option>-</option>
				<option>/</option>
				<option>*</option>
			</select>	
			<input name="operador2" type="text">
			<input type="submit" value="Calcular">
		</form>
</body>
</html>
Arquivo Xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>
	CalculadoraExemplo1</display-name>
	<servlet>
		<description>
		</description>
		<display-name>
		CalculadoraServlet</display-name>
		<servlet-name>CalculadoraServlet</servlet-name>
		<servlet-class>
		servlet.CalculadoraServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>CalculadoraServlet</servlet-name>
		<url-pattern>/calculadoraExemplo1</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>

3 Respostas

alanbrasil1984

po mano seu erro e uma coisa muito boba mais perceptivel veja so tem 2 metodos de envio para servlet o doGet e doPost no seu formulario html vc enviar com

“METHOD = POST”

e o seu codigo esta NO seu metodo doGet.

sugestão mudao o codigo para o doPost ou mudar o method do form para doGet.

espero ter ajudado

jgbt

o problema parece estar aqui:

&lt;form action="calculadoraExemplo1" method="post"&gt;

vc esta enviando o formulario via metodo “post” o que siginifica que quem vai receber a requisição sera o metodo doPost do seu servlet.
Como vc so implementou o metodo doGet, a pagina vai ficar em branco.
vc pode chamar o doGet dentro do doPost p/ resolver:

doGet(request, response);

se vc não entendeu pq disso, de uma estudada nos metodos http.

[]´s

GrayFoxbh

Alan e Jgbt brigadao mesmo!

Eu to estudando “por fora” no Use a cabeca da O’Reily mesmo e entendi essa parte Http. Foi erro besta mesmo ( to fazendo o exercio no trampo aki meio rapidin no note) e nem percebi. Mudei mil coisas e no final era coisa boba ( pensei até que era erro de configuracao no Tomcat pq demorei um pouco a entender como ele funciona no Os X Leopard).

Brigadao mesmo!!!

Criado 31 de março de 2008
Ultima resposta 31 de mar. de 2008
Respostas 3
Participantes 3