[Thực hành] Ứng dụng kiểm tra email hợp lệ sử dụng Maven

2. Spring MVC

Mục tiêu

Luyện tập sử dụng Controller trong Spring MVC.

Điều kiện

Biết cách sử dụng Controller trong Spring MVC.

Mô tả

Trong phần này, chúng ta sẽ xây dựng một ứng dụng cho phép kiểm tra tính hợp lệ của một email.

Ứng dụng cho phép người dùng nhập vào một email, nhấn nút kiểm tra và sẽ hiển thị thông báo kết quả.

Một email hợp lệ phải đạt những yêu cầu sau:

  • Bắt đầu bằng một ký tự
  • Không chứa các ký tự đặc biệt
  • Có một ký tự @ ngăn cách tên email và domain
  • Domain phải hợp lệ

Hướng dẫn

Bước 1: Tạo maven project

Click File->New -> Project->Maven

Nhập các thông số theo mẫu:

Xác nhận lại thông tin:

Đặt tên project:

Click Finish sẽ được project theo cấu trúc như sau:

Chú ý: Nếu folder java chưa tồn tại thì tự tạo trong folder main một folder là java và refresh lại project.

Bước 2: xây dựng một ứng dụng cho phép kiểm tra tính hợp lệ của một email

1. Cấu hình thư viện

pom.xml

Khai báo 2 thư viện cần thiết cho ứng dụng là spring-webmvc và servlet-api trong thẻ <dependencies></dependencies>

<!– https://mvnrepository.com/artifact/org.springframework/spring-webmvc –>

<dependency>

 <groupId>org.springframework</groupId>

 <artifactId>spring-webmvc</artifactId>

 <version>4.3.16.RELEASE</version>

</dependency>

<!– Servlet –>

<dependency>

 <groupId>javax.servlet</groupId>

 <artifactId>servlet-api</artifactId>

 <version>2.5</version>

 <scope>provided</scope>

</dependency>

Khi lưu file hoặc chọn click chuột phải vào project->maven-> Download sources thì maven sẽ tự động download 2 thư viện(jar file) về cho ứng dụng.

Alt+F5 hoặc chọn như bên dưới để update maven cho project

Chọn Reimport hoặc Download sources

2. Cấu hình xml file

    Mở file web.xml khai báo cấu hình servlet trong thẻ web-app theo nội dung như bên dưới:

Cấu hình này có tác dụng khai báo DispatcherServlet thực hiện tìm kiếm file class chứa action được gọi.

web.xml

<servlet>

<servlet-name>spring</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!– Thực hiện khai báo vị trí chứa các file configs–>

<init-param>

  <param-name>contextConfigLocation</param-name>

  <param-value>/WEB-INF/configs/*.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>spring</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

Tạo thư mục configs, trong thư mục configs tạo file spring-config-mvc

Khai báo package cần scan và viewResolver.

spring-config-mvc.xml

<!– Spring MVC Annotation –>

<context:annotation-config />

<mvc:annotation-driven/>

<!–Controller –>

<context:component-scan base-package=”controller”/>

<!–View –>

<bean id=”viewResolver”

   p:prefix=”/WEB-INF/views/” p:suffix=”.jsp”

   class=”org.springframework.web.servlet.view.InternalResourceViewResolver”/>

3. controller

    Trong package controller tạo controller class HomeController.

Mở file HomeController và bắt đầu viết xử lý validate email.

Trước hết chúng ta có Email Regular Expression Pattern như sau:

^[A-Za-z0-9]+[A-Za-z0-9]*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)$;

Mô tả

Ký hiệuMô tả
^Bắt đầu chuỗi String hoặc một dòng
[A-Za-z0-9]+Email address phải bắt đầu với “[A-Za-z0-9]+” và có ít nhất một ký tự
[A-Za-z0-9]*@tùy chọn theo “[A-Za-z0-9]”, và kết thúc bằng một ký hiệu “@”
[A-Za-z0-9]Domain phải sau @ và ký tự phải nằm trong [A-Za-z0-9]
\\.[A-Za-z0-9]Sau domain là phần mở rộng của domain sau dấu chấm, ví dụ: (.com, .net, .org)
$Kết thúc chuỗi String hoặc kết thúc dòng

Ở đây ta tạo một biến static String EMAIL_REGEX chứa định dạng regular expression của email. Sau đó tạo một phương thức validate để kiểm tra email cần kiểm tra có hợp lệ với EMAIL_REGEX đã định nghĩa hay không.

@Controller

public class HomeController {

 private static Pattern pattern;

 private Matcher matcher;

 // Khai báo Regex

 private static final String EMAIL_REGEX = “^[A-Za-z0-9]+[A-Za-z0-9]*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)$”;

 public HomeController() {

    pattern = Pattern.compile(EMAIL_REGEX);

 }

 @RequestMapping(value = “/”, method = RequestMethod.GET)

 public String home(Locale locale, Model model) {

    return “home”;

 }

 @RequestMapping(value = “/validate”, method = RequestMethod.POST)

 public String user(@RequestParam(“email”) String email, ModelMap model) {

    boolean isvalid = this.validate(email);

    if (!isvalid) {

       model.addAttribute(“message”, “Email is invalid”);

       return “home”;

    }

    model.addAttribute(“email”, email);

    return “success”;

 }

 private boolean validate(String regex) {

    matcher = pattern.matcher(regex);

    return matcher.matches();

 }

}

5. Thêm JSP views file

Mở thư mục src/main/webapp

Tạo trang home.jsp

<h1>Email Validate</h1>

<h3 style=color:red>${message}</h3>

<form action=“validate” method=“post”>

 <input type=“text” name=“email”><br>

 <input type=“submit” value=“Validate”>

</form>

Tạo trạng success.jsp hiển thị thông báo khi email là hợp lệ

<h3>Hi ${email}</h3>

6. Chạy chương trình và kiểm tra kết quả

Trên thanh menu chọn Run-> Edit configurations

Chọn Tomcat Server và trỏ đến đường dẫn chứa tomcat

Sau đó click icon như hình bên dưới

Trang sau khi chạy cho kết quả như sau:

Nhập vào email hợp lệ sau đó ấn Validate

Kết quả: Email hợp lệ và chuyển đến trang success.jsp

TH với email không hợp lệ ví dụ @gmail.com và ấn Validate

Kết quả: Thông báo message lỗi

Tham khảo tại đây: https://github.com/codegym-vn/java-spring-email-validate

Leave a Reply

Your email address will not be published. Required fields are marked *