¿Cómo utilizar el marco ssm para implementar la función del código de verificación?

Las más de dos semanas de capacitación finalmente terminaron y la cosecha está completa. Aquí, compartiré con ustedes cómo usar el marco ssm para implementar la función del código de verificación.
1 En primer lugar, debe ser un buen marco ssm. Ya no es detallado aquí,
2. Cree un nuevo archivo validatecode.jsp con el siguiente contenido:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Random"%>
<%@ page import="java.io.OutputStream"%>
<%@ page import="java.awt.*"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="javax.imageio.ImageIO"%>
<%
	int width = 80;
	int height = 32;
	//create the image
	BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	Graphics g = image.getGraphics();
	// set the background color
	g.setColor(new Color(0xDCDCDC));
	g.fillRect(0, 0, width, height);
	// draw the border
	g.setColor(Color.black);
	g.drawRect(0, 0, width - 1, height - 1);
	// create a random instance to generate the codes
	Random rdm = new Random();
	String hash1 = Integer.toHexString(rdm.nextInt());
	// make some confusion
	for (int i = 0; i < 50; i++) {
		int x = rdm.nextInt(width);
		int y = rdm.nextInt(height);
		g.drawOval(x, y, 0, 0);
	}
	// generate a random code
	String capstr = hash1.substring(0, 4);
	session.setAttribute("key", capstr);
	g.setColor(new Color(0, 100, 0));
	g.setFont(new Font("Candara", Font.BOLD, 24));
	g.drawString(capstr, 8, 24);
	g.dispose();
	response.setContentType("image/jpeg");
	out.clear();
	out = pageContext.pushBody();
	OutputStream strm = response.getOutputStream();
	ImageIO.write(image, "jpeg", strm);
	strm.close();
%>

Por supuesto, estas cosas también se pueden escribir en una clase, principalmente usando el lápiz en Java para dibujar el código de verificación, sin agregar ningún paquete de precios ni archivos de configuración para usar.
Aquí el código de verificación se encapsula en un formulario de par clave-valor, De la siguiente manera:
Inserte la descripción de la imagen aquí
3. Luego, cree un nuevo index.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
	<form action="check_Yz.do" method="post">
		<input type="text" id="num" name="num"><img
			id="loginform:vCode"
			src="${pageContext.request.contextPath }/validatecode.jsp"
			onclick="javascript:document.getElementById('loginform:vCode').src='${pageContext.request.contextPath }/validatecode.jsp?'+Math.random();" />
		<span class="color_1" id="errorMsg"></span>
		<input type="submit" value="提交">
	</form>
</body>
</html>

Si su nombre de archivo es diferente al mío en el paso anterior, por favor modifique la ruta aquí.
Inserte la descripción de la imagen aquí
4. El fondo juzga si es igual:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class CheckAction implements IAction{
	@RequestMapping(value="check_Yz.do")
	public String check(HttpServletRequest request, HttpServletResponse response,String num){
		HttpSession session = request.getSession();
		//String num = request.getParameter("num");
		String key = (String) session.getAttribute("key");
		System.out.println(num);
		System.out.println(key);
		if (key.equals(num)) {
			System.out.println("输入正确");
		} else {
			System.out.println("验证码错误");
		}
		return "index.jsp";
	}
}

El efecto de ejecución es el siguiente:
Inserte la descripción de la imagen aquí
si ingresa un error, se imprimirá en segundo plano, ¡y el código de verificación es incorrecto!
Inserte la descripción de la imagen aquí
Si la entrada es correcta: ¡la
Inserte la descripción de la imagen aquí
entrada de impresión de fondo es correcta
Inserte la descripción de la imagen aquí
!

Supongo que te gusta

Origin blog.csdn.net/lq1759336950/article/details/95351810
Recomendado
Clasificación