Java - Ayuda servlet

 
Vista:

Ayuda servlet

Publicado por pinguinogil (4 intervenciones) el 08/01/2009 10:32:03
Necesito ayuda urgente.
Tengo que entregar el siguiente ejercicio:
* Sumar dos nº enteros con una página html que llame a un servlet y que cuando demos actualizar debe ir acumulando las sumas.
Al inicio el arrastre vale 0
Se debe utilizar el objeto session para realizar el ejercicio.

peticionarrastre.html
sumadorarrastre (Servlet)

Paso 1
----------

Arrastre = 0
a= 10
b = 5

resultado = 15

Paso 2
----------
Arrastre=15
a=2
b=3

resultado=20

* Tengo echo el ejercicio pero cuando voy a la página peticionarrastre.html desde el servlet y pongo otros dos nº enteros y doy a sumar quisiera que se inicializará el servlet y me sumará los datos puestos y no que me los sume al resultado que se había generado anteriormente.

* Espero haberme explicado. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda servlet

Publicado por maria ruiz (21 intervenciones) el 08/01/2009 11:18:08
hola, mira te hago dos servlets uno control y otro presentacion, que van sumando números cada vez que los llamas.

control
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.io.IOException;

public class ServletExamen extends HttpServlet
{
private static final String CONTENT_TYPE = "text/html; charset=windows-1252";

public void init(ServletConfig config) throws ServletException
{
super.init(config);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request,response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request,response);
}

public void doGetPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String question;
HttpSession sesion = request.getSession();
question = request.getParameter("question");
if (question==null) DoNoQuestion(request,response);
else if (question.equals("contador")) DoQuestionContador(request,response);
else DoError(request,response);
}

public void DoNoQuestion (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
request.getRequestDispatcher("servletpresentacion").forward(request,response);
}

public void DoQuestionContador (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
HttpSession sesion = request.getSession();
Integer contador;
if (sesion.isNew())
{
contador=new Integer(1);
sesion.setAttribute("valor",contador);
}
else
{
contador = (Integer)sesion.getAttribute("valor");
if (contador==null) contador = new Integer(1);
else contador = new Integer(contador.intValue() + 1);
sesion.setAttribute("valor",contador);
}
request.getRequestDispatcher("servletpresentacion").forward(request,response);
}

public void DoError (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
StringBuffer dir = new StringBuffer();
out.println("<html>");
out.println("<head><title>Error</title></head>");
out.println("<body>");
out.println("<p><h1>Error</h1></p>");
out.println("</body></html>");
out.close();
}

presentacion

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.PrintWriter;
import java.io.IOException;

public class ServletPresentacion extends HttpServlet
{
private static final String CONTENT_TYPE = "text/html; charset=windows-1252";

public void init(ServletConfig config) throws ServletException
{
super.init(config);
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request,response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGetPost(request,response);
}

public void doGetPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String question;
HttpSession sesion = request.getSession();
question = request.getParameter("question");
if (question==null) DoNoQuestion(request,response);
else if (question.equals("contador")) DoQuestionContador(request,response);
else DoError(request,response);
}

public void DoNoQuestion (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
StringBuffer dir = new StringBuffer();
out.println("<html>");
out.println("<head><title>Servlet Presentacion</title></head>");
out.println("<body>");
out.println("<p><h1>Servlet Presentacion</h1></p>");
dir = dir.append(request.getRequestURI().substring(0,request.getRequestURI().lastIndexOf("/"))+"/servletexamen");
out.println("<p><a href='" + dir + "?question=contador" + "'>Entrar</a></p>");
out.println("</body></html>");
out.close();
}
public void DoQuestionContador (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
StringBuffer dir = new StringBuffer();
Integer contador;
HttpSession sesion = request.getSession();
if (sesion.isNew()) DoError(request, response);
else
{
contador = (Integer) sesion.getAttribute("valor");
out.println("<html>");
out.println("<head><title>Servlet Presentacion</title></head>");
out.println("<body>");
out.println("<p><h1>Servlet Presentacion</h1></p>");
out.println("<p>Valor: " + contador.intValue() + "</p>");
dir = dir.append(request.getRequestURI().substring(0,request.getRequestURI().lastIndexOf("/"))+"/servletexamen");
out.println("<p><a href='" + dir + "?question=contador" + "'>Seguir</a></p>");
out.println("</body></html>");
out.close();
}
}

public void DoError (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
StringBuffer dir = new StringBuffer();
out.println("<html>");
out.println("<head><title>Error</title></head>");
out.println("<body>");
out.println("<p><h1>Error</h1></p>");
out.println("</body></html>");
out.close();
}
}

espero haberte ayudado.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda servlet

Publicado por pinguinogil (4 intervenciones) el 08/01/2009 11:47:56
Muchisimas gracias por la respuesta tan rápida y tan completa. El problema que tengo es con el siguiente ejemplo, que no consigo que no sume cuando hago f5, el objetivo es sumar cuando se vuelven a introducir datos no al actualizar:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SumadorArrastre extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {

HttpSession session = request.getSession();

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Resultado</title>");
out.println("</head>");
out.println("<body>");
out.println("<b>Resultado suma de dos enteros</b>");
out.println("<br>");

// Recuperamos valores

String strNumero1 = request.getParameter("numero1");
String strNumero2 = request.getParameter("numero2");
String strSesion = request.getParameter("sesion");


// Comprobamos que campo no es numero

if (esPalabraCaracteres(strNumero1) && esPalabraCaracteres(strNumero2)) {
out.println("Los datos " + strNumero1 + " y " + strNumero2 + " no son numeros enteros positivos en los dos campos");
} else {
if (esPalabraCaracteres(strNumero1)) {
out.println("El dato " + strNumero1 + " no es un numero entero positivo en el campo 1");
} else {
if (esPalabraCaracteres(strNumero2)) {
out.println("El dato " + strNumero2 + " no es un numero entero positivo en el campo 2");
} else {

// Declaración de variables si es número

int intNumero1 = 0;
int intNumero2 = 0;
int suma = 0;
Integer totalSuma = 0;

intNumero1 = Integer.parseInt(strNumero1);
intNumero2 = Integer.parseInt(strNumero2);

// Comprobamos sesión


if (((totalSuma = (Integer) session.getAttribute("arrastre")) == null)) {
totalSuma = 0;
}

suma = intNumero1 + intNumero2 + totalSuma; //Sumamos todo a valor de arrastre

// Asignamos sesión

session.setAttribute("arrastre", suma);


// Imprimimos resultado
out.println("<br>");
out.println("Arrastre: " + totalSuma);
out.println("<br>");
out.println("Numero 1: " + intNumero1);
out.println("<br>");
out.println("Numero 2: " + intNumero2);
out.println("<br>");
out.println("Resultado: " + suma);
out.println("<br>");
out.println("Sesion: " + strSesion);
out.println("<br>");

// out.println("Arrastre: " + this.getSuma(intNumero1,intNumero2,totalSuma));

}
}
}
}

// EsPalabraCaracteres para comprobar si es numero
// Static convierte el método en método de clase, no se puede instanciar
public boolean esPalabraCaracteres(String palabra) {
for (int i = 0; i < palabra.length(); i++) {
if (!((palabra.charAt(i) > 32 && palabra.charAt(i) < 47) ||
(palabra.charAt(i) > 58 && palabra.charAt(i) < 123))) {
return false;
}
}
return true;
}

// Método doPost
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar