1. Phân tích chức năng
Trang chủ hiển thị
- các sản phẩm nổi bật
- các sản phẩm mới
- danh mục các sản phẩm
để người dùng tiện theo dõi.
Thư viện JSTL: Link tải
2. Thực thi
B1: Tạo servlet HomeServlet kế thừa lớp BaseServlet đóng vai trò controller cho trang chủ
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import binh.dev.data.dao.DatabaseDao;
import binh.dev.data.dao.ProductDao;
import binh.dev.data.model.Category;
import binh.dev.data.model.Product;
import binh.dev.util.Constants;
public class HomeServlet extends BaseServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
super.doGet(request, response);
ProductDao productDao = DatabaseDao.getInstance().getProductDao();
List<Product> productList = productDao.hot(Constants.VIEW_LIMIT);
List<Product> hotProductList = productDao.hot(Constants.VIEW_NUMBER);
List<Category> hotcategoryList = DatabaseDao.getInstance().getCategoryDao().hotCategory();
request.setAttribute("productList", productList);
request.setAttribute("hotProductList", hotProductList);
request.setAttribute("hotcategoryList", hotcategoryList);
request.getRequestDispatcher("home.jsp").include(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.print("Method POST");
HomeServlet có 2 phương thức doGet và doPost có vai trò xử lý 2 phương thức GET và POST của http
Với phương thức doGet sẽ sử dụng hàm getRequestDispatch nhúng giao diện ở thư mục view với mục đích hiển thị nội dung.
Để đổ dữ liệu từ database chúng ta cần lấy dữ liệu từ model ở mục controller này
B2: Tạo tập tin home.jsp để đổ dữ liệu ra giao diện ở mục view/home.jsp
Sử dụng thư viện JSTL để ứng dụng Template Engine. Ở đây dùng tag c:forEach để đổ dữ liệu từ một List Category ra view HTML
<!-- top Featured Categories -->
<c:forEach items="${hotcategoryList}" var="category">
<div class="Featured-categories">
<a href="CategoryServlet?categoryId=${category.id}">
<img src="${category.thumbnail}" alt="" class="Featured-categories-img">
<ul class="Featured-categories-list">
<li class="Featured-categories-item ">
<a href="CategoryServlet?categoryId=${category.id}" class="Featured-categories-link Featured-categories-link-first">${category.name}</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Radar Detectors (2)</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Car Electrical Appliances (4)</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Car Camera (4)</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Audio (2)</a>
<li class="Featured-categories-item">
class="Featured-categories-link Featured-categories-link-last">ViewAll</a>
2.1. Hiển thị danh sách sản phẩm bán chạy
B1: Ở tập tin HomeServlet phương thức doGet chúng ta cần lấy dữ liệu từ database các sản phẩm bán chạy nhất
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
super.doGet(request, response);
ProductDao productDao = DatabaseDao.getInstance().getProductDao();
List<Product> hotProductList = productDao.hot(Constants.VIEW_NUMBER);
request.setAttribute("hotProductList", hotProductList);
B2: Đổ dữ liệu ra giao diện home.jsp
<c:forEach items="${hotProductList}" var="product">
<div class="product-item">
<div class="product-image-wrap">
<a href="ProductDetailServlet?productId=${product.id}" class="product-image-wrap-link">
<img src="${product.thumbnail}" alt="" class="product-image">
<ul class="product-icon">
<li> <a href=""><i class="fa-regular fa-eye"></i></a></li>
<li> <a href=""><i class="fa-solid fa-cart-shopping"></i></a></li>
<li> <a href=""><i class="fa-solid fa-arrows-rotate"></i></a></li>
<li> <a href=""><i class="fa-regular fa-heart"></i></a></li>
<form class="product-footer" action="CartServlet" method="post">
<input type="hidden" name="action" value="create"/>
<input type="hidden" name="quantity" value="1" min="1" />
<input type="hidden" name="productId" value="${product.id}"/>
<input type="hidden" name="productPrice" value="${product.price}"/>
<span class="product-short-desc">${product.description}</span>
<h1 class="product-title">${product.name}</h1>
<div class="product-price">
<span class="product-price-1">
<fmt:setLocale value = "en_US"/>
<fmt:formatNumber type="currency" value = "${product.price}" />
<button type="submit" class="_btn _btn-product">Add to cart</button>
2.2. Hiển thị danh sách sản phẩm mới nhất
B1: Ở tập tin HomeServlet phương thức doGet chúng ta cần lấy dữ liệu từ database các sản phẩm mới nhất
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
super.doGet(request, response);
ProductDao productDao = DatabaseDao.getInstance().getProductDao();
List<Product> newProductList = productDao.news(Constants.VIEW_NUMBER);
request.setAttribute("newProductList", newProductList);
request.getRequestDispatcher("home.jsp").include(request, response);
B2: Đổ dữ liệu ra giao diện home.jsp
<c:forEach items="${newProductList}" var="product">
<div class="product-item">
<div class="product-image-wrap">
<a href="ProductDetailServlet?productId=${product.id}" class="product-image-wrap-link">
<img src="${product.thumbnail}" alt="" class="product-image">
<ul class="product-icon">
<li> <a href=""><i class="fa-regular fa-eye"></i></a></li>
<li> <a href=""><i class="fa-solid fa-cart-shopping"></i></a></li>
<li> <a href=""><i class="fa-solid fa-arrows-rotate"></i></a></li>
<li> <a href=""><i class="fa-regular fa-heart"></i></a></li>
<form class="product-footer" action="CartServlet" method="post">
<input type="hidden" name="action" value="create"/>
<input type="hidden" name="quantity" value="1" min="1" />
<input type="hidden" name="productId" value="${product.id}"/>
<input type="hidden" name="productPrice" value="${product.price}"/>
<span class="product-short-desc">${product.description}</span>
<h1 class="product-title">${product.name}</h1>
<div class="product-price">
<span class="product-price-1">
<fmt:setLocale value = "en_US"/>
<fmt:formatNumber type="currency" value = "${product.price}" />
<button type="submit" class="_btn _btn-product">Add to cart</button>
2.3. Hiển thị danh sách danh mục
B1: Ở tập tin HomeServlet phương thức doGet chúng ta cần lấy dữ liệu từ database các danh mục
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
super.doGet(request, response);
ProductDao productDao = DatabaseDao.getInstance().getProductDao();
List<Category> hotcategoryList = DatabaseDao.getInstance().getCategoryDao().hotCategory();
request.setAttribute("hotcategoryList", hotcategoryList);
request.getRequestDispatcher("home.jsp").include(request, response);
B2: Đổ dữ liệu ra giao diện home.jsp
<c:forEach items="${hotcategoryList}" var="category">
<div class="Featured-categories">
<a href="CategoryServlet?categoryId=${category.id}">
<img src="${category.thumbnail}" alt="" class="Featured-categories-img">
<ul class="Featured-categories-list">
<li class="Featured-categories-item ">
<a href="CategoryServlet?categoryId=${category.id}" class="Featured-categories-link Featured-categories-link-first">${category.name}</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Radar Detectors (2)</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Car Electrical Appliances (4)</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Car Camera (4)</a>
<li class="Featured-categories-item">
<a href="" class="Featured-categories-link">Audio (2)</a>
<li class="Featured-categories-item">
class="Featured-categories-link Featured-categories-link-last">ViewAll</a>
0 Nhận xét