1. Предисловие
1.1. Что такое проверка ввода? Зачем мне вводить проверку?
В предыдущей статье мы узнали о преобразовании типа данных. Мы упомянули два метода обработки данных презентационного уровня. Мы также упомянули, что пользовательские входные данные должны быть преобразованием типа, чтобы получить нужные данные. Итак, как мы определим, что данные после преобразования типа - это данные, которые мы хотим? Здесь немного траверс. Вы можете думать об этом так: взрослому человеку 18 лет, и вы хотите получить данные 18 сейчас, но пользовательский ввода 32, и также правильно преобразовать их с помощью типа, но данные не то, что вы хотите. Что мы должны делать в это время? Таким образом, проверка ввода полезна здесь.
Соотношение между преобразованием типа и проверкой ввода: преобразование типа является предпосылкой для проверки ввода. Если оба преобразования типа ошибаются, то нет необходимости выполнять проверку ввода. Но часто тип преобразования и проверки ввода выполняются одновременно.
Есть два типа проверки ввода:
1. Проверка клиента;
2. Проверка на стороне сервера. В основном мы объясняем, так это проверка на стороне сервера (метод rewrite validatexxx и проверка файла конфигурации XML)
1.2. Процесс проверки переписывания метода Validatexxx
1. Преобразователь типа отвечает за преобразование типа параметров запроса строки и установить эти значения значениям свойства действия.
2. Исключение может произойти во время выполнения конверсии типа. Если происходит исключение, информация об исключении будет автоматически сохранена в ActionContext. Перехватчик конверсионов отвечает за инкапсулирование его в Fielderror.
3. Call Validatexxx () Метод с помощью отражения, где xxx - это имя метода, соответствующее логике обработки, которая будет обрабатывать запрос пользователя.
4. Позвоните в класс «Проверка метода действия»
5. Если вышеуказанные шаги не показывают FielderRor, будет вызван метод обработки для обработки запросов пользователей в действии. Если появится FielderRor, система будет передаваться в представление, указанное в входном логическом представлении.
2. Входная проверка
2.1. Здесь есть два способа ввести проверку:
1. Перепишите метод проверки или настройте метод Validatexxx (где XXX - это имя, которое вы определяете, метод будет выполнен первым, и будет выполнен метод проверки)
2. Создайте новый XML для проверки
2.2. Переписать метод проверки
В структуре MVC предоставляется стандартизированная часть проверки данных. Struts2 предоставляет здесь метод проверки. Мы можем переписать метод проверки для выполнения проверки ввода. Тем не менее, есть две точки, которые нужно знать о переписывании метода проверки: 1. Метод проверки будет выполнен до метода выполнения; 2. Метод проверки выполнит правила проверки для всех действий. Чтобы отличить определенное действие, мы можем использовать метод Validatexxx.
Примечание. Следующие примеры являются примерами преобразования локального типа и проверки ввода.
Пример проверки простой регистрации:
Создайте пользователя нового класса объекта:
Пользователь
Создайте новый представление: Register.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <! Doctype html public "// w3c // dtd html 4.01. "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> Зарегистрированный пользователь </title> </head> <body> <h2> verify verify valide vardiate). <form action = "Register_test"> user: <input type = "text" name = "user"> <br/> пароль: <input type = "password" name = "user"> <br/> пароль: <input type = "password" name "
Создайте новый класс RegirectionAction, чтобы наследовать действия
пакет com.validatexxx; import com.opensymphony.xwork2.alpionsupport; // rewrite validate () и validatexxx Указанные методы для проверки/ * * В struts.xml метод valyatetest () будет вызоваться первым, а затем метод тестирования называется после вызова метода Validate * */Public Class RegisterAction Extersection usepport {private пользовательский пользователь; public user getUser () {return user; } public void setUser (пользователь пользователя) {this.user = user; } // 2 @Override public void validate () {System.out.println ("Переписать метод проверки"); if (null == user.getPassword () || "" .equals (user.getPassword ()) || null == user.getRepassword () || "" .equals (user.getRepassword ()))) {this.addfielderror ("Repassword", «repassword должен быть тем же паролем»); возвращаться; } if (! user.getPassword (). equals (user.getRepassword ())) {// Когда данные существуют в FielderRor, сервер автоматически перейдет к логическому представлению input this.addfielderror («repassword», «repassword должен быть тем же паролем»); }} // 1 public void validateTest () {System.out.println ("Метод пользовательской проверки: validatetest"); } // 3 public String test () {System.out.println ("test: method"); вернуть успех; }}ПРИМЕЧАНИЕ.
Создайте новый struts.xml и храните его в Web-inf/classes/struts.xml
ПРИМЕЧАНИЕ. Метод здесь должен быть определен вами после вашего метода ValuDateXXX (). Вот тест. Если вы используете *, Structs2 также должны настроить строгому-method-invocation = "false". Говорят, что, поскольку версия слишком высока, ее безопасность была увеличена, и все должно быть добавлено для использования *
Создайте новый класс usertypeconverter, чтобы наследовать StrutStypeConverter (создать конвертер типа)
пакет com.validatexxx; import java.util.map; import org.apache.struts2.util.strutstypeconverter; // класс конверсии типа общедоступный класс пользовательский System.out.println ("usertypeconverter: type conversion!"); Пользователь пользователь = новый пользователь (); user.setusername (arg1 [0]); user.setpassword (arg1 [1]); user.setRepassword (arg1 [2]); вернуть пользователь; } @Override public String convertToString (map arg0, object arg1) {user u = (user) arg1; вернуть u.getusername ()+"!"; }}ПРИМЕЧАНИЕ. После создания преобразователя этого типа вам необходимо создать новую регистрационную конверсию.
Содержимое этого файла:
Первое - это имя свойства, которое вы находитесь в регистрации, за которым следует конкретный путь к конвертеру типа.
Создайте новый представление успеха: успех.jsp
Успех.jsp
Создайте новую ошибку представления: input.jsp
input.jsp
Эффект успешного выполнения кода заключается в следующем:
Register.jsp Page
Страница, которая успешно прыгнула, является: успех.jsp
Результаты теста консоли:
Данные прыгают в пользовательский типконвертер для преобразования типа, затем прыгают на регистрацию, выполняют validatestest method (), проверьте, а затем возвращают успех, а затем выполняют представление результата.
Давайте посмотрим на порядок, в котором код не удается:
Register.jsp Page
input.jsp page
Эффект консольного теста:
В методе проверки код автора: this.addfielderror (). Как упоминалось ранее, если добавлена ошибка, сервер автоматически поможет нам перейти к неправильному интерфейсу. Он вернет вход, и вход настроен на struts.xml и вернется к интерфейсу input.jsp.
2.3. Создать новый XML для проверки ввода
Создать новый интерфейс представления: test.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <! Doctype html public "// w3c // dtd html 4.01. «http://www.w3.org/tr/html4/loose.dtd"> функционирует <S: Textfield name = "name" label = "name" size = "20" /> <s: textfield name = "age" label = "age" size = "20" /> <s: отправить имя = "Отправить" label = "align =" center " /> < /s: форма> < /body> < /html>
Создайте новый класс сотрудников, чтобы унаследовать ActionsUpport
В этом классе используется метод переопределения Validate и конфигурацию XML, мы можем выбрать один из них для проверки
пакет com.validatexxx; import com.opensymphony.xwork2.actionsupport; // Использование метода validate () для проверки, это проверка на стороне сервера! Общественный класс сотрудник расширяет ActionSupport {Private String name; частный int возраст; public String getName () {return name; } public void setName (string name) {this.name = name; } public int getage () {return Age; } public void setage (int age) {this.age = age; } // Второй шаг выполняет этот метод public String execute () {System.out.println ("execute:"+this.age); вернуть успех; }/* Проверка с использованием стороны сервера: переписать метод проверки (); // Первый шаг состоит в том, чтобы выполнить метод // Переписать метод проверки имеет недостаток: каждый раз, когда вы используете метод проверки для проверки, вызывая большие отходы ресурсов. public void validate () {System.out.println ("validate"); if (name == null || name.trim (). Equals ("")) {// При добавлении данных в этот метод сервер вернет ввод, а затем прыгнет на страницу input.jsp. AddFielderRor («Имя», «Имя требуется»); } if (возраст <28 || возраст> 65) {addfielderror ("age", "Возраст должен быть между 28-65"); }}*/}Настройка в struts.xml:
Success.jsp и input.jsp здесь все еще используют вышеизложенное.
После этого нам необходимо создать новое соответствие сотрудников. Примечание: -validation.xml является фиксированным и неизменным.
Содержимое:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Validators Public "-// apache struts // xwork validator 1.0.3 // en" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> <field name = "field name"> <field vame "> <field name"> <field yid "> <field name"> <field name "> <field name"> <field name "> <field yid". <Сообщение> Имя требуется. </message> </field-validator> </field> <field name = "age"> <field-validator type = "int"> <param name = "min"> 29 </param> <param name = "max"> 64 </param> <Сообщение> Возраст должен быть между 28 и 65 </message> </field-validator> </field> </valdators>>
Ключевой момент: DTD -предел этого файла должен быть, в противном случае ошибка возврата:
Ошибка DefaultDispatcherErrorHandler Исключение произошло во время запроса обработки: [Подключение времени: Connect - [Неизвестное местоположение], NULL]
Далее мы используем http: // localhost: 8080/learstruts2/validatejsp/test.jsp для доступа.
Успешно протестировано:
Test.jsp интерфейс:
Успех.jsp
Пример сбоя теста:
input.jsp интерфейс:
Пример иллюстрации верен.
Фактически, есть несколько встроенных валидаторов в Struts2: требуемый валидатор, необходимый валидатор строк, целочисленный валидатор, валидатор даты, валидатор выражения, валидатор длины символа, валидатор регулярного выражения и т. Д. При необходимости автор объяснит это один за другим.
Выше приведено подробное объяснение учебника по проверке ввода данных Struts2, введенного вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!