Tạo ứng dụng CRUD với grails (Phần 1)

Groovy trên Grails là WEB development framework MVC dựa trên ngôn ngữ Groovy. Groovy dựa trên Java, nó cũng chạy trên JVM - Java Virtual Machine.
Nó hỗ trợ nhiều cho developer java web. Giúp dev phát triển web một cách nhanh nhất có thể.
Trong bài viết này chúng ta sẽ cùng tìm hiểu về các tạo ứng dụng đơn giản có các thao tác CRUD với grails framework.

Bước 1: Cài đặt và tạo app

Cài đặt:
Download tại trang:
http://grails.org/download.html
Hướng dẫn cài đặt
http://docs.grails.org/latest/guide/gettingStarted.html

Tạo ứng dụng bằng cách mở cmd và chạy lệnh:

grails create-app contact-list

Một project được tạo tại thư mục đang làm việc như trong ảnh dưới đây:

Sau đó bạn có thể dùng intelij để import và mở project lên như hình dưới đây:

Lần đầu build khá là lâu, nhưng từ lần sau sẽ nhanh hơn nhiều. Grails dùng gradle để build app. ^^

Nhấn vào nút tam giác màu xanh phía trên bên phải của Intelij app của bạn sẽ được chạy và sẽ có log như thế này được in ra:

Grails application running at http://localhost:8080 in environment: development

Và trình duyệt mặc định sẽ được tự động mở ra như thế này:

Bước 2: Tạo domain, controller, view

Tạo domain

Tiếp theo tạo domain bằng lệnh dưới đây:

grails create-domain-class org.Contact

Link tham khảo
Kết quả sẽ ra như sau:

Thêm một ít thuộc tính

class Contact {
    String name
    String phoneNumber
}

Thêm contrains để thuộc tính not null

class Contact {
    String name
    String phoneNumber
    static constraints = {
        name nullable: false
        phoneNumber nullable: false
    }
}

Tạo controller

Bạn dùng lệnh sau để tạo controller

grails create-controller org.contact

Link tham khảo

Tạo các action cho controller
class ContactController {
    def index = {}
    def create = {}
    def save = {}
    def edit = {}
    def update = {}
    def show = {}
    def list = {}
    def delete = {}
}

Trong phần 2 chúng ta sẽ làm đủ các chức năng CRUD, còn hiện tại trong phần 1 này chúng ta sẽ dừng ở mức khởi tạo một vài giá trị ban đầu qua bootStrap và hiển thị list đó lên.

Do đó chúng ta sẽ implement ham list trước:

Hàm list

Contact.list() lấy tất cả các dữ liệu trong domail contact để hiện thị ngoài màn hình.

def list = {
    def contacts = Contact.list()
    [contacts: contacts]
}

Hàm index

Đây là main action của một controller, chúng ta sẽ chuyển hướng tới màn list để xem thông tin danh sách.

def list = {
    def contacts = Contact.list()
    [contacts: contacts]
}

tạo dữ liệu ban đầu cho ứng dụng

Bạn có thể vào grails-app/init/contact.list/BootStrap để tạo dữ liệu ban đầu cho ứng dụng.
Để ví dụ mình sẽ tạo một vài default contact như sau:

def init = { servletContext ->
    for (int i = 1; i <= 2; i++) {
        def newContact = new Contact(name: "contact_" + i, phoneNumber: "12345" + i)
        newContact.save()
    }
}

Tạo view

Bạn vào thư mục grails-app/views/contact/ tạo file list.gsp với nội dung như sau:
Nhìn vào code bạn sẽ thấy khá dễ hiểu mặc dù bạn chưa quen với gsp. ^^

<html>
    <head>
        <title>List contacts</title>
    </head>
    <body>
        <h1>List contacts</h1>
        <g:each in="${contacts}" var="contact">
            Name: ${contact.name}<br />
            Phone Number: ${contact.phoneNumber}<br />
            <g:link action="edit" 
               id="${contact.id}">Edit</g:link><br />
            <g:link action="delete" 
               id="${contact.id}">Delete</g:link><br /><br />
        </g:each>
        <g:link action="create">Create new contact</g:link>
    </body>
</html>

Grails run-app

Và bây giờ để chạy app grails, bạn chạy câu lệnh

grais run-app

(hoặc ấn nút run app hình tam giác màu xanh là cây) và chúng ta chờ kết quả hiện ra màn hình localhost: http://localhost:8080/
Nhập đường dẫn: "http://localhost:8080/contact/list" hoặc click vào link trên màn hình localhost ta sẽ vào màn hình "List contacts"

Kết quả sẽ hiển thị ra như sau:

Kết luận

Như bạn thấy, chỉ bằng vài thao tác đơn giản, bạn đã tạo được ứng dụng đầu tiên với grails.
Trong phần tiếp theo chúng ta sẽ implement các hàm còn lại để bạn làm quen hơn nữa với việc thao tác với grails bạn nhé.

Tham khảo