Java >> Java tutorial >  >> Java

Struts Valideringseksempel

For at sikre, at brugerne indtaster gyldige oplysninger, er validering af formularens input nødvendig for hver webapplikation. Struts2-rammen giver indbygget robust valideringsramme, som er stærkt afkoblet fra visningen og controlleren, så den nemt kan integreres med de eksisterende applikationer. I denne vejledning vil vi se, hvordan Struts2-validering fungerer ved at oprette en eksempelapplikation, der validerer brugerens input til en login-formular.

1. Introduktion

1.1 Struts Framework

  • Struts framework er baseret på et sæt Java-teknologier som Servlet, JSP , JSTL , XML , Velocity osv., som giver MVC (dvs. Model View Controller) implementering og en klar til brug valideringsramme
  • Struts kraft ligger i dets modellag, hvormed det kan integreres med andre Java-teknologier, f.eks.:JDBC , EJB , Spring, Hibernate osv.
  • Struts-framework er et komplet web-framework, da det leverer webformularkomponenter, validatorer, fejlhåndtering, internationalisering, fliser og sin egen controller-komponent
  • Struts2 framework understøtter også de annotationsbaserede konfigurationer, som er nemme at bruge og mere intuitive
  • Struts2 kommer også med kraftfulde API'er til at konfigurere interceptorerne, der i høj grad reducerer koblingen i en applikation

1.1.1 Hvordan virker Struts2?

Når udviklere bruger Struts, giver rammen dem en Controller Servlet dvs. ActionServlet som er defineret i Struts-bibliotekerne, der er inkluderet i en applikation. Denne controller-servlet registreres automatisk i implementeringsdeskriptorfilen (web.xml ) som vist i nedenstående figur.

Fig. 1:Struts2 Request Response Oversigt

Controllerservlet'en bruger en struts-config.xml fil for at kortlægge de indkommende anmodninger til Struts Action-objekterne og instansiere enhver ActionForm objekt knyttet til handlingen for midlertidigt at gemme formulardataene. Handlingsobjektet behandler anmodninger ved at bruge dets execute() metode, mens du gør brug af alle lagrede data. Når handlingsobjektet behandler en anmodning, gemmer det alle nye data i den samme eller en anden resultatbean og videresender svaret til en passende visning.

1.2 Struts2 Validation Framework

Struts2 handling er afhængig af en valideringsramme leveret af XWork for at aktivere applikationens inputvalideringsregler for handlingerne, før de rent faktisk udføres. Denne ramme giver udviklere mulighed for at adskille valideringslogikken fra den faktiske Java eller JSP kode, hvor den kan gennemgås og nemt ændres senere.

Struts2 Validation-rammeværket afhjælper meget af hovedpine forbundet med datavalideringen og giver udviklere mulighed for at fokusere på valideringslogikken og ikke på mekanikken til at fange data og genvise de ufuldstændige eller de ugyldige data.

valideringsrammen leveres med et sæt nyttige rutiner til at håndtere formularvalideringerne automatisk, og det kan håndtere formularvalideringer af både server- og klientsiden (normalt opnået ved at bruge jQuery eller Javascript). Hvis en bestemt validering ikke er til stede, kan udviklere oprette deres egen valideringslogik ved at implementere Java-grænsefladen (dvs. com.opensymphony.xwork2.Validator ) og sæt den ind i valideringsrammen som en genbrugelig komponent.

Som standard er valideringsrammerne er aktiveret i Struts2, så udviklere behøver ikke at gøre noget for at bruge det, undtagen at oprette valideringsreglerne i en XML fil og læg den på det rigtige sted. Udviklere angiver valideringsreglerne pr. handlingsklasse i en XML fil, der følger en af ​​nedenstående navnekonventioner:

  • -validation.xml
  • --validation.xml

Hvor actionClass er klassenavnet på handlingen og actionAlias er navnet på handlingselementet angivet i Struts2-konfigurationsfilen (dvs. struts.xml ). Denne XML indeholder valideringsreglerne ved hjælp af validatorerne og skal placeres på samme sted som handlingsklassen.

1.2.1 Struts2 Validator Scope

