스프링

이 튜토리얼에서는 Bean Validation API ( Bean Validation 1.0 용 JSR 303 및 Bean Validation 1.1 용 JSR 349) 를 사용하여 Spring Web MVC 애플리케이션에서 양식 필드의 유효성을 검사하는 방법을 학습 한다. 우리는 아래와 같이 Spring MVC에서 email과 password의 두 필드에 대한 유효성 확인 제약 조건을 가진 로그인 폼을 개발할 것입니다 .

 

 애플리케이션을 구현하기위한 자세한 단계를 수행하기 전에 JavaBean 객체의 속성에 대한 유효성 검증 제약 조건을 정의하는 데 사용되는 Bean Validation API에 대해 알아 보겠습니다.

 

 

 

1. Bean 유효성 검사 API와 Hibernate Validator 구현

요컨대, Bean Validation API 는 프로그래머가 주석을 통해 객체 모델에 대한 유효성 검증 제약 조건을 선언하는 방법을 표준화합니다. 다음은 간단한 예입니다.

 

public class User {
    @NotNull
    @Email
    private String email;
 
    @NotNull
    @Size(min = 6, max = 15)
    private String password;
 
    // getters and setters
 
}

 

JSR 303 및 JSR 349 빈이 검증 API (버전 1.0는 각각 1.1)에 대한 규격을 정의하고, 절전 검사기 참조 구현이다. 다음 링크에서 JAR 파일을 다운로드하십시오.

 

Spring MVC 애플리케이션에서 Bean Validation API를 사용 하려면 validation-api-1.1.0.Final.jar 및 hibernate-validator-5.0.1.Final.jar 파일이 필요합니다.

 

Maven을 사용하고 있다면 pom.xml 파일에 다음 의존성을 추가 하십시오 :

  • 빈 검증 API 1.1 : 

 

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency

 

Hibernate Validator 5.0.1. 최종 : 

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.0.1.Final</version>
 </dependency>

 

2. Bean Validation API를위한 Spring MVC 지원

Spring MVC는 최소한의 설정만으로 Bean Validation을 완벽하게 지원한다. 위에서 언급 한 두 개의 jar 파일을 애플리케이션의 classpath에 놓고 Spring의 애플리케이션 컨텍스트 XML 파일에 다음 항목을 추가한다.

 

<mvc:annotation-driven />

 

Spring MVC는 유효성 검사 지원을 자동으로 감지하여 활성화합니다.

 

이제 컨트롤러 클래스에서 @Valid 주석 ( javax.validation.Valid )을 사용 하여 양식을 백업하는 모델 객체에 주석을 추가합니다 .

 

@Controller
public class LoginController {
 
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String doLogin(@Valid User user, BindingResult result) {
        // login logic here
    }
}

 

 

Spring MVC 는 Spring의 form 태그를 사용하는 JSP 폼의 입력으로 속성을 바인딩 한 후에 @Valid 주석으로 주석 처리 된 모델 객체의 유효성을 검사합니다 . 제약 조건 위반은 BindingResult 객체 에서 오류로 표시 되므로 컨트롤러 메서드에서 다음과 같이 위반 사항을 확인할 수 있습니다.

 

if (result.hasErrors()) {
 
    // form validation error
 
} else {
 
    // form input is ok
}

 

일반적으로 유효성 검사 오류가 발생하면 입력 양식을 다시 사용자에게 반환합니다. 그리고 JSP 형식에서 우리는 Spring의 form errors 태그를 사용하여 유효성 검증 오류 메시지를 다음과 같이 표시 할 수 있습니다.

 

<form:errors path="email" />

 

오류 메시지는 유효성 검사 주석에 지정할 수 있습니다. 예를 들면 다음과 같습니다.

 

@NotEmpty(message = "Please enter your email addresss.")
private String email;

 

메시지를 현지화하려면 다음 규칙에 따라 특성 파일에서 키를 지정하십시오.


 

ConstraintName.CommandName.propertyName=validation error message

 

예 :

 

NotEmpty.userForm.email=Please enter your e-mail.

 

이제 위에서 언급 한 스프링 MVC 애플리케이션에서 로그인 폼의 필드를 검증하기 위해 위의 원칙을 적용 해 보자.

 

3. 코딩 모델 클래스

다음과 같이 모델 클래스 ( User.java )를 코딩하십시오 .

package net.codejava.spring;
 
import javax.validation.constraints.Size;
 
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
 
/**
 *
 * @author www.codejava.net
 *
 */
public class User {
    @NotEmpty
    @Email
    private String email;
     
    @NotEmpty(message = "Please enter your password.")
    @Size(min = 6, max = 15, message = "Your password must between 6 and 15 characters")
    private String password;
 
    public String getEmail() {
        return email;
    }
 
