1. 서문
1.1. 입력 확인이란 무엇입니까? 검증을 입력 해야하는 이유는 무엇입니까?
이전 기사에서는 데이터 유형 변환에 대해 배웠습니다. 우리는 두 가지 프리젠 테이션 계층 데이터 처리 방법을 언급했습니다. 또한 사용자 입력 데이터는 원하는 데이터를 얻기 위해 유형 변환이어야한다고 언급했습니다. 그렇다면 유형 변환 후 데이터가 원하는 데이터라고 어떻게 결정합니까? 여기는 약간 횡단입니다. 성인 남자는 18 세이며 지금 18 세의 데이터를 얻으려고하지만 사용자는 32를 입력하고 유형을 통해이를 변환하는 것이 정확하지만 데이터는 원하는 것이 아닙니다. 현재 우리는 무엇을해야합니까? 따라서 입력 확인은 여기에서 유용합니다.
유형 변환과 입력 검증의 관계는 다음과 같습니다. 유형 변환은 입력 확인을위한 전제 조건입니다. 두 유형 변환이 잘못되면 입력 검증을 수행 할 필요가 없습니다. 그러나 종종 유형 변환 및 입력 검증은 동시에 수행됩니다.
입력 검증에는 두 가지 유형이 있습니다.
1. 클라이언트 확인;
2. 서버 측 확인. 여기에 주로 설명하는 것은 서버 측 확인입니다 (validatexxx 메소드 및 XML 구성 파일 확인).
1.2. validatexxx 메소드를 다시 쓰는 검증 프로세스
1. 유형 변환기는 문자열의 요청 매개 변수의 유형 변환을 담당 하고이 값을 동작의 속성 값으로 설정합니다.
2. 유형 변환 실행 중에 예외가 발생할 수 있습니다. 예외가 발생하면 예외 정보가 ActionContext에 자동으로 저장됩니다. ConferiNERROR 인터셉터는 필더러로 캡슐화 할 책임이 있습니다.
3. 반사를 통해 validatexxx () 메소드를 호출합니다. 여기서 xxx는 사용자 요청을 처리하는 처리 로직에 해당하는 메소드 이름입니다.
4. Validate Method of Action 클래스를 호출하십시오
5. 위의 단계에 필더러가 표시되지 않으면 작업에서 사용자 요청을 처리하는 처리 방법이 호출됩니다. 필더러가 나타나면 시스템은 입력 논리보기에 지정된보기로 전송됩니다.
2. 입력 검증
2.1. 여기에는 검증을 입력하는 두 가지 방법이 있습니다.
1. Validate 메소드를 다시 작성하거나 Validexxx 메소드를 사용자 정의합니다 (여기서 xxx가 정의하는 이름이며 메소드가 먼저 실행되고 Validate 메소드가 실행됩니다).
2. 확인을 위해 새 XML을 만듭니다
2.2. 유효성 검사 메소드를 다시 작성하십시오
MVC 프레임 워크에서 표준화 된 데이터 검증 부분이 제공됩니다. struts2는 여기에 검증 방법을 제공합니다. 입력 검증을 수행하기 위해 Validate 메소드를 다시 작성할 수 있습니다. 그러나 Validate 메소드를 다시 작성하는 것에 대해 알아야 할 두 가지 점이 있습니다. 1. 유효성 검사 메소드는 실행 메소드 전에 실행됩니다. 2. Validate 메소드는 모든 작업에 대한 확인 규칙을 실행합니다. 특정 조치를 구별하기 위해 Validexxx 메소드를 사용할 수 있습니다.
참고 : 다음 예제는 로컬 유형 변환 및 입력 검증의 예입니다.
간단한 등록 확인 예 :
새 엔티티 클래스 사용자 만들기 :
사용자
새보기 : register.jsp
<%@ page language = "java"contmenttype = "text/html; charset = utf-8"pageencoding = "utf-8"%> <%@ taglib uri = "/struts-tags"prefix = "s"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // eton. "http://www.w3.org/tr/tr/html4/loose.dtd"> html> html> http-quiv ="content-type "content ="text/html; charset = utf-8 "> </head> <body> <h2> <H2> <H2> action = "rether_test"> user : <입력 유형 = "텍스트"이름 = "user"> <br/> 비밀번호 : <입력 유형 = "암호"이름 = "사용자"> <br/> 비밀번호 : <input type = "password"name = "user"> <br/> <입력 유형 = "제출"값 = "제출"> </body> </html>
ActionSupport를 상속받을 새 등록 클래스를 만듭니다
package com.validatexxx; import com.opensymphony.xwork2.actionSupport; // validate () 및 validatexxx를 validexxx로 지정된 메소드를 regruts.xml에서 validateSt.xml에서 validates (validatesport)에서 호출 한 후 테스트 메소드를 호출 한 후에 호출됩니다. 공개 사용자 getUser () {return user; } public void setUser (사용자 사용자) {this.user = user; } // 2 @override public void validate () {system.out.println ( "Validate Method를 다시 작성"); if (null == user.getPassword () || "".Equals (user.getPassword ()) || null == user.getRepassword () || "".equals (user.getRepassword ()))) {this.AddFielderror ( "Repassword", "repassword가 동일한 암호 여야합니다"); 반품; } if (! user.getPassword (). equals (user.getRepassword ())) {// fielderror에 데이터가 존재하면 서버는 입력의 논리적보기로 자동 이동합니다. }} // 1 public void validateTest () {system.out.println ( "사용자 정의 확인 방법 : validateTest"); } // 3 public string test () {System.out.println ( "테스트 : 메소드"); 반환 성공; }}참고 : 여기의 속성은 사용자이므로 JSP 페이지 매개 변수의 이름을 인스턴스 사용자의 이름으로 작성해야하며 데이터로 채워진 클래스를 반환하려면 유형 변환기를 작성해야합니다.
새 struts.xml을 만들고 web-inf/classs/struts.xml에 저장하십시오
참고 : 여기의 메소드는 Valudatexxx () 메소드 후에 귀하가 정의해야합니다. 테스트는 다음과 같습니다. *사용하는 경우 structs2는 또한 엄격한 메모드 invocation = "false"를 구성해야합니다. 버전이 너무 높기 때문에 보안이 증가했으며 사용하려면 모든 것이 추가되어야한다고합니다.
strutStypeConverter를 상속하기 위해 새 userTypeConverter 클래스를 작성하십시오 (유형 변환기 생성)
package com.validatexxx; import java.util.map; import org.apache.struts2.util.strutStypeConverter; // 유형의 클래스 공개 클래스 usertypeconverter strutStypeConverter {@override public object (map arg0, string [] arg2) {class arg2) { System.out.println ( "usertypeconverter : type converion!"); 사용자 user = 새 사용자 (); user.setusername (arg1 [0]); user.setpassword (arg1 [1]); user.setRepassword (arg1 [2]); 리턴 사용자; } @override public string convertString (map arg0, object arg1) {user u = (user) arg1; U.getUserName ()+"!"을 반환합니다. }}참고 :이 유형의 변환기가 생성 된 후에는 새로운 등록 조정-수정을 생성하고 동일한 디렉토리에 배치해야합니다.
이 파일의 내용은 다음과 같습니다.
첫 번째는 등록에있는 속성 이름이며 유형 변환기에 대한 특정 경로입니다.
새로운 성공보기 : success.jsp를 만듭니다
성공 .JSP
새 오류보기 : input.jsp
input.jsp
성공적인 코드 실행의 효과는 다음과 같습니다.
register.jsp 페이지
성공적으로 점프 한 페이지는 : success.jsp입니다
콘솔 테스트 결과는 다음과 같습니다.
데이터는 유형 변환을 위해 usertypeconverter로 이동 한 다음 등록 작용으로 점프하고 ValidAtEtest 메소드를 실행하고 유효성을 유지 한 다음 성공을 반환 한 다음 결과보기를 실행합니다.
코드가 실패한 순서를 살펴 보겠습니다.
register.jsp 페이지
input.jsp 페이지
콘솔 테스트 효과 :
Validate 메소드에서 저자의 코드는 다음과 같습니다. this.addfielderror (). 앞에서 언급했듯이 오류가 추가되면 서버가 자동으로 잘못된 인터페이스로 이동하는 데 도움이됩니다. 입력을 반환하고 입력은 struts.xml로 구성되며 input.jsp 인터페이스로 돌아갑니다.
2.3. 입력 확인을 위해 새 XML을 만듭니다
새로운보기 인터페이스를 만듭니다 : test.jsp
<%@ page language = "java"contmenttype = "text/html; charset = utf-8"pageencoding = "utf-8"%> <%@ taglib uri = "/struts-tags"prefix = "s"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // eton. "http://www.w3.org/tr/tr/tr/html4/loose.dtd"> html> html> http-tequiv ="content-type "content ="text/html; charset = utf-8 "> <title> xml verification </head> <body> <sorm action ="metters = "mether ="mether = "section = <s : textfield name = "name"label = "name"size = "20" /> <s : textfield name = "age"label = "age"size = "20" /> <s : 제출 이름 = "label ="align = "align ="center " /> < /s : form> < /body> < /html>
ActionSupport를 상속받을 새 직원 클래스를 만듭니다
이 클래스는 Orederide Validate Method 및 XML 구성을 사용하므로 확인을 위해 그 중 하나를 선택할 수 있습니다.
package com.validatexxx; import com.opensymphony.xwork2.actionSupport; // validate () 메서드를 사용하여 확인하십시오. 이것은 서버 측 확인입니다! 공공 클래스 직원은 ActionSupport {private String name; 사적인 int 연령; 공개 문자열 getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public int getage () {반환 연령; } public void 설정 (int Age) {this.age = age; } // 두 번째 단계는이 메소드를 실행합니다 public String execute () {system.out.println ( "execute :"+this.age); 반환 성공; }/* 서버 측을 사용한 확인 : validate method ()를 다시 작성합니다. // 첫 번째 단계는 메소드를 실행하는 것입니다. // 유효성 검사 메소드를 다시 작성하십시오. public void validate () {system.out.println ( "Validate"); if (name == null || name.trim (). equals ( "")) {//이 메소드에 데이터를 추가 할 때 서버는 입력을 반환 한 다음 input.jsp 페이지로 이동합니다. AddFielderror ( "이름", "이름이 필요하다"); } if (나이 <28 || 연령> 65) {addfielderror ( "나이", "연령은 28 ~ 65 사이에 있어야 함); }}*/}struts.xml에서 구성 :
여기서 성공. jsp 및 input.jsp는 여전히 위의 내용을 사용합니다.
그 후, 우리는 새로운 직원 -validation.xml을 만들고 직원과 동일한 디렉토리에 경로를 배치해야합니다. 참고 : -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.3.3.dtd"> <field-validator> <field-validator <message> 이름이 필요합니다. </message> </field-validator> </field> <필드 이름 = "age"> <field-validator type = "int"> <param name = "min"> 29 </param> <param "> 64 </param"> <message> 에이지
키 포인트 :이 파일의 DTD 한계는 반환 오류 여야합니다.
오류 DefaultDispatcherErrorHandler 예외는 처리 중에 발생했습니다 : [연결 시간 출력 : Connect- [알 수없는 위치], NULL]
다음으로 http : // localhost : 8080/learstruts2/validatejsp/test.jsp를 사용하여 액세스합니다.
성공적으로 테스트 :
test.jsp 인터페이스 :
성공 .JSP
테스트 실패 예 :
input.jsp 인터페이스 :
그림 예제가 정확합니다.
실제로 Struts2에는 여러 내장 유효성 검사기가 있습니다 : 필수 유효성 검사기, 필수 문자열 유효성 검사기, 정수 유효성 검사기, 날짜 유효성 검사기, 표현 유효성 검사기, 문자 길이 유효성 검증기, 정규식 검증기 등에 저자는 이것을 하나씩 설명합니다.
위는 편집자가 소개 한 Struts2 데이터 입력 검증 자습서에 대한 자세한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!