Der er to typer validatorer i Struts2 Validation Framework:

  • Feltvalidatorer :Disse bruges til at udføre valideringskontrollen på et enkelt felt. Feltet er deklareret i handlingsklassen eller i en Java-bean tilknyttet handlingsklassen. En feltvalidator erklæres ved hjælp af <field-validator /> element. Her er et eksempel på en feltvalidator for et felt med navnet email :
    <field name="email">
        <field-validator type="email">
            <message>Please Enter A Valid Email Address</message>
        </field-validator>
    </field>
    
  • Ikke-feltvalidatorer (eller almindelige validatorer):Disse bruges til at udføre valideringstjek på et sæt felter eller slet intet felt, men ulempen ved denne tilgang er, at udviklere ikke kan anvende mange validatorer på et enkelt felt. En ikke-feltvalidator erklæres ved hjælp af <validator /> element. Her er et eksempel på en ikke-feltvalidator, som sammenligner to tal:
    <validator type="expression">
        <param name="expression">x > y</param>
        <message>x must be greater than y, x = ${x}, y = ${y}</message>
    </validator>
    

Bemærk, det anbefales at bruge feltvalidatorerne, fordi det giver mere fleksibilitet. Åbn nu Eclipse IDE, og lad os se, hvordan man implementerer en simpel Hello World-applikation i struts2-rammerne!

2. Struts2-valideringseksempel

2.1 Anvendte værktøjer

Vi bruger Eclipse Kepler SR2, JDK 8 og Maven. Når det er sagt, har vi testet koden mod JDK 1.7, og det fungerer godt.

2.2 Projektstruktur

Lad os først gennemgå den endelige projektstruktur, hvis du er i tvivl om, hvor du skal oprette de tilsvarende filer eller mappe senere!

Fig. 2:Struts2-valideringsstruktur

2.3 Projektoprettelse

Dette afsnit vil demonstrere, hvordan man opretter et Java-baseret Maven-projekt med Eclipse. I Eclipse IDE skal du gå til File -> New -> Maven Project .

Fig. 3:Opret Maven Project

I vinduet New Maven Project vil det bede dig om at vælge projektplacering. Som standard vil 'Brug standardarbejdspladsplacering' være valgt. Bare klik på næste knap for at fortsætte.

Fig. 4:Projektdetaljer

Vælg 'Maven Web App' arketype fra listen over muligheder, og klik på næste.

Fig. 5:Arketypevalg

Den vil bede dig om at 'Indtast gruppen og artefakt-id'et for projektet'. Vi vil indtaste detaljerne som vist på billedet nedenfor. Versionsnummeret vil som standard være:0.0.1-SNAPSHOT .

Fig. 6:Arketypeparametre

Klik på Udfør, og oprettelsen af ​​et maven-projekt er fuldført. Hvis du observerer, har den downloadet maven-afhængighederne og en pom.xml filen vil blive oprettet. Den vil have følgende kode:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Struts2ValidationExample</groupId>
	<artifactId>Struts2ValidationExample</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
</project>

Vi kan begynde at tilføje de afhængigheder, som udviklere ønsker som Struts2 Core osv. Lad os begynde at bygge applikationen!

3. Applikationsbygning

Nedenfor er de trin, der er involveret i udviklingen af ​​denne applikation.

3.1 Maven-afhængigheder

Her specificerer vi afhængigheden for Struts2-rammen. De resterende afhængigheder vil automatisk blive løst af Maven, såsom Struts2 Core, OGNL osv. Den opdaterede filen vil have følgende kode:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Struts2ValidationExample</groupId>
	<artifactId>Struts2ValidationExample</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<dependencies>
		<!-- Servlet API Dependency -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>
		<!-- Struts2 Core Framework Dependency -->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-core</artifactId>
			<version>2.3.24.1</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>${project.artifactId}</finalName>
	</build>
</project>

3.2 Java-klasseoprettelse

Lad os oprette de nødvendige Java-filer. Højreklik på src/main/java mappe, New -> Package .

Fig. 7:Java-pakkeoprettelse

Et nyt pop-vindue åbnes, hvor vi indtaster pakkenavnet som:com.jcg.struts2.validation .

Fig. 8:Java-pakkenavn (com.jcg.struts2.validation)

Når pakken er oprettet i applikationen, skal vi oprette Struts2-handlingsklassen. Højreklik på den nyoprettede pakke:New -> Class .

Fig. 9:Java-klasseoprettelse

Et nyt pop-vindue åbnes og indtast filnavnet som:LinkAction . Handlingsklassen oprettes inde i pakken:com.jcg.struts2.validation .

Fig. 10:Java-klasse (LinkAction.java)

3.2.1 Implementering af Action Class

Handlinger er kernen i Struts2-rammerne, som de er for enhver Model View Controller-ramme. Men handlingsserverne i to vigtige kapaciteter, dvs.

  • For det første er handlingsklassen ikke forpligtet til at implementere nogen grænseflade eller udvide nogen klasse
  • For det andet kræves handlingsklassen for at oprette en execute() metode til at indsætte al forretningslogikken og returnere en strengværdi for at fortælle applikationen, hvor den skal omdirigere

Denne handlingsklasse omdirigerer klienten til successiden, hvis e-mailen er [email protected] , ellers vil den omdirigere tilbage til fejlsiden. Tilføj følgende kode til det:

LinkAction.java

package com.jcg.struts2.validation;

import com.opensymphony.xwork2.ActionSupport;

public class LinkAction extends ActionSupport {	

	private String uname, pass, mail;
	private static final long serialVersionUID = 1L;

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public String getMail() {
		return mail;
	}

	public void setMail(String email) {
		this.mail = mail;
	}

	// All Struts Business Logic Goes Here In This Method
	public String execute() {
		if((uname != null && uname.equalsIgnoreCase("jcg")) && (pass != null && pass.equalsIgnoreCase("jcg@123")) && 
				(mail != null && mail.equalsIgnoreCase("[email protected]"))) {
			return SUCCESS;
		} else {
			return ERROR;
		}		
	}
}

3.3 Konfigurationsfiler

Lad os skrive alle de konfigurationsfiler, der er involveret i denne applikation.

3.3.1 Struts-konfigurationsfil

For at konfigurere struts2-rammeværket skal udviklere implementere en konfigurationsfil, dvs. struts.xml . I denne fil vil vi definere resultattagget, som kortlægger en bestemt handling med en JSP side. Højreklik på src/main/resources mappe, New -> Other .

Fig. 11:Oprettelse af XML-fil

Et nyt pop-vindue åbnes og vælg guiden som en XML fil.

Fig. 12:Wizard Selection

Igen åbnes et pop op-vindue. Bekræft den overordnede mappes placering som:Struts2ValidationExample/src/main/resources og indtast filnavnet som:struts.xml . Klik på Udfør.

Fig. 13:struts.xml

Når XML filen er oprettet, tilføjer vi følgende kode til den:

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<!-- Enables Dynamic Method Invocation To Customize The Default 'execute()' Method In The Controller -->
	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
	
	<!-- Struts2 Action Mapping -->
	<package name="default" extends="struts-default">
		<action name="login" class="com.jcg.struts2.validation.LinkAction"> 
       		<result name="error">/error.jsp</result>
            <result name="success">/success.jsp</result>
            <result name="input">/index.jsp</result>
        </action>
	</package>
</struts>

3.3.2 Validator-konfigurationsfil

For at specificere valideringsreglerne for loginformularen, vil vi oprette LinkAction-validation.xml fil under pakken:src/main/resources/com/jcg/struts2/validation/ med følgende indhold:

LinkAction-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="uname">
		<field-validator type="requiredstring">
			<message>Username Is Required!</message>
		</field-validator>
	</field>
	<field name="pass">
		<field-validator type="requiredstring">
			<message>Password Is Required!</message>
		</field-validator>
	</field>
	<field name="mail">
		<field-validator type="requiredstring">
			<message>Email Is Required!</message>
		</field-validator>
		<field-validator type="email">
			<message>Enter A Valid Email Address!</message>
		</field-validator>
	</field>
</validators>

Her har vi specificeret feltvalidatorerne for de tre felter i loginformularen med validatortyper af requiredstring og email . Teksten inde i <message /> element vil blive vist til brugeren, hvis han/hun indtaster de ugyldige data. For f.eks. Forkert e-mail-format eller de tomme strenge.

3.3.3 Web Deployment Descriptor

web.xml fil erklærer et filter (dvs. StrutsPrepareAndExecuteFilter ) for at konfigurere struts2-rammerne i applikationen. Tilføj følgende kode til det:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
	<display-name>Struts 2 Web Application</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

3.4 Oprettelse af JSP View

Lad os skrive en simpel JSP for at illustrere denne vejledning. Højreklik på Struts2ValidationExample/src/main/webapp mappe, New -> JSP File .

Fig. 14:JSP-oprettelse

Bekræft den overordnede mappes placering som:Struts2ValidationExample/src/main/webapp og indtast filnavnet som:index.jsp . Klik på Udfør.

Fig. 15:index.jsp

Gentag trinnet (dvs. fig. 14) og opret følgende nye JSP filer, dvs.

  • success.jsp
  • error.jsp

3.4.1 Ansøgningens inputformular