    public void setEmail(String email) {
        this.email = email;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
}

 

 

보시다시피 여기에 사용 된 유효성 검사 제한 주석은 @NotEmpty , @Email 및 @Size 입니다.

 

이메일 입력란에 오류 메시지를 지정하지 않았습니다. 대신 유효성 검사 오류 메시지의 현지화를 보여주기 위해 이메일 필드에 대한 오류 메시지가 등록 정보 파일에 지정됩니다.

 


4. JSP 입력 폼 코딩하기

다음 내용으로 LoginForm.jsp 파일을 작성 하십시오.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
 
<!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>Login</title>
<style>
    .error {
        color: red; font-weight: bold;
    }
</style>
</head>
<body>
    <div align="center">
        <h2>Spring MVC Form Validation Demo - Login Form</h2>
        <table border="0" width="90%">
        <form:form action="login" commandName="userForm">
                <tr>
                    <td align="left" width="20%">Email: </td>
                    <td align="left" width="40%"><form:input path="email" size="30"/></td>
                    <td align="left"><form:errors path="email" cssClass="error"/></td>
                </tr>
                <tr>
                    <td>Password: </td>
                    <td><form:password path="password" size="30"/></td>
                    <td><form:errors path="password" cssClass="error"/></td>
                </tr>
                <tr>
                    <td></td>
                    <td align="center"><input type="submit" value="Login"/></td>
                    <td></td>
                </tr>
        </form:form>
        </table>
    </div>
</body>
</html>

 

5. 코딩 컨트롤러 클래스

다음과 같이 컨트롤러 클래스 ( LoginController.java )를 코딩하십시오 .

 

package net.codejava.spring;
 
import java.util.Map;
 
import javax.validation.Valid;
 
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
 
/**
 *
 * @author www.codejava.net
 *
 */
@Controller
public class LoginController {
    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String viewLogin(Map<String, Object> model) {
        User user = new User();
        model.put("userForm", user);
        return "LoginForm";
    }
 
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String doLogin(@Valid @ModelAttribute("userForm") User userForm,
            BindingResult result, Map<String, Object> model) {
 
        if (result.hasErrors()) {
            return "LoginForm";
        }
 
        return "LoginSuccess";
    }
}

 

6. JSP 결과 페이지 코딩

LoginSuccess.jsp의 페이지는 사용자가 유효한 이메일과 올바른 암호를 입력하는 경우에 표시됩니다. 코드는 다음과 같습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="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>Welcome</title>
</head>
<body>
    <div align="center">
        <h2>Welcome ${userForm.email}! You have logged in successfully.</h2>
    </div>
</body>
</html>

 

 


7. Spring MVC 애플리케이션 컨텍스트 설정하기

응용 프로그램 컨텍스트 파일 ( spring-mvc.xml ) 에서 Spring MVC를 다음과 같이 설정한다.

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd   
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
    <mvc:annotation-driven />
    <context:component-scan base-package="net.codejava.spring" />
 
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
 
 
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
 
        <property name="basename" value="/WEB-INF/messages" />
 
    </bean>
</beans>

 

8. 메시지 작성 .propreties 파일

전자 메일 필드에 대한 유효성 검사 오류 메시지를 현지화하므로 messages.properties 파일 에 다음 key = value 쌍을 입력 하십시오.

 

NotEmpty.userForm.email=Please enter your e-mail. 

Email.userForm.email=Your e-mail is incorrect.  

 

9. web.xml에서 Spring 프레임웍 설정하기

웹 전개 디스크립터 파일에서 Spring 디스패처 서블릿을 사용 가능하게 설정하십시오.

<?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>SpringMvcFormValidationExample</display-name>
 
    <servlet>
        <servlet-name>SpringController</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>SpringController</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

 

10. 프로젝트 구조 및 필수 JAR 파일 검토

위의 모든 소스 파일을 Eclipse IDE에서 구성하십시오.

 

 

스프링 MVC 폼 유효성 검사 프로젝트 구조

 

WEB-INF \ lib 디렉토리 아래에 필요한 JAR 파일 은 다음과 같습니다.

 

    • 동급생 -0.5.4.jar
    • commons-logging-1.1.1.jar
    • hibernate-validator-5.0.1.Final.jar
    • jboss-logging-3.1.0.GA.jar
    • spring-beans-3.2.4.RELEASE.jar
    • spring-context-3.2.4.RELEASE.jar
    • spring-core-3.2.4.RELEASE.jar
    • spring-expression-3.2.4.RELEASE.jar
    • spring-web-3.2.4.RELEASE.jar
    • spring-webmvc-3.2.4.RELEASE.jar
    • validation-api-1.1.0.Final.jar

Hibernate Validator JAR 파일은 Classmate와 JBoss logging JAR 파일에 의존하므로 여기 와 여기에서 다운로드 하십시오 .

 

11. 응용 프로그램 테스트

브라우저의 주소창에 다음 URL을 입력하십시오.

 

http : // localhost : 8080 / SpringMvcFormValidationExample / login

로그인 양식이 나타납니다.

 

 

스프링 MVC 폼 검증 테스트

 

유효하지 않은 이메일과 짧은 암호 (예 : 4 자)를 입력 한 다음 로그인을 클릭하십시오. 아래에 표시된 것처럼 폼의 오른쪽에 빨간색으로 표시된 유효성 검사 오류 메시지가 표시됩니다.

 

스프링 MVC 폼 유효성 확인 데모

 

이제 유효한 이메일과 유효한 비밀번호 (6 ~ 15 자)를 입력하고 Enter 키를 누르십시오. 로그인 성공 페이지가 나타납니다.

 

 

스프링 MVC 폼 유효성 검사 성공 페이지

 

관심이있을 수도 있습니다 :

 

 

첨부 파일 :
이 파일 다운로드 (SpringMvcFormValidationExample.war)SpringMvcFormValidationExample.war [배치 가능한 WAR 파일] 3994 kB
이 파일 다운로드 (SpringMvcFormValidationExample.zip)SpringMvcFormValidationExample.zip [이클립스 프로젝트] 3998 kB

 

 

 

 

 

 

 

 

 

 

 

 

spring

 

about author

PHRASE

Level 60  머나먼나라

경솔한 사람들 속에 있어도 아주 면밀(綿密)하고 잠자는 사람들 속에 있어도 홀로 깨어 있고 싶어하는 사람(현자)은 짐말(핫길말)의 무리를 앞지르는 준마(駿馬)와 같다. -법구경

댓글 ( 4)

댓글 남기기

작성