Struts 2-검증 프레임 워크
이 장에서 우리는 Struts 검증 프레임 워크에 대해 더 깊이 살펴볼 것입니다. Struts 코어에는 작업 메서드가 실행되기 전에 유효성 검사를 수행하기 위해 규칙을 실행하도록 애플리케이션을 지원하는 유효성 검사 프레임 워크가 있습니다.
클라이언트 측 유효성 검사는 일반적으로 Javascript를 사용하여 수행됩니다. 그러나 클라이언트 측 유효성 검사에만 의존해서는 안됩니다. 모범 사례에 따르면 애플리케이션 프레임 워크의 모든 수준에서 유효성 검사를 도입해야합니다. 이제 Struts 프로젝트에 유효성 검사를 추가하는 두 가지 방법을 살펴 보겠습니다.
여기에서 우리는 Employee 간단한 페이지를 사용하여 이름과 나이를 캡처해야하며 사용자가 항상 28에서 65 사이의 범위에있는 이름과 나이를 입력하는지 확인하기 위해이 두 가지 유효성 검사를 수행합니다.
예제의 기본 JSP 페이지부터 시작하겠습니다.
메인 페이지 생성
메인 페이지 JSP 파일 작성 index.jsp, 위에서 언급 한 직원 관련 정보를 수집하는 데 사용됩니다.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ 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>
<title>Employee Form</title>
</head>
<body>
<s:form action = "empinfo" method = "post">
<s:textfield name = "name" label = "Name" size = "20" />
<s:textfield name = "age" label = "Age" size = "20" />
<s:submit name = "submit" label = "Submit" align="center" />
</s:form>
</body>
</html>
index.jsp는 아직 다루지 않은 Struts 태그를 사용하지만 태그 관련 장에서 살펴 보겠습니다. 그러나 지금은 s : textfield 태그가 입력 필드를 인쇄하고 s : submit이 제출 버튼을 인쇄한다고 가정합니다. 우리는 각 태그에 대한 레이블을 생성하는 각 태그에 대해 레이블 속성을 사용했습니다.
보기 만들기
정의 된 작업이 SUCCESS를 반환하는 경우 호출되는 JSP 파일 success.jsp를 사용합니다.
<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<%@ 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>
<title>Success</title>
</head>
<body>
Employee Information is captured successfully.
</body>
</html>
액션 만들기
그래서 작은 액션 클래스를 정의하겠습니다. Employee을 클릭 한 다음 validate() 아래와 같이 Employee.java파일. 액션 클래스가ActionSupport 그렇지 않으면 validate 메소드가 실행되지 않습니다.
package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class Employee extends ActionSupport {
private String name;
private int age;
public String execute() {
return SUCCESS;
}
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 void validate() {
if (name == null || name.trim().equals("")) {
addFieldError("name","The name is required");
}
if (age < 28 || age > 65) {
addFieldError("age","Age must be in between 28 and 65");
}
}
}
위의 예에서와 같이 유효성 검사 방법은 '이름'필드에 값이 있는지 여부를 확인합니다. 값이 제공되지 않은 경우 사용자 지정 오류 메시지와 함께 '이름'필드에 대한 필드 오류를 추가합니다. 둘째, '연령'필드에 입력 한 값이 28 ~ 65 사이인지 확인하고,이 조건이 충족되지 않으면 유효성 검사 필드 위에 오류를 추가합니다.
구성 파일
마지막으로 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>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "empinfo"
class = "com.tutorialspoint.struts2.Employee"
method = "execute">
<result name = "input">/index.jsp</result>
<result name = "success">/success.jsp</result>
</action>
</package>
</struts>
다음 내용은 web.xml 파일-
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id = "WebApp_ID" version = "3.0">
<display-name>Struts 2</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.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
이제 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 Export > WAR FileWar 파일을 만듭니다. 그런 다음 Tomcat의 webapps 디렉토리에이 WAR을 배포합니다. 마지막으로 Tomcat 서버를 시작하고 URL에 액세스하십시오.http://localhost:8080/HelloWorldStruts2/index.jsp. 다음 화면이 생성됩니다.
이제 필요한 정보를 입력하지 말고 Submit단추. 다음 결과가 표시됩니다-
필요한 정보를 입력하되 From 필드를 잘못 입력하고 이름은 "test", age는 30으로 말하고 마지막으로 클릭합니다. Submit단추. 다음 결과가 표시됩니다-
이 검증은 어떻게 작동합니까?
사용자가 제출 버튼을 누르면 Struts 2는 자동으로 validate 메소드를 실행하고 “if”메서드 안에 나열된 문이 참이면 Struts 2에서 addFieldError 메서드를 호출합니다. 오류가 추가 된 경우 Struts 2는 실행 메소드 호출을 진행하지 않습니다. 오히려 Struts 2 프레임 워크가input 조치를 호출 한 결과입니다.
따라서 유효성 검사가 실패하고 Struts 2가 input, Struts 2 프레임 워크는 index.jsp 파일을 다시 표시합니다. Struts 2 양식 태그를 사용했기 때문에 Struts 2는 양식 파일 바로 위에 오류 메시지를 자동으로 추가합니다.
이러한 오류 메시지는 addFieldError 메서드 호출에서 지정한 것입니다. addFieldError 메서드는 두 개의 인수를 사용합니다. 첫 번째는form 오류가 적용되는 필드 이름이고 두 번째는 해당 양식 필드 위에 표시 할 오류 메시지입니다.
addFieldError("name","The name is required");
반환 값을 처리하려면 input 다음 결과를 액션 노드에 추가해야합니다. struts.xml.
<result name = "input">/index.jsp</result>
XML 기반 유효성 검사
유효성 검사를 수행하는 두 번째 방법은 액션 클래스 옆에 xml 파일을 배치하는 것입니다. Struts2 XML 기반 검증은 이메일 검증, 정수 범위 검증, 양식 검증 필드, 표현식 검증, 정규식 검증, 필수 검증, 필수 문자열 검증, 문자열 길이 검증 등과 같은 더 많은 검증 옵션을 제공합니다.
xml 파일의 이름을 지정해야합니다. '[action-class]'-validation.xml. 그래서 우리의 경우 우리는Employee-validation.xml 다음 내용으로-
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name = "name">
<field-validator type = "required">
<message>
The name is required.
</message>
</field-validator>
</field>
<field name = "age">
<field-validator type = "int">
<param name = "min">29</param>
<param name = "max">64</param>
<message>
Age must be in between 28 and 65
</message>
</field-validator>
</field>
</validators>
위의 XML 파일은 이상적으로 클래스 파일과 함께 CLASSPATH에 보관됩니다. Employee 액션 클래스를 다음과 같이 만들지 않고validate() 방법-
package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class Employee extends ActionSupport{
private String name;
private int age;
public String execute() {
return SUCCESS;
}
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;
}
}
나머지 설정은 이전 예제와 동일하게 유지됩니다. 이제 응용 프로그램을 실행하면 이전 예제에서받은 것과 동일한 결과가 생성됩니다.
구성을 저장하는 xml 파일이 있다는 장점은 응용 프로그램 코드에서 유효성 검사를 분리 할 수 있습니다. 개발자는 코드를 작성하고 비즈니스 분석가는 유효성 검증 xml 파일을 작성할 수 있습니다. 주목해야 할 또 다른 사항은 기본적으로 사용 가능한 유효성 검사기 유형입니다.
Struts와 함께 기본적으로 제공되는 더 많은 유효성 검사기가 있습니다. 일반적인 유효성 검사기에는 날짜 유효성 검사기, 정규식 유효성 검사기 및 문자열 길이 유효성 검사기가 포함됩니다. Struts-XML Based Validators에 대한 자세한 내용은 다음 링크를 확인하십시오 .