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:
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í.
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:
si ingresa un error, se imprimirá en segundo plano, ¡y el código de verificación es incorrecto!
Si la entrada es correcta: ¡la
entrada de impresión de fondo es correcta
!