Страница входа в Struts2 с проверкой
Apache Struts 2 — это платформа веб-приложений с открытым исходным кодом для разработки веб-приложений Java EE. Он использует и расширяет Java Servlet API, чтобы побудить разработчиков принять архитектуру модель-представление-контроллер. В этой статье мы увидим, как мы можем создать страницу входа с проверками с помощью Struts 2. Мы будем использовать теги пользовательского интерфейса Struts для создания страницы входа.
Перед созданием проекта Struts2 важно убедиться, что у вас установлен сервер Apache Tomcat и настроена среда IDE по вашему выбору, например Eclipse. Теперь, если вышеуказанные условия выполнены, выполните все шаги, указанные ниже. Мы собираемся использовать Eclipse IDE, чтобы все необходимые компоненты были созданы в рамках динамического веб-проекта. Давайте теперь начнем с создания динамического веб-проекта.
Создание динамического веб-проекта
Во-первых, вам просто нужно запустить Eclipse IDE и создать новый проект Dynamic Web Project. Для этого перейдите в « Файл»> «Создать»> «Динамический веб-проект» и введите имя проекта по своему желанию. Я назвал его «struts_validation».
Установите остальные параметры, как указано на следующем экране.
Выберите все параметры по умолчанию на следующих экранах и не забудьте установить флажок « Создать дескриптор развертывания web.xml ».
Это создаст для вас динамический веб-проект в Eclipse.
Настройка библиотек Struts2
Теперь, чтобы запустить приложение Struts2, вам нужно настроить инфраструктуру Struts2.
- Вам необходимо загрузить и установить Struts2 на свой компьютер.
- Загрузите последнюю версию двоичных файлов Struts2 отсюда.
- На момент написания этой статьи я скачал struts-2.5.30-min-lib.zip .
- После распаковки загруженного файла вы получите файлы внутри struts-2.5.30/lib следующим образом.
Теперь скопируйте все файлы из папки struts-2.2.3lib в папку вашего проекта WEB-INFlib . Вы можете сделать это, просто перетащив все файлы в папку WEB-INFlib . Теперь структура вашего проекта должна выглядеть так
Файл web.xml:
Создайте файл web.xml в папке webapp/WEB-INF и скопируйте следующий код в web.xml.
XML
<? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee id = "WebApp_ID" version = "4.0" > < display-name >struts_validation</ display-name > < welcome-file-list > < welcome-file >index.jsp</ welcome-file > </ welcome-file-list > < filter > < filter-name >struts2</ filter-name > < filter-class >org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</ filter-class > </ filter > < filter-mapping > < filter-name >struts2</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > </ web-app > |
Файл index.jsp:
Нам нужен файл JSP для отображения окончательного результата, эта страница будет вызываться платформой Struts 2, где будет вызываться предопределенное действие, и это сопоставление определено в файле struts.xml. Итак, теперь мы создадим index.jsp в папке webapp в вашем проекте eclipse. Чтобы создать файл JSP, щелкните правой кнопкой мыши папку веб -приложения в проводнике проекта и выберите « Создать» > «Файл JSP» .
Теперь скопируйте следующий код в файл index.jsp.
HTML
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >Login</ title > < s:head /> </ head > < body bgColor = "lightGreen" > < s:form action = "Login" > < s:textfield name = "userName" label = "User Name" placeholder = "Default "Sanjyot"" /> < s:password name = "password" label = "Password" /> < s:textfield name = "phoneNumber" label = "Phone Number" placeholder = "10 digit phone number" /> < s:textfield name = "email" label = "Email" type = "email" /> < s:submit value = "Login" /> </ s:form > </ body > </ html > |
Префикс <%@taglib uri=”/struts-tags”=”s” %> — это директива, сообщающая контейнеру сервлетов, что на этой странице будут использоваться теги Struts2, и этим тегам будет предшествовать s. Тег s:form содержит все элементы формы. Когда пользователь нажимает кнопку «Войти», запрос перенаправляется в класс действий «Вход».
Файл welcome.jsp:
Создайте файл welcome.jsp в папке webapp и скопируйте следующий код в файл welcome.jsp.
HTML
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html> < html > < head > < meta charset = "UTF-8" > < title >Login Successful</ title > </ head > < body > < h3 > Congratulations! You have logged in successfully.</ h3 > < h4 > Welcome < s:property value = "userName" />!!! </ h4 > </ body > |
Класс действия: файл Login.java
Наш класс Login расширяет ActionSupport. Хорошо расширить класс ActionSupport, поскольку он обеспечивает реализацию по умолчанию для большинства распространенных задач. Создайте класс Login.java и скопируйте следующий код в Login.java.
Java
package com.SanjyotPanure.struts2; import com.opensymphony.xwork2.ActionSupport; public class Login extends ActionSupport { private String userName; private String password; private String phoneNumber; private String email; public String execute() { return SUCCESS; } public String getUserName() { return userName; } public void setUserName(String userName) { this .userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this .password = password; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this .phoneNumber = phoneNumber; } public String getEmail() { return email; } public void setEmail(String email) { this .email = email; } public void validate() { if (getUserName().length() == 0 ) { addFieldError( "userName" , "UserName is required" ); } else if (!getUserName().equals( "Sanjyot" )) { addFieldError( "userName" , "Invalid User" ); } if (getPassword().length() == 0 ) { addFieldError( "password" , getText( "Password is required" )); } if (getPhoneNumber().length() == 0 ) { addFieldError( "phoneNumber" , getText( "Phone Number is required" )); } else if (!(getPhoneNumber().length() == 10 )) { addFieldError( "phoneNumber" , "Enter 10 digit phone number" ); } if (getEmail().length() == 0 ) { addFieldError( "email" , getText( "Email is required" )); } } } |
Файл struts.xml:
Нам нужно сопоставление между URL-адресом и сопоставлением действий. В файле struts.xml класс Login и файл welcome.jsp сопоставляются друг с другом. Сопоставление сообщает платформе Struts 2, какой класс будет реагировать на действие пользователя (URL-адрес), какой метод этого класса будет выполняться и какое представление отображать на основе результата String, возвращаемого этим методом. Итак, теперь мы создадим файл struts.xml в папке webapp/WEB-INF . Скопируйте следующий код в struts.xml:
XML
<? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" < struts > < constant name = "struts.custom.i18n.resources" value = "LoginAction" /> < package name = "default" extends = "struts-default" namespace = "/" > < action name = "Login" class = "com.SanjyotPanure.struts2.Login" > < result name = "success" >welcome.jsp</ result > < result name = "input" >index.jsp</ result > </ action > </ package > </ struts > |
Здесь наш пакет «по умолчанию» расширяет пакет «struts-default». При расширении пакета «struts-default» действие по умолчанию наследует набор перехватчиков, определенный в стеке по умолчанию. Пакет «struts-default» определен в файле struts-default.xml.
Как запустить проект?
Щелкните правой кнопкой мыши проект> запустить как> запустить на сервере
Если вы запускаете свой проект в первый раз, вы получите следующее приглашение:
Выход
Теперь разверните localhost и выберите свой сервер tomcat. После этого нажмите на следующий и закончить. Вы увидите веб-страницу, открытую в Eclipse IDE, например:
Все поля ввода обязательны для заполнения. Если вы попытаетесь отправить без ввода данных, вы получите следующий экран:
Номер телефона должен состоять из 10 цифр. Если вы введете неправильный номер телефона, вы получите следующий экран:
Имя пользователя по умолчанию — « Sanjyot », а пароль вы можете ввести любой. После того, как вы введете правильное имя пользователя, вы увидите следующий экран: