使用Servlet技术设计电子商务网站的核心组件: 1)商品浏览页面:采用静态页面,如图示。 2)后台处理页面:当在商品列表页面点击某商品下方的购买按钮时,提交请求给后台Servlet,实现请求处理,并显示购物车内容,效果如图示:Java代码
时间: 2024-06-10 16:05:20 浏览: 44
可以使用以下代码实现Servlet:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ShoppingCartServlet extends HttpServlet {
private Map<String, Integer> cart = new HashMap<String, Integer>();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if (action == null) {
showCart(request, response);
} else if (action.equals("add")) {
addItem(request, response);
} else if (action.equals("remove")) {
removeItem(request, response);
} else {
showCart(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
private void showCart(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>Shopping Cart</title></head>");
out.println("<body>");
out.println("<h1>Shopping Cart</h1>");
if (cart.isEmpty()) {
out.println("<p>Your shopping cart is empty.</p>");
} else {
out.println("<table border=\"1\">");
out.println("<tr><th>Item</th><th>Quantity</th></tr>");
for (Map.Entry<String, Integer> entry : cart.entrySet()) {
out.println("<tr>");
out.println("<td>" + entry.getKey() + "</td>");
out.println("<td>" + entry.getValue() + "</td>");
out.println("</tr>");
}
out.println("</table>");
}
out.println("<p><a href=\"products.html\">Continue Shopping</a></p>");
out.println("</body>");
out.println("</html>");
}
private void addItem(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String item = request.getParameter("item");
if (item == null) {
response.sendRedirect("products.html");
return;
}
Integer quantity = cart.get(item);
if (quantity == null) {
quantity = 0;
}
cart.put(item, quantity + 1);
showCart(request, response);
}
private void removeItem(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String item = request.getParameter("item");
if (item == null) {
response.sendRedirect("shoppingCart");
return;
}
Integer quantity = cart.get(item);
if (quantity != null) {
if (quantity > 1) {
cart.put(item, quantity - 1);
} else {
cart.remove(item);
}
}
showCart(request, response);
}
}
在代码中,我们创建了一个名为ShoppingCartServlet的类,并继承了HttpServlet。在doGet方法中根据参数action的值分别执行不同的操作,如展示购物车、添加商品、删除商品等。在 doPost 方法中间接调用 doGet 方法实现相同的功能。
当需要展示购物车时,我们使用 HTML 标记语言构建静态页面并将购物车中的内容展示在页面上。在购物车中,我们使用了 Java 中的 Map 来存储商品名称和数量的键值对。具体来说,我们使用 HashMap 来实现这一功能,使用 put 方法向 Map 中添加商品数量,使用 get 方法获取指定商品的数量。在展示购物车的方法中,我们遍历 Map 中的所有键值对,将其添加到表格中,同时添加了一个“Continue Shopping”的链接,可以返回商品列表页面。
当用户点击商品列表页面中的“Add to Cart”按钮时,我们在Servlet中通过调用 addItem 方法将商品添加到购物车中。在 addItem 方法中,我们首先获取请求中的“item”参数,判断是否为空,如果为空,则重定向到商品列表页面,否则获取购物车中该商品的数量并加一,最后添加到购物车中并展示购物车页面。
当用户点击购物车中某个商品下方的“-”按钮时,我们在Servlet中通过调用 removeItem 方法将该商品数量减少一。具体来说,我们通过获取请求中的“item”参数,判断是否为空,如果为空,则重定向到购物车页面,否则将购物车中该商品的数量减一,最后展示购物车页面。如果商品数量减少后为零,则从购物车中删除该商品。
以上是实现Servlet技术设计电子商务网站的核心组件之一——购物车的代码示例。在实践中,我们还需要编写商品列表页面、商品详情页面等相关组件来构建完整的电子商务网站。
阅读全文