Struts 2 의 입력 검사 인 스 턴 스 코드

우리 프로젝트 의 실제 개발 에서 데이터 검증 을 할 때 두 가지 로 나 뉘 는데 하 나 는 전단 검증 이 고 하 나 는 서버 검증 입 니 다.
   클 라 이언 트 검사:주로 jsp 를 통 해 js 스 크 립 트 를 작성 하 는데 그 장점 이 뚜렷 합 니 다.바로 잘못 입력 하면 알림 이 신속 하고 서버 의 부담 을 줄 일 수 있 습 니 다.그러나 클 라 이언 트 검 사 는 안전 하지 않 습 니 다.쉽게 말 하면 군 자 를 막 고 소인 을 막 을 수 없습니다.
   서버 측 검사:가장 큰 특징 은 데이터 안전 이지 만 서버 측 검사 만 있 으 면 서버 측의 부담 을 크게 증가 시 킬 수 있 습 니 다.
그래서 일반적으로 우리 개발 에서 클 라 이언 트 와 서버 측 검사 가 결합 하 는 역할 을 합 니 다.
이 글 은 서버 에서 만 검사 할 수 있 습 니 다.Struts 2 에서 두 가지 검사 방식 을 지원 합 니 다.
    코드 검사:서버 에서 자바 코드 편집 을 통 해 데이터 검 사 를 완료 합 니 다.
   설정 검사:xml 설정 검 사 는 xml 프로필 을 통 해 데이터 검 사 를 완료 합 니 다.
(1)코드 검사:
    코드 검 사 는 세 단계 로 나 뉜 다. 
단계 1.패키지 데이터
단계 2.검증 할 Action 실현  Action Support 를 계승 해 야 합 니 다.
단계 3.덮어 쓰기 Validate 방법  그리고 비 즈 니스 논리 데이터 검증 완료
사용자 인터페이스 register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
 <head>
 <title>    </title>
 </head> 
 <body style="text-align: center;">
 <table align="center" width="50%">
  <tr>
   <td style="color: red">
    <!-- <s:fielderror></s:fielderror> --> <!--            -->
   </td>
  </tr> 
 </table>
  <form action="${pageContext.request.contextPath }/login" method="post" >
      :<input type="text" name="username"><br><br>
       :<input type="text" name="password"><br><br>
         :<input type="text" name="password2"><br><br>
      <input type="reset" value="  ">
      <input type="submit" value="  ">
  </form>
 </body>
</html>
struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts> 
  <!--        -->
  <constant name="struts.devMode" value="true"></constant>  
  <package name="struts2" extends="struts-default" >
   <action name="login" class="com.study.Login.RegisterAction">
   <result name="success">/success.jsp</result>
   <!--  input       <s:fielderror/>       -->
   <result name="input">/register.jsp</result>
   </action>
  </package>   
</struts>
RegisterAction.java

