본문 바로가기
IT/Struts2

유효성 검사

by Jeami 2013. 7. 30.
반응형



스트럿츠2 유효성 검사



자바 스크럽트를 사용한 유효성 검사가 아닌 스트럿츠2 에서의 유효성 검사에 대해 알아보도록 하겠습니다.

JSP 에서는 자바 스크립트로 유효성 검사를 했었는데요. JSP 뿐만 아니라 PHP 도 마찬가지입니다.

스트럿츠2 에서만 사용하는 유효성 검사!! 알아보도록 하겠습니다^^


먼저, 유효성 검사를 위해 제공되는 validator 패턴을 살펴보겠습니다.

required validator                   필드가 null 값인지 확인

requiredstring validator           null 값, 빈 문자열인지 확인 

int validator                          정수인지와 지정범위의 값인지 확인   

double validator                    실수인지와 지정범위의 값인지 확인

date validator                        날짜값이 특정 범위 값인지 확인

expression validator               정규표현식대로 진행되는지 확인.

fieldexpression validator         OGNL 표현식을 사용해서 필드를 검사한다.

email validator                       이메일 형식이 맞는지 확인

url validator                               유효한 URL 인지 확인

visitor validator                           액션의 객체 타입 Property에 유효성 검사

conversion validator                    필드에 변환 에러 확인

stringlength validator                    문자열 길이 검사

regex validator                            정규표현식을 사용해서 문자열 필드 검사

각각의 사용법 다 외울 필요는 업습니다^^


수많은 validator 패턴 중에서 "required 와 requiredstring" 에 대해 기본적인 사용법을 알아 보도록 하겠습니다.

required : 필수로 입력해야 하는 필드이며,

requiredstring : 필수이면서 빈 문자열이 아닌지 확인하는,

기능입니다.







추천은 블로거에게 큰 힘이 됩니다(로그인 불필요)양질의 정보도 꼭 보답하겠습니다^^





userRegForm.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="s"  uri="/struts-tags" %>


<html>

<head><title>[userRegForm.jsp]</title></head>

<body>

<h1>[userRegForm.jsp_스트럿츠 태그 이용]</h1>

<h1>[Join Us]</h1>

<s:form action="UserRegAction" validate="true">

<s:textfield label="아이디" name="Id" />

<s:password label="비번" name="Pass" value="%{Pass}" />

<s:textfield label="이름" name="Name" value="%{Name}" />

<s:textfield label="나이" name="Age" value="%{Age}" />

<s:textfield label="이메일" name="Email" value="%{Email}" />

<s:submit value="저장" />

<s:reset value="취소" />

</s:form>

</body>

</html>




UserRegAction.java

package action;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionSupport;

public class  UserRegAction  extends ActionSupport{

/* 사용할 프로퍼티 변수 설정 후, 

 * 이클립스에서 |-- 마우스 오른쪽 버튼클릭 

 * |-- source

 * |-- Generate getters and setters 

 * |-- selectall

 * |-- 확인

 *  자동으로 getter/setter 메소드가 생성됩니다. 

 *  private 변수로 생성했기 때문에 반드시 메소드로 값 입력과 출력을 할 수 있습니다.

*/

private String Id;

private String Pass;

private String Name;

private int Age;

private String Email;


public String getId() { return Id; }

public void setId(String id) { Id = id; }

public String getPass() { return Pass; }

public void setPass(String pass) { Pass = pass; }

public String getName() { return Name; }

public void setName(String name) { Name = name; }

public int getAge() { return Age; }

public void setAge(int age) { Age = age; }

public String getEmail() { return Email; }

public void setEmail(String email) { Email = email; }


//디폴트 실행 메소드 execute() 생성해줍니다.

public String execute() throws Exception{

return SUCCESS;

}//end

} //class End




userRegSuccess.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ taglib prefix="s" uri="/struts-tags" %>


<html>

<head><title>[userRegSuccess.jsp]</title></head>

<body>

<h1>[userRegSuccess.jsp]</h1>

<b><font color=blue size=6>회원가입 성공</font></b><br>

<h1>

아이디 : <s:property value="Id" /><br>

비   번 : <s:property value="Pass" /><br>

이   름 : <s:property value="Name" /><br>

나   이 : <s:property value="Age" /><br>

이메일 : <s:property value="Email" /><br>

</h1>

</body>

</html>



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> 

<package name="Web0724" extends="struts-default">

<action name="UserRegForm">

<result>/jsp/userRegForm.jsp</result>

</action>

<action name="UserRegAction" class="action.UserRegAction">

<result name="input">/jsp/userRegForm.jsp</result>

<result name="success">/jsp/userRegSuccess.jsp</result>

</action>

</package> 

 </struts>




UserRegAction-validation.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">

    

<validators>

<field name="Id">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>아이디를 입력해주세요.</message>

</field-validator>

</field>

<field name="Pass">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>비밀번호를 입력해주세요.</message>

</field-validator>

</field>

<field name="Name">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>이름을 입력해주세요.</message>

</field-validator>

</field>

<field name="Age">

<field-validator type="requiredstring">

<message>나이를 입력해주세요.</message>

</field-validator>

<field-validator type="int">

<param name="min">10</param>

<param name="max">100</param>

<message>${min}~${max} 세까지 가능합니다.</message>

</field-validator>

</field>

<field name="Email">

<field-validator type="requiredstring">

<param name="trim">true</param>

<message>이메일을 입력해주세요.</message>

</field-validator>

<field-validator type="email">

<message>이메일 형식이 아닙니다.</message>

</field-validator>

</field>

</validators>




핵심내용

스트럿츠2 에서 유효성 검사를 xml 파일로 할 경우에 주의해야 할 점이 있습니다.

예를들어) UserRegAction.java 클래스에 유효성 검사를 넣어주고 싶다고 할 때, UserRegAction-validate.xml 로 만들어진 파일이 같은 패키지 안에 반드시 존재해야만 한다는 것입니다. 

이 점을 명심해주시면 좋을 것 같고요.



아래 코드를 분석해보도록 하겠습니다.

<field name="Age">    // 검사할 필드명을 name=" " 에 입력하면 됩니다.

<field-validator type="requiredstring">

<message>나이를 입력해주세요.</message>

</field-validator>

<field-validator type="int">    // int 형일 경우에는 아래와 같이 입력값 범위가 적용됩니다.

<param name="min">10</param>

<param name="max">100</param>

<message>${min}~${max} 세까지 가능합니다.</message>  // 오류 발생시 출력메시지

</field-validator>

</field>




궁금하신 내용은 댓글 달아주시기 바랍니다.

기본적인 내용은 일단 이렇습니다. 보시면서 분석해보신다면 조금이리도 도움이 될 수 있을 것 같은데,

부디 도움이 되셨으면 좋겠습니다..^^



반응형

'IT > Struts2' 카테고리의 다른 글

스트럿츠2 파일 업로드 예제  (0) 2013.07.31
스트럿츠2 파일 업로드  (0) 2013.07.31
스트럿츠2 태그 <iterator>  (0) 2013.07.30
스트럿츠2 태그 <s:sort />  (0) 2013.07.30
OGNL ( Object Graph Navigation Language )  (0) 2013.07.29

loading