Страница входа в Struts2 с проверкой

Опубликовано: 9 Августа, 2022

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.

  1. Вам необходимо загрузить и установить Struts2 на свой компьютер.
  2. Загрузите последнюю версию двоичных файлов Struts2 отсюда.
  3. На момент написания этой статьи я скачал struts-2.5.30-min-lib.zip .
  4. После распаковки загруженного файла вы получите файлы внутри 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"?>
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         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 », а пароль вы можете ввести любой. После того, как вы введете правильное имя пользователя, вы увидите следующий экран: