FactorialResponseServlet.java 2.41 KB
Newer Older
Matias Ferreira committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73

package com.roshka.webprojecttest.servlets;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/factorial-response")
public class FactorialResponseServlet extends HttpServlet {
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException
	{
		PrintWriter pw = new PrintWriter(resp.getOutputStream());
		Boolean valido=true;
		String parametro =  req.getParameter("number");
		if(parametro.length() <1)
			valido=false;
		for(int i = 0 ; i < parametro.length(); i++) {
			if(  ( !Character.isDigit(parametro.charAt(i)) && i > 0) && !(Character.isDigit(parametro.charAt(i)) && i == 0 && parametro.charAt(i) != '-' )  ) {
				valido=false;
				break;
			}
		}
		if (!valido) {
			pw.write("<html>"
					+ "<head>"
					+ "<title>Error de parametro</title>"
					+ "</head>"
					+ "<body>"
					+ "No se puede generarla tabla de multiplicar. Valor del parametro \" " + parametro + " \" invalido."
					+ "</body>"
					+ "</html>");

		}
		else {
			Integer numero = Integer.parseInt(parametro);
			if(numero > 100) {
				pw.write("<html>"
						+ "<head>"
						+ "<title>Error de parametro</title>"
						+ "</head>"
						+ "<body>"
						+ "Mi programa solo conoce el factorial de hasta el numero 100. El numero pasado fue: "+numero
						+ "</body>"
						+ "</html>");
				
			}
			else if(numero<0) {
				pw.write("<html>"
						+ "<head>"
						+ "<title>Error de parametro</title>"
						+ "</head>"
						+ "<body>"
						+ "Mi programa no sabe obtener el factorial de numeros negativos"
						+ "</body>"
						+ "</html>");
			}
			else{
				long facto=1;
				for (long i = 2; i <=numero;i++)
					facto*=i;
				pw.write("<html>"
						+ "<head>"
						+ "<title>Hola, bienvenidos al factorializador</title>"
						+ "</head>"
						+ "<body>"
						+ "<h1>Soy un generador de factorial de numeros</h1>"
						+ "<div>"
74 75 76 77 78 79
						+ "<form action=\"factorial-response\"  >"
						+ "Introduzca el numero: <input type=\"text\"  name=number><br>"
						+ "<input type=\"submit\">"
						+ "</form>"
						+ "</div>"
						+ "<div>"
Matias Ferreira committed
80 81 82 83 84 85 86 87 88 89
						+ "<p>El factorial de "+ numero+" es: " + facto +"</p>"
						+ "</div>"
						+ "</body>"
						+ "</html>");				
			}
		}
		pw.close();
	}
}