1. Основной процесс:
Сгенерируйте страницу кода проверки (очень маленький) → встроен в форму → Нажмите, чтобы обновить страницу → проверка при отправке формы.
2. Метод:
1. Определите тестирование и реализацию методов рисования
пакет com.zhuguang.action; импортировать java.awt.color; импортировать java.awt.font; импортировать java.awt.graphics; Импорт java.awt.image.bufferedImage; импортировать java.util.map; Импорт javax.servlet.http.httpservletresponse; Импорт org.apache.struts2.interceptor.servletresponseaware; Импорт org.apache.struts2.interceptor.sessionAware; Import Com.OpensyMphony.xwork2.ActionsUpport; Импорт com.sun.image.codec.jpeg.jpegcodec; Импорт com.sun.image.codec.jpeg.jpegimageencoder; Общедоступное тестирование класса Extends Actionsupport реализует SessionAware, ServletResponseaware {Private Map <String, Object> Session; Частный ответ httpservletresponse; Частный статический конечный длинный SerialVersionuid = 1L; Приватная строка chnkmerm; @Override public String execute () throws exception {response.setheader ("cache-control", "no-cache"); int width = 50; // ширина изображения int height = 20; // Высота изображения BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics Graphics = Image.CreateGraphics (); graphics.setcolor (this.getColor ()); // фоновая цветовая графика.fillRect (0, 0, ширина, высота); graphics.setfont (новый шрифт ("Arial", font.bold, 18)); graphics.setcolor (this.getColor ()); // цвет слова строки string = string.valueof (system.currenttimemillis ()%9000+1000); // генерировать четырехбитовые случайные числа session.put ("randomcode", number); // записать в сеанс Graphics.DrawString (число, (int) (ширина*0,1), (int) (высота*0,8)); graphics.dispose (); Jpegimageencoder encoder = jpegcodec.createjpegenceder (response.getOutputStream ()); encoder.encode (image); response.getOutputStream (). flush (); // Обновление на страницу, чтобы сгенерировать ответ изображения. GetOutputStream (). Close (); // закрыть писатель возвращает NULL; } private color getColor () {int red = (int) (math.random ()*1000%256); int green = (int) (math.random ()*1000%256); int blue = (int) (math.random ()*1000%256); вернуть новый цвет (красный, зеленый, синий); } public String getChknumber () {return chknumber; } public void setChknumber (string chknumber) {this.chknumber = chnknumber; } @Override public void setSession (map <string, object> session) {// todo автоматическое сгенерированное метод stub this.session = session; } @Override public void setSession (map <string, object> session) {// todo автоматическое сгенерированное метод stub this.session = session; } @Override public void setServletresponse (httpservletresponse response) {// todo автоматически генерируемый метод stub this.response = ответ; }}Обратите внимание на использование сеанса и ответа
2. Зарегистрируйтесь в файле struts.xml:
<name = "randomCode"> </action>
Информация не возвращается, чтобы страница не была перенаправлена
3. Написание страниц JSSP
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <%string path = request.getContextPath (); String basePath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = "content-tolpe" html> "hta http-equiv =" http-equiv = "http-equiv =" charset = utf-8 "> <script type =" text/javascript "> <!-функция ReloadCode (obj, base) {var rand = new Date (). getTime (); // Текущее время используется в качестве параметра для URL -адреса для изменения URL -адреса, чтобы код проверки был загружен динамически. // Это просто эффект помех, он не имеет смысла, но это очень умно. Хаха obj.src = base+"randomcode.action? Abc ="+rand; // На самом деле, на стороне сервера нет поле ABC. } //-> </script> <tite> Тестовая страница </title> </head> <body> <form action = "testlogin" method = "post"> username <input type = "text" name = "name"> <br> пароль <input type = "text" name = "password"> <br> verification code: <input = "text" = "chkknember" vame = "chkklumber"> halmember "<id =" mable ">" mable ". src = "<%= basePath%> randomCode.Action" id = "safeCode" onclick = "reloadCode (this, '<%= basePath%>')"/> <br> <input type = "value =" loginin "> </form> </body> </html>4. Проверка
(1) Добавить метод проверки в действие
public String testlogin () {if (session.get ("randomcode"). equals (chnumber)) {return успех; } else {return error; }}(2) Зарегистрируйтесь на struts.xml
<name Action = "testLogin" method = "testLogin"> <result name = "success"> success.jsp </result> <name = name = "error"> error.jsp </result> </action>
Выше приведено реализация Struts2, которую редактор представил вам для генерации динамических кодов проверки и проверки примера кода. Я надеюсь, что это будет полезно для всех!