21晚上之前,需要按照图中要求完成一系列代码编写和运行

21晚上之前,需要按照图中要求完成一系列代码编写和运行

img

img

img


文档
https://pan.baidu.com/s/1We8GYsSYGBVQQGtdMFcXuQ?pwd=2001

麻烦提供一下文字版本,或者PDF文档

以下答案基于ChatGPT与GISer Liu编写:
1.购物车的类PurchaseServlet设计

①首先,我们需要明确PurchaseServlet的功能是什么。在书籍列表中,用户可以选择要购买的书籍,然后将所选的书籍添加到购物车中。购物车应该是与用户相关联的,并且应该在整个会话过程中保留。
②接下来,我们可以根据上述要求,设计PurchaseServlet的代码实现:

@WebServlet(name="PurchaseServlet", urlPatterns={"/purchase"})
public class PurchaseServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 从请求参数中获取要购买的书籍的ID
        String bookId = request.getParameter("id");
        
        // 根据ID从BookDB中获取要购买的书籍
        Book book = BookDB.getBook(bookId);
        
        // 获取用户的购物车,如果不存在,则创建一个新的购物车
        HttpSession session = request.getSession(true);
        List<Book> cart = (List<Book>)session.getAttribute("cart");
        if (cart == null) {
            cart = new ArrayList<Book>();
            session.setAttribute("cart", cart);
        }
        
        // 将要购买的书籍添加到购物车中
        cart.add(book);
        
        // 将Session的ID保存到cookie中
        Cookie cookie = new Cookie("JSESSIONID", session.getId());
        cookie.setMaxAge(30 * 60); // 单位是秒
        response.addCookie(cookie);
        
        // 重定向到BookServlet
        response.sendRedirect(request.getContextPath() + "/book?id=" + bookId);
    }
}

在这个实现中,我们首先从请求参数中获取要购买的书籍的ID,然后使用这个ID从BookDB中获取要购买的书籍。接下来,我们获取用户的购物车,如果不存在,则创建一个新的购物车。然后将要购买的书籍添加到购物车中。最后,我们将Session的ID保存到cookie中,并将请求重定向到BookServlet。

2.用户信息录入功能实现
①接下来,我们来实现用户信息录入功能。首先,我们需要定义一个User类,该类具有一些属性,如姓名、性别、年龄等。我们还需要提供setter和getter方法来设置和获取这些属性。以下是User类的代码实现:

public class User {
    private String name;
    private String gender;
    private int age;
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getGender() {
        return gender;
    }
    
    public void setGender(String gender) {
        this.gender = gender;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
}

3.用户登入功能实现

①在web项目中创建一个名为 "LoginServlet" 的 Java 类,并让其继承 HttpServlet 类。
②在 LoginServlet 类中重写 doGet 方法,用于处理 GET 请求。
③在 LoginServlet 类中重写 doPost 方法,用于处理 POST 请求,实现用户登录的逻辑。
④在 doPost 方法中获取用户提交的表单数据,判断用户名和密码是否正确,如果正确则将用户信息存储到 Session 中,否则给出提示信息。
⑤编写 login.jsp 文件,用于显示登录页面。
⑥在 login.jsp 中编写一个表单,用于用户输入用户名和密码。
⑦在表单中添加一个提交按钮,用于提交用户输入的信息到 LoginServlet。

下面是 LoginServlet 和 login.jsp 的代码实现:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        // 判断用户名和密码是否正确
        if ("admin".equals(username) && "admin123".equals(password)) {
            // 用户名和密码正确,将用户信息存储到 Session 中
            HttpSession session = request.getSession();
            session.setAttribute("username", username);
            
            // 重定向到首页
            response.sendRedirect(request.getContextPath() + "/index.jsp");
        } else {
            // 用户名和密码不正确,给出提示信息
            request.setAttribute("errorMsg", "用户名或密码错误,请重新登录!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

login.jsp

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>
<body>
    <h1>用户登录</h1>
    <form method="post" action="${pageContext.request.contextPath}/login">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="登录"></td>
            </tr>
        </table>
        <c:if test="${not empty errorMsg}">
            <p style="color: red;">${errorMsg}</p>
        </c:if>
    </form>
</body>
</html>

在以上代码中,我们实现了用户登录的功能,用户输入用户名和密码后提交到 LoginServlet,然后判断用户名和密码是否正确,如果正确则将用户信息存储到 Session 中,然后重定向到首页,否则给出提示信息并跳转回登录页面。登录页面使用了 JSP 技术,用于显示一个表单,让用户输入用户名和密码。

https://www.baidu.com/link?url=bFgCR-GYujFOx-hvHKzbNOAkrOtIEVp7DSKHuDDHyMoMCvTtW67veOzYyOP1jTXa1n38_7WeXnrP3tfeMU2__zqlvNQ4hNdv2ICibRCLwL3&wd=&eqid=dc50bfdd0005f3c80000000263f4153c