import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport{
 private String username;
 private String password;
 private String password2;
 //     set       
 public void setUsername(String username) {
  this.username = username;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public void setPassword2(String password2) {
  this.password2 = password2;
 }
 @Override
 public String execute() throws Exception {
  return NONE;
 }
 //               
 @Override
 public void validate() {
  //         ,      
 System.out.println(username+"---"+password+"---"+password2);
 if(username==null || username.length()<6 || username.length()>20){
  //           
  this.addFieldError("username", "        ");
 }
 if(password==null || password.length()<6 || password.length()>20){
  //           
  this.addFieldError("password", "       ");
 }else if( password2==null || password2.length()<6 || password2.length()>20){
  this.addFieldError("password2", "       ");
 }else if(!password.equals(password2)){
  this.addFieldError("password2", "        ");
 }
  super.validate();
 }
}
실행 결과:

 (2)프레임 검사
 프레임 워 크 검증 은 XML 설정 방식 을 통 해 데이터 검증 을 하 는 것 이 고 이것 도 우리 가 기업 에서 개발 한 주류 검증 이다.
XML 검사 원리:많은 규칙 코드 를 xml 파일 에서 사용 할 검사 규칙 만 정의 하면 됩 니 다.그래서 우리 의 개발 시간 을 크게 줄 였 다.
 나 는 먼저 절 차 를 한 번 썼 다.
     STEP 1:JSP 작성
     STEP 2:Action 계승 Action Support 또는 Validateable 인터페이스 작성
  STEP 3:패 키 징 요청 파라미터
   단계 4:xml 검사 규칙 파일 작성
    Xml 검사 파일 의 이름 규칙:   Action 클래스 이름-vaidation.xml 액 션 의 모든 방법 을 검증 합 니 다.
      예 를 들 어 명명 규칙 RegisterAction-validation.xml
       동시에 만족 시 켜 야 합 니 다:Xml 검사 파일 과 Action 클래스 는 같은 가방 에 있어 야 합 니 다.
 STEP 1:register.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <title>    </title>
 </head>
 <body style="text-align: center;">
 <table align="center" width="50%">
  <tr>
   <td style="color: red">
    <s:fielderror></s:fielderror>
   </td>
  </tr>
 </table>
  <form action="${pageContext.request.contextPath }/login.action" method="post" >
   <table width="60%" >
    <tr>
     <td>   </td>
     <td>
      <input type="text" name="username" >
     </td>
    </tr>
    <tr>
     <td>  </td>
     <td>
      <input type="password" name="password" >
     </td>
    </tr>
    <tr>
     <td>    </td>
     <td>
      <input type="password" name="password2" >
     </td>
    </tr>
    <tr>
     <td>  </td>
     <td>
      <input type="text" name="age" >
     </td>
    </tr>
    <tr>
     <td>  </td>
     <td>
      <input type="text" name="email" >
     </td>
    </tr>
    <tr>
     <td>  </td>
     <td>
      <input type="text" name="birthday" >
     </td>
    </tr>
    <tr>
     <td>    </td>
     <td>
      <input type="text" name="graduation" >
     </td>
    </tr>
    <tr>
     <td>
      <input type="reset" value="  ">
     </td>
     <td>
      <input type="submit" value="  ">
     </td>
    </tr>
   </table>
  </form>
 </body>
</html>
  STEP 2:RegisterAction.java

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class RegisterAction extends ActionSupport implements ModelDriven<User>{
 //        
 private User user =new User();
 @Override
 public String execute() throws Exception {
  return NONE;
 }
 public User getModel() {
  return user;
 }  
}
STEP 3:패 키 징 요청 파라미터
위 에서 수 동 으로 검사 한 사례 는 set 방법 으로 데 이 터 를 봉 인 했 습 니 다.그러면 여기 서 저 는 Model Driven 인 터 페 이 스 를 사용 하여 요청 데 이 터 를 봉 인 했 습 니 다.
전에 제 가 데 이 터 를 봉인 하 는 세 가지 방법 을 말씀 드 렸 는데 잘 모 르 겠 으 면 이 글 을 보 세 요.Struts 프레임 워 크(6)-action 수신 요청 파라미터
User.java

import java.util.Date;
public class User {
 private String username;
 private String password;
 private String password2;
 private Integer age;
 private String email;
 private Date birthday;
 private Date graduation;
 /*
  *      get set  
  */
}
STEP 4:RegisterAction-validation.xml

<!DOCTYPE validators PUBLIC
  "-//Apache Struts//XWork Validator 1.0.2//EN"
  "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
 <validators>
 <!--dtd   xwork-core-**.jar   --> 
  <field name="username">
    <field-validator type="requiredstring">
     <param name="trim">true</param>
     <message>       </message>
    </field-validator>
    <field-validator type="stringlength">
    <param name="minLength">6</param>
    <param name="maxLength">15</param>
    <message>         ${minLength}   ${maxLength}   </message>
    </field-validator>
  </field> 
  <field name="password">
    <field-validator type="requiredstring">
     <param name="trim">true</param>
     <message>      </message>
    </field-validator>
    <field-validator type="stringlength">
    <param name="minLength">6</param>
    <param name="maxLength">15</param>
    <message>      ${minLength} ${maxLength}   </message>
    </field-validator>
  </field> 
  <field name="password2">
   <field-validator type="fieldexpression">
    <param name="expression"><![CDATA[password==password2]]></param>
    <message>       </message>
   </field-validator>
  </field>
  <field name="age">
   <field-validator type="required">
    <param name="trim">true</param>
    <message>      </message>
   </field-validator>
   <field-validator type="int">
    <param name="min">1</param>
    <param name="max">150</param>
    <message>      ${min}   ${max}  </message>
   </field-validator>
  </field>
  <field name="email">
   <field-validator type="email">
    <message>           </message>
   </field-validator>
  </field>
  <field name="birthday">
   <field-validator type="date">
    <param name="min">2001-01-01</param>
    <param name="max">2003-12-31</param>
    <message>      ${min}  ${max}  </message>
   </field-validator>  
  </field> 
 </validators>
struts.xml 은 변경 이 필요 없습니다.이전 과 같 으 면 됩 니 다.
실행 결과:

   잘못된 위 치 를 제시 하 는 것 이 추 하 다 고 생각한다 면 Struts 2 의탭 을 사용 하면 효과 가 좋 습 니 다.
현재 두 가지 방식 을 모두 말 했 습 니 다.지금 은 xml 설정 의 요점 에 대해 지식 요점 을 요약 합 니 다.
xml 검사 파일 상세 설명: 
:루트 요소
:action 에서 검증 할 속성 을 지정 합 니 다.name 속성 은 검 증 될 폼 필드 의 이름 을 지정 합 니 다.
:검사 기 를 지정 하고 type 지정 검증 규칙
     위 에서 지정 한 검사 기 requiredstring 은 시스템 에서 제공 되 며 시스템 은 대부분의 검증 수 요 를 만족 시 킬 수 있 습 니 다.
      이 검사 기의 정 의 는 xwork-2.x.jar 에 있 습 니 다.
      com.opensymphony.xwork 2.vaidator.vaidators 의 default.xml 에서 찾 을 수 있 습 니 다.
:하위 요 소 는 검증 프로그램 에 파 라 메 터 를 전달 할 수 있 습 니 다.
:하위 요 소 는 검사 실패 후의 알림 정보 입 니 다.국제 화가 필요 하 다 면 message 로 할 수 있 습 니 다.
                          키 속성 을 지정 합 니 다.키 의 값 은 속성 파일 의 키 입 니 다.
struts 2 검사 규칙:
시스템 에서 제공 하 는 검사 기 는 다음 과 같 습 니 다.
required(필수 검사 기,검 증 된 속성 값 은 null 일 수 없습니다)
requiredstring(필수 문자열 검사 기,검 증 된 속성 값 은 null 일 수 없 으 며 길이 가 0 이상 이 어야 합 니 다.기본 값 은 문자열 의 앞 뒤 공백 을 제거 합 니 다)
stringlength(문자열 길이 검사 기,검 증 된 속성 값 은 지정 한 범위 내 에 있어 야 합 니 다.그렇지 않 으 면 검사 에 실 패 했 습 니 다.minLength 매개 변 수 는 최소 길 이 를 지정 하고 maxLength 매개 변 수 는 최대 길 이 를 지정 합 니 다.trim 매개 변 수 는 검사 field 를 지정 하기 전에 문자열 전후의 빈 칸 을 제거 할 지 여부)
regex(정규 표현 식 검사 기,검 증 된 속성 값 이 정규 표현 식 과 일치 하 는 지 확인 합 니 다.expression 매개 변 수 는 정규 표현 식 을 지정 합 니 다.CaeSensive 매개 변 수 는 정규 표현 식 과 일치 할 때 대소 문 자 를 구분 할 지,기본 값 은 true 입 니 다)
int(정수 검사 기,field 의 전체 수 치 는 지정 한 범위 내 에서 min 은 최소 값 을 지정 하고 max 는 최대 값 을 지정 해 야 합 니 다)
double(2 정밀도 부동 소수점 검사 기,field 의 2 정밀도 부동 소수점 은 반드시 지정 범위 내 에서 min 은 최소 값 을 지정 하고 max 는 최대 값 을 지정 해 야 합 니 다)
fieldexpression(필드 OGNL 표현 식 검사 기,field 가 ognl 표현 식 을 만족 시 키 도록 요구 합 니 다.expression 매개 변 수 는 ognl 표현 식 을 지정 합 니 다.이 논리 표현 식 은 ValueStack 을 기반 으로 값 을 구 합 니 다.true 로 돌아 갈 때 검 사 를 통과 합 니 다.그렇지 않 으 면 통과 하지 않 습 니 다)
email(메 일 주소 검사 기,검 증 된 속성 값 이 비어 있 지 않 으 면 합 법 적 인 메 일 주소 여야 합 니 다)
url(인터넷 주소 검사 기,검 증 된 속성 값 이 비어 있 지 않 으 면 합 법 적 인 url 주소 여야 합 니 다)
date(날짜 검사 기,field 의 날짜 값 은 지정 한 범위 내 에서 min 은 최소 값 을 지정 하고 max 는 최대 값 을 지정 해 야 합 니 다)
conversion(검사 기 변환,형식 변환 에 실 패 했 을 때 알려 주 는 오류 정보 지정)
visitor(action 의 복합 형식의 속성 을 검사 하 는 데 사 용 됩 니 다.복합 형식 속성 을 검사 하 는 데 사용 할 검사 파일 을 지정 합 니 다)
expression(OGNL 표현 식 검사 기,비 필드 검사 기 입 니 다.expression 매개 변 수 는 ognl 표현 식 을 지정 합 니 다.이 논리 표현 식 은 ValueStack 을 기반 으로 값 을 구 합 니 다.true 로 돌아 갈 때 검 사 를 통과 합 니 다.그렇지 않 으 면 통과 하지 않 습 니 다.이 검사 기 는 필드 검사 기 스타일 의 설정 에 사용 할 수 없습니다)
마지막 으로 세부 사항 을 말씀 드 리 겠 습 니 다.
검사 파일 을 작성 할 때 도움말 정보 가 나 올 수 없습니다.
ActionClassName-vaidation.xml 검사 파일 을 작성 할 때 도움말 정보 가 나타 나 지 않 으 면 다음 방법 으로 해결 할 수 있 습 니 다.
windwos->preferences->myeclipse->files and editors->xml->xmlcatalog
"add"를 누 르 고 나타 나 는 창 에 있 는 location 에서"File system"을 선택 한 다음 xwork-2.1.2 디 렉 터 리 의 src\자바 디 렉 터 리 에서 xwork-vaidator-1.0.3.dtd 를 선택 하 십시오.
설정 창 으로 돌아 갈 때 창 을 급 하 게 닫 지 말고 창 에 있 는 Key Type 을 URI 로 바 꿔 야 합 니 다.Key 변경http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd
위 에서 말 한 것 은 소 편 이 소개 한 Struts 2 의 입력 검사 인 스 턴 스 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기