通过jsp 模拟三个商店(即3个页面,供应不同的商品),应用session对象存储用户的用户名、密码和购物信息,当用户购物结束时,向用户返回其购物信息。
时间: 2023-05-24 19:01:16 浏览: 141
可以使用以下代码来实现(假设三个商店的地址分别是 shop1.jsp、shop2.jsp、shop3.jsp):
在登录页面(login.jsp)中,用户输入用户名和密码后,提交表单到 loginServlet,loginServlet 验证用户名和密码后,如果正确,则将用户名和密码存储在 session 中,并重定向到商店页面之一:
```java
// loginServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (checkUsernameAndPassword(username, password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("password", password);
response.sendRedirect("shop1.jsp");
} else {
// 登录失败处理
}
}
```
在商店页面中,通过 session 获取用户名和密码,显示商品列表和购物车:
```java
// shop1.jsp
<%
String username = (String) session.getAttribute("username");
String password = (String) session.getAttribute("password");
List<String> cart = (List<String>) session.getAttribute("cart");
if (cart == null) {
cart = new ArrayList<>();
session.setAttribute("cart", cart);
}
%>
<h1>Welcome to Shop 1, <%= username %>!</h1>
<h2>Product List</h2>
<ul>
<li>Product 1 <a href="addToCart.jsp?product=product1">Add to cart</a></li>
<li>Product 2 <a href="addToCart.jsp?product=product2">Add to cart</a></li>
<li>Product 3 <a href="addToCart.jsp?product=product3">Add to cart</a></li>
</ul>
<h2>Shopping Cart</h2>
<%
for (String product : cart) {
out.println(product + "<br>");
}
%>
```
在 addToCart.jsp 中,根据参数添加商品到购物车中:
```java
// addToCart.jsp
<%
String product = request.getParameter("product");
List<String> cart = (List<String>) session.getAttribute("cart");
cart.add(product);
response.sendRedirect(request.getHeader("Referer")); // 重定向回上一页
%>
```
在 checkOut.jsp 中,显示购物信息并清空购物车:
```java
// checkOut.jsp
<%
List<String> cart = (List<String>) session.getAttribute("cart");
out.println("<h1>Your shopping info</h1>");
for (String product : cart) {
out.println(product + "<br>");
}
cart.clear();
%>
```