Bài 4: Hiển thị danh mục sản phẩm lên web

Ở những bài trước mình đã hướng dẫn các bạn những bài cơ bản khi xây dựng một ứng dụng web bằng Spring Framework như là cách kết nối với dữ liệu MySQL bằng Hibernate Framework, hay thiết kế giao diện cho web. Sau khi hoàn thành xong các bài trên, tiếp theo chúng ta bắt đầu làm đến phần hiển thị danh mục sản phẩm lên web.

Không biết các bạn còn nhớ không, ở bài số 2 hướng dẫn kết nối cơ sở dữ liệu MySQL bằng Hibernate Framework và Spring Framework mình đã hướng dẫn các bạn cách lấy dữ liệu, cụ thể là lấy toàn bộ danh mục sản phẩm. Vậy nếu chưa nhớ bạn có thể xem lại bài đấy hoặc đơn giản hơn là đọc lại đoạn mã này sẽ hình dung lại cách thức lấy dữ liệu thông qua Hibernate Framework.

Sau khi đã lấy được dữ liệu, chúng ta cần hiển thị lên trang JSP, vậy mình muốn danh mục hiển thị đồng thời khi người dùng truy cập vào web, như vậy ở controller xử lý chúng ta sẽ lấy danh sách danh mục và sau đó mới hiển thị xuống trang web.

Trong đó:

– @Controller dùng để khai báo lớp Controller

– @RequestMapping(value = “/home”) dùng để map tới các URL tương ứng

– @Autowired nó sẽ tự động liên kết các bean được sử dụng trong các class với các bean được Spring Container sinh ra và quản lý

Nhớ khai báo trong file cấu hình lớp CategoryDAO bạn vừa tạo trong dispatcher-servlet.xml:

Cuối cùng ở trang JSP bạn sẽ lấy danh sách từ Controller để hiển thị, như ở bài trước thiết kế thì phần hiển thị danh mục sản phẩm chúng ta thiết kế ở trang menu.jsp, vậy bạn sẽ chỉnh sửa ở đây để cho hiển thị được.

Download source code tại đây.

Download source code link 1:

Hiển thị danh mục sản phẩm lên web

Download source code link 2:

Hiển thị danh mục sản phẩm lên web

(Tác giả: Tùng Dương)

 

23 thoughts on “Bài 4: Hiển thị danh mục sản phẩm lên web

    1. Cái này là nó trả về 1 đối tượng category, để lấy được thuộc tính bạn chỉ cần chấm get thuộc tính thôi

  1. Chào ad ạ,Em có vài vấn đề về bài học Java spring
    Hiện tại em đang học tới bài 4,và tới phần lấy ra danh mục sản phẩm
    Nhưng kết quả không chạy được và kiểm tra html thì kết quả là : items=”[model.Category@61a595c8, model.Category@340dd090, model.Category@500eb6e5, model.Category@4c4cad13, model.Category@18a6a87, model.Category@5b59b376, model.Category@7ec59f66, model.Category@5c417a4]”
    Code của em làm y hệt ad ạ.Em cảm ơn ad đã đọc ạ,mong được ad giúp đỡ

    1. ý bạn là muốn lấy ra tên danh mục để hiển thị lên web hay sao, bạn có thể gọi thuộc tính get() thay vì trả về nguyên đối tượng

  2. Chào anh.
    Em đang học về spring mà có cái vấn đề chưa hiểu lắm em đã làm theo chương trình của anh từ bài 1 tới bài 4 rồi nhưng đến h em không run được nó cứ báo lỗi mà làm giống hết như anh đã làm từ bài 1 tới h ạ.
    C:\Users\ie117163\Documents\NetBeansProjects\Shop\build\web
    GlassFish Server 4.1.1, deploy, null, false
    C:\Users\ie117163\Documents\NetBeansProjects\Shop\nbproject\build-impl.xml:1076:

    Anh làm ơn chỉ giúp em với ạ
    Em cảm ơn anh ạ

    1. Chào bạn, thông tin bạn gặp lỗi đưa hơi ít nên khó biết, bạn xem thử chạy tomcat thay vì GlassFish xem có lỗi không?

      1. Dear anh,
        Vay cai loi nhu nay la nhu nao anh nhi

        exception

        org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.ExceptionInInitializerError
        root cause

        java.lang.ExceptionInInitializerError
        root cause

        org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
        root cause

        com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

        The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        root cause

        java.net.ConnectException: Connection refused: connect
        note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.

          1. Dear ad,
            Mình chạy trên máy local của mình luôn ạ.
            HIbernate mình confix như sau:

            org.hibernate.dialect.MySQLDialect
            com.mysql.jdbc.Driver
            jdbc:mysql://localhost:3306/webshop
            true
            UTF-8
            root

            thread
            update
            true
            true

            Ad chỉ giup vơi ạ

    1. bạn thêm đoạn mã ${item.categoryName} vào phàn menu hay sao, nếu chỉ hiên thị dk header hay slider thì bạn xem có thể đoạn menu của bạn bị lỗi, xem dữ liệu có hay khôg

  3. Chào ad ạ, mình có làm theo đúng như trong video nhưng đến đoạn lấy ra tên danh mục sản phẩm thì không hiển thị được. Đã thử cả “${item.categoryName()}” và “${item.getCategoryName()}” nhưng đều không được. Mong ad giúp đỡ với ạ

    1. Chào bạn, bạn có dùng JSTL không, nếu vậy bạn đã add thư viện vào, và import vào trong tập tin jsp chưa?

  4. Chào ad ạ, mình có làm theo đúng như trong video nhưng đến đoạn lấy ra tên danh mục sản phẩm thì không hiển thị được. Đã thử cả “${item.categoryName}” và “${item.getCategoryName()}” nhưng đều không được. Mong ad giúp đỡ với ạ

    1. Chào bạn, bạn có dùng JSTL không, nếu vậy bạn đã add thư viện vào, và import vào trong tập tin jsp chưa?

  5. ad cho em hỏi tại sao phải tạo thêm 1 lop CategoryService nữa ạ , e get thẳng như vậy vẫn được

    @Controller

    @RequestMapping(value = “/home”)
    public class HomepageController {
    @Autowired(required = true)
    CategoryDao categogyDao ;

    @RequestMapping(value = “/index”)
    public String index(ModelMap mm){
    mm.put(“listCategory”, categogyDao.getAllcategory());

    return “index”;

    }

Bình luận

Loading...