En login-side bruger struts2-tags til at vise indtastningsfelterne for brugernavn, e-mail og adgangskode sammen med en login-knap. Tilføj følgende kode til det:

index.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
	    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	    <title>Struts2 Validation Example</title>
	    <style type="text/css">
	    	#loginFormDiv {
	    		margin-top: -24px !important;
	    	}
	    	.errorMessage {
	    		color: red !important;
	    	}
	    </style>
	</head>
	<body>
	    <div align="center">
	    	<h3><u>Struts2 Validation Using Xml Example</u></h3>
	    	<div id="loginFormDiv">
		    	<s:form action="login" id="validationLoginFormId">
			        <s:textfield id="nameId" name="uname" label="Enter Username" /> 
			        <s:textfield id="emailId"  name="mail" label="Enter Email" /> 
			        <s:password id="passId" name="pass" label="Enter Password" /> 
			        <s:submit value="Login" align="center" />
			    </s:form>
		    </div>
	    </div>
	</body>
</html>

Klientsidevalidering

Attributten validate=”true” af <s:form /> tag angiver, at formularvalideringen vil finde sted på klientsiden.

<s:form action="login" validate="true" />

Struts2 vil generere den passende Javascript-kode til at udføre valideringen på klientsiden.

Server-sidevalidering

Uden at angive attributten validate=”true” , vil Struts2 udføre valideringskontrollen på serversiden.

<s:form action="login" />

Her vil der ikke blive genereret nogen Javascript-kode, men i stedet vil hver indsendelse blive sendt til serveren til validering.

3.4.2 Appens successide

Denne side vil blive hentet, hvis loginformularen består valideringskontrollen, og brugeren indtaster de ønskede loginoplysninger. Tilføj følgende kode til det:

success.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
	    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	    <title>Struts2 Validation Example</title>
	    <style type="text/css">
	    	#welcomeNameSpan {
	    		text-transform: capitalize;
	    		color: green;
	    	}
	    </style>
	</head>
	<body>
		<h3>Welcome <span id="welcomeNameSpan"><s:property value="uname"/></span>, You Are Successfully Logged In!</h3>
		</body>
</html>

3.4.3 Applikationsfejlside

Denne side vil blive hentet, hvis brugeren har indtastet de ugyldige loginoplysninger. Tilføj følgende kode til det:

error.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>Struts2 Validation Example</title>
   </head>
   <body>
      <h3><span style="color: red;">Unauthorised Access! Please Enter Valid Credentials!</span></h3>
   </body>
</html>

4. Kør programmet

Når vi er klar med alle ændringerne, lad os kompilere projektet og implementere applikationen på Tomcat7-serveren. For at implementere applikationen på Tomat7 skal du højreklikke på projektet og navigere til Run as -> Run on Server .

Fig. 16:Sådan implementeres applikation på Tomcat

Tomcat vil implementere applikationen i sin web-apps-mappe og vil starte dens udførelse for at implementere projektet, så vi kan gå videre og teste det i browseren.

5. Projektdemo

Åbn din yndlingsbrowser og tryk på følgende URL. Outputsiden (dvs. login-formularen) vil blive vist.

http://localhost:8085/Struts2ValidationExample/

Servernavn (localhost) og port (8085) kan variere i henhold til din Tomcat-konfiguration. Udviklere kan fejlsøge eksemplet og se, hvad der sker efter hvert trin. God fornøjelse!

Fig. 17:Loginformularside

Skriv ikke noget, bare tryk på Login knap. Valideringsfejlmeddelelserne vil blive vist over felterne.

Fig. 18:Fejlmeddelelser

Indtast nu et tilfældigt brugernavn, e-mailadresse (i det forkerte format) og en adgangskode. Klik på Login knap.

Fig. 19:E-mail-format fejlmeddelelse

Indtast nu de korrekte loginoplysninger (dvs. brugernavn:jcg, adgangskode:jcg@123 og e-mail:[email protected]), og klik på Login knappen, vil brugerne blive omdirigeret til successiden, hvis alt er i orden med applikationen.

Fig. 20:Successide

Det er alt for dette indlæg. God læring!

6. Konklusion

I denne tutorial lærte udviklere at downloade, oprette et nyt projekt i Eclipse IDE og tilføje Struts2-biblioteker for at skrive en simpel struts2-valideringsrammevejledning. Det er alt for denne tutorial, og jeg håber, at denne artikel tjente dig, hvad end du ledte efter.

7. Download Eclipse Project

Dette var et eksempel på struts2-validering for begyndere.struts

Java tag