Spring MVC Form Regular Expression Validation

In this example, we can validate user input of the particular regular expressions using this @Pattern annotation and pass some required regular expression values to the regexp attribute.  

Development Process:
   1. Keep eclipse IDE ready
   2. Project Structure
   3. Add the jar file
   4. Configure Spring DispacherServlet
   5. Add configuration to file
   6. Create Bean Class
   7. Create View Page
   8. Create Controller Class
   9. Run the App

1. Keep eclipse IDE ready
2. Project Structure

3. Add the jar file

4. Configure Spring DispacherServlet 
web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4.xsd" id="WebApp_ID" version="4.0">

<display-name>spring-mvc-regular-expression-validation-demo</display-name>
<absolute-ordering />

<!-- Spring MVC Configs -->
<!--  Configure Spring MVC Dispatcher Servlet -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Set up URL mapping for Spring MVC Dispatcher Servlet -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

→ The file is created in the WEB-INF directory in the application(spring_mvc_regular_expression_validation_demo)

5. Add configuration to file
dispatcher-servlet.xml:

<?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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">


<!-- Add support for component scanning -->
<context:component-scan base-package="com.poc" />

<!-- Add support for conversion, formatting and validation support -->
<mvc:annotation-driven/>

<!-- Define Spring MVC view resolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

6. Create Bean Class
User.java:

package com.poc.controller.bean;

import javax.validation.constraints.Pattern;

public class User {

private String firstName;
private String lastName;
@Pattern(regexp = "^[0-9A-Z@#$&%*]+$", message = "This accepts 1 range or more than 1 range")
private String password;

public User() {

}

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}


public String getLastName() {

return lastName;

}


public void setLastName(String lastName) {

this.lastName = lastName;

}


public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

   }
}

→ Add validation rule in this bean we are using @Pattern(regexp = “^[1-9a-z]+$”, message = “This accepts 1 range or more than 1 range”) is validating field matches with this expression if failed then the message is shown.

7. Create View Page
home.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE html>
<html>
<head>
<body>
<a href="http://localhost:8080/spring_mvc_regular_expression_validation_demo/user/showForm">Click For User Form</a>
</body>
</html>

user-form.jsp:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<!DOCTYPE html>
<html>
<head>
<title>User Registration Form</title>
<style>
.error {color:red}
</style>
</head>
<body>
<form:form action="processForm" modelAttribute="user">
First name: <form:input path="firstName" />
<br>
<br>
Last name: <form:input path="lastName" />
<br>
<br>
Password (*): <form:password path="password" />
<form:errors path="password" cssClass="error" />
<br>
<br>
<input type="submit" value="Submit" />
</form:form>
</body>
</html>

→ <form:errors path=”password” cssClass=”error” />is displaying a message when the password field is failed to validate the specific pattern of the rule.
user-detail.jsp:

<!DOCTYPE html>
<html>
<head>
<title>User Detail</title>
</head>
<body>User Name: ${user.firstName} ${user.lastName} <br>
Password:${user.password}
</body>
</html>

8. Create Controller Class
HomeController.java:

package com.poc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {

@RequestMapping("/")
public String showPage() {

return "home";
   }
 }

UserController.java:

package com.poc.controller;

import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import com.poc.controller.bean.User;

@Controller
@RequestMapping("/user")
public class UserController{


@RequestMapping("/showForm")
public String showForm(Model theModel) {

// create a User object
User user=new User();

theModel.addAttribute("user",user);

return "user-form";

}


@RequestMapping("/processForm")
public String processForm(@ModelAttribute("user") @Valid User user,BindingResult bindingResult){

if (bindingResult.hasErrors()) {
return "user-form";
}
else {
return "user-detail";
          }
        }
     }

→ @Valid is performing validation rules on the User object.
→ The Outcome of the validation is placed on the BindingResult Interface.

9. Run the App

spring_mvc_form_regular_expression_validation
spring_mvc_form_regular_expression_validation
spring_mvc_form_regular_expression_validation

Conclusion:
This example is explained How to use regular expression validation? How to put in the validation rules to Bean class? How to use <form:errors/> tag?

Leave a Comment