Hi, I like simple things.
dangfsix / bookshopweb Goto Github PK
View Code? Open in Web Editor NEWJava Servlet/JSP project for a book store website
License: Apache License 2.0
Java Servlet/JSP project for a book store website
License: Apache License 2.0
/order
orderView.jsp
) dựa trên giao diện interface/order.html
và các file JSP tương tự (xem mẫu homeView.jsp
)OrderServlet
trong package servlet.client
để forward path "/order"
(khai báo trong @WebServlet
) đến orderView.jsp
(hàm doGet
)orders.id
)orders.createdAt
)orders
và order_item
)order_item.discount = 0
thì cộng dồn theo công thức order_item.price * order_item.quantity
, nếu order_item.discount khác 0
thì cộng dồn theo công thức (order_item.price * (100 - order_item.discount) / 100) * order_item.quantity
(làm tròn thành số nguyên). Về phía JSP, cần format giá tiền bằng thẻ fmt:formatNumber
, tham khảo productView.jsp
.orders.status
= 1 thì hiển thị tag "Đang giao hàng", = 2 là tag "Giao hàng thành công", = 3 là tag "Hủy đơn hàng". Mỗi tag có màu sắc riêng như giao diện đã thể hiện./orderDetail?id={orderId}
.CategoryServlet
), 3 đơn hàng/1 trang./user
userView.jsp
) dựa trên giao diện interface/user.html
và các file JSP tương tự (xem mẫu homeView.jsp
)UserServlet
trong package servlet.client
để forward path "/user"
(khai báo trong @WebServlet
) đến userView.jsp
(hàm doGet
)currentUser
trong session (luôn có khi đã đăng nhập), xem lại Bài 4: Khởi tạo Trang đăng nhập./setting
settingView.jsp
) dựa trên giao diện interface/setting.html
và các file JSP tương tự (xem mẫu homeView.jsp
)SettingServlet
trong package servlet.client
để forward path "/setting"
(khai báo trong @WebServlet
) đến settingView.jsp
(hàm doGet
)currentUser
trong session vào trong các ô input (Tên đăng nhập, Họ tên, Email, Số điện thoại, Địa chỉ), nút radio (Nam/Nữ).product.html
product.html
trong thư mục interface
dựa trên Trang mẫu prototype.html
(đã có sẵn header, navbar, footer)cart.html
cart.html
trong thư mục interface
dựa trên Trang mẫu prototype.html
(đã có sẵn header, navbar, footer)user.html
user.html
trong thư mục interface
dựa trên Trang mẫu prototype.html
(đã có sẵn header, navbar, footer)signup.html
signup.html
trong thư mục interface
dựa trên Trang mẫu prototype.html
(đã có sẵn header, navbar, footer)category.html
category.html
trong thư mục interface
dựa trên Trang mẫu prototype.html
(đã có sẵn header, navbar, footer)/signup
/signin
💡 Có thể thử với username user1
và password 123
.
/signout
/
createdAt
), chiều giảm dần (DESC
), có liên kết đến từng sản phẩm./category?id={id}
totalBuy
), Mới nhất (createdAt
), Giá thấp nhất (price
)./product?id={id}
/cart
/admin
/admin/userManager
/admin/userManager/detail?id={id}
/admin/userManager/create
/admin/userManager/update?id={id}
/admin/userManager/delete?id={id}
/admin/categoryManager
/admin/categoryManager/detail?id={id}
/admin/categoryManager/create
/var/webapp/images
/admin/categoryManager/update?id={id}
/admin/categoryManager/delete?id={id}
/admin/productManager
/admin/productManager/detail?id={id}
/admin/productManager/create
/var/webapp/images
/admin/productManager/update?id={id}
/admin/productManager/delete?id={id}
/admin/reviewManager
/admin/reviewManager/detail?id={id}
/admin/reviewManager/update?id={id}
/admin/orderManager
/admin/orderManager/detail?id={id}
/admin/orderManager/update?id={id}
/admin/signin
/admin/signout
/admin/*
/admin/*
sẽ bị redirect về /admin/signin
./admin/*
sau khi đã đăng nhập (từ trang đăng nhập của phía Client lẫn Admin)./admin/*
như /admin/userManager
và các trang con, cố tình truy cập sẽ được redirect về /admin/401
./admin/*
./search?q={query}
/editProductReview?id={id}
/wishlist (PUT)
user
product_review
@Nullable
cho các thuộc tính có khả năng null của các bean./WEB-INF
(tuyệt đối) thay vì WEB-INF
(tương đối) trong các lệnh forward (sơ suất).TextUtils.toParagraph
)280px.png
_navPanel.jsp
để tránh lặp code./wishlist
wishlistView.jsp
) dựa trên giao diện interface/wishlist.html
và các file JSP tương tự (xem mẫu homeView.jsp
)WishlistServlet
trong package servlet.client
để forward path "/wishlist"
(khai báo trong @WebServlet
) đến wishlistView.jsp
(hàm doGet
)WishlistItem
(theo bảng wishlist_item
của sơ đồ CSDL), WishlistItemDAO
, WishlistItemService
(tham khảo các DAO, service cơ bản như CategoryDAO, CategoryService)getByUserId
trả về List<WishlistItem>
trong WishlistItemDAO
, WishlistItemService
doGet
, lấy danh sách WishlistItem bằng getByUserId
của WishlistItemService
(userId
lấy từ currentUser
trong session). Duyệt qua list này, lấy thông tin từng product theo productId bằng hàm getById
của ProductService
. Dùng thông tin product gom lại thành một danh sách (products) gửi cho JSP để hiển thị theo template.user4
, user5
mới có các sản phẩm yêu thích (xem bảng wishlist_item
)./changePassword
changePasswordView.jsp
) dựa trên giao diện interface/changePassword.html
và các file JSP tương tự (xem mẫu homeView.jsp
)ChangePasswordServlet
trong package servlet.client
để forward path "/changePassword"
(khai báo trong @WebServlet
) đến changePasswordView.jsp
(hàm doGet
)prototype.html
và Trang chủ (Home) home.html
interface
Project BookShopWeb (Web Bán Sách) dự kiến sẽ có các trang chức năng và template tương ứng như sau:
/
/signin
/signup
/category
/product
/cart
/user
/order
/orderDetail
/wishlist
/setting
/changePassword
/admin/signin
/admin
/admin/userManager
/admin/categoryManager
/admin/productManager
/admin/cartManager
/admin/orderManager
/orderDetail?id={id}
orderDetailView.jsp
) dựa trên giao diện interface/orderDetail.html
và các file JSP tương tự (xem mẫu homeView.jsp
)OrderDetailServlet
trong package servlet.client
để forward path "/orderDetail"
(khai báo trong @WebServlet
) đến orderDetailView.jsp
(hàm doGet
)id
lấy từ đường dẫn URL, mỗi lần truy cập /orderDetail?id={id}
thì sẽ hiện thông tin một đơn hàng với id bất kỳ. Nếu đơn hàng với id đó có tồn tại thì hiển thị nội dung, không thì redirect về Trang chủ. Tham khảo servlet của các trang cũng sử dụng id như Trang thể loại, Trang sản phẩm.currentUser
trong sessionorder.deliveryMethod
= 1 thì hiện "Giao tiêu chuẩn", nếu = 2 thì hiện "Giao nhanh"3
(sửa trong database, viết hàm updateStatus trong OrderService). Có thể triển khai trong hàm doPost
của OrderDetailServlet
.signin.html
signin.html
trong thư mục interface
dựa trên Trang mẫu prototype.html
(đã có sẵn header, navbar, footer)A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.