21晚上之前,需要按照图中要求完成一系列代码编写和运行
麻烦提供一下文字版本,或者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 技术,用于显示一个表单,让用户输入用户名和密码。