google formulario form example agregar java jsp captcha

java - example - ¿Cómo insertar captcha en un formulario jsp?



recaptcha v3 example (4)

Aquí tienes el código de muestra. Espero eso ayude.

http://captchas.net/sample/jsp/

Estoy desarrollando una aplicación web en Java usando netbeans y mysql. Hay un formulario de registro en la aplicación. Cuando el usuario envía el formulario, se realiza la validación del lado del cliente y del servidor.

Ahora quiero insertar un captcha en el formulario. ¿Cómo lo inserto y cómo verificar que el usuario haya ingresado el valor de captcha correcto?


Pruebe reCAPTCHA https://developers.google.com/recaptcha/ - es una biblioteca ampliamente utilizada con plugins probados para múltiples lenguajes de programación (incluyendo Java / JSP) - vea la sección de complementos. Por cierto, puede usar esta biblioteca sin el manejo del lado del servidor también - vea las secciones Pantalla sin complementos y Verificar sin complementos.



Su código captcha funciona sin ningún cambio dentro del método doGet (...) de un servlet.

package test.captcha; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CaptchaServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("image/jpg"); /* * Define number characters contains the captcha image, declare global */ int iTotalChars = 6; /* * Size image iHeight and iWidth, declare globl */ int iHeight = 40; int iWidth = 150; /* * font style */ Font fntStyle1 = new Font("Arial", Font.BOLD, 30); Font fntStyle2 = new Font("Verdana", Font.BOLD, 20); /* * Possible random characters in the image */ Random randChars = new Random(); String sImageCode = (Long.toString(Math.abs(randChars.nextLong()), 36)).substring(0, iTotalChars); /* * BufferedImage is used to create a create new image */ /* * TYPE_INT_RGB - does not support transpatency, TYPE_INT_ARGB - support transpatency */ BufferedImage biImage = new BufferedImage(iWidth, iHeight, BufferedImage.TYPE_INT_RGB); Graphics2D g2dImage = (Graphics2D) biImage.getGraphics(); // Draw background rectangle and noisey filled round rectangles int iCircle = 15; //g2dImage.fillRect(0, 0, iWidth, iHeight); for (int i = 0; i < iCircle; i++) { g2dImage.setColor(new Color(randChars.nextInt(255), randChars.nextInt(255), randChars.nextInt(255))); int iRadius = (int) (Math.random() * iHeight / 2.0); int iX = (int) (Math.random() * iWidth - iRadius); int iY = (int) (Math.random() * iHeight - iRadius); //g2dImage.fillRoundRect(iX, iY, iRadius * 2, iRadius * 2,100,100); } g2dImage.setFont(fntStyle1); for (int i = 0; i < iTotalChars; i++) { g2dImage.setColor(new Color(randChars.nextInt(255), randChars.nextInt(255), randChars.nextInt(255))); if (i % 2 == 0) { g2dImage.drawString(sImageCode.substring(i, i + 1), 25 * i, 24); } else { g2dImage.drawString(sImageCode.substring(i, i + 1), 25 * i, 35); } } /* * create jpeg image and display on the screen */ OutputStream osImage = response.getOutputStream(); ImageIO.write(biImage, "jpeg", osImage); //osImage.close(); /* * Dispose function is used destory an image object */ g2dImage.dispose(); HttpSession session = request.getSession(); session.setAttribute("dns_security_code", sImageCode); //System.out.println("Captcha Page :"+session.getAttribute("dns_security_code")); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }

crear si no existe un descriptor de aplicación web: /WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <servlet> <servlet-name>CaptchaServlet</servlet-name> <servlet-class>test.captcha.CaptchaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CaptchaServlet</servlet-name> <url-pattern>/captcha-image.jpg</url-pattern> </servlet-mapping> </web-app>