Java Servlet不';发送请求后无法正确响应

Java Servlet不';发送请求后无法正确响应,java,function,jsp,servlets,service,Java,Function,Jsp,Servlets,Service,所以我有一个简单的jsp网站,它包含todo列表,我已经做了添加功能,但是现在删除功能有问题 <ol class="list-group"> <c:forEach items="${todos}" var="todo"> <li class="list-group-item">${todo.toDoPosition} &nbsp; <a class="btn btn-light" hre

所以我有一个简单的jsp网站,它包含todo列表,我已经做了添加功能,但是现在删除功能有问题

  <ol class="list-group">
            <c:forEach items="${todos}" var="todo">
                <li class="list-group-item">${todo.toDoPosition} &nbsp; <a class="btn btn-light" href="${pageContext.request.contextPath}/delete-todo.do?uuidDelete=${todo.uuid}">Delete</a></li>
            </c:forEach>
        </ol>
它重定向到servlet,该servlet在doGet中有一个returnList()方法,它还有一个doPost方法,用于响应添加新todo:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.getSession().setAttribute("todos", todoService.returnList() );
    request.getRequestDispatcher("/WEB-INF/views/todo.jsp").forward(request, response);
}
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    if (request.getParameter("newTodo") != null) {
        todoService.addTodo(new Todo(request.getParameter("newTodo")));
    }
    response.sendRedirect("/todo.do");
}
和删除服务:

    protected List<Todo> toDoList = new ArrayList<>();


public List<Todo> returnList(){
    return toDoList;
}

public void addTodo(Todo toDo) {
    toDoList.add(toDo);
    System.out.println(toDo.uuid);
}

public void deleteTodo(Todo toDo) {
    if(toDoList.contains(toDo.uuid)) {
        toDoList.remove(toDo);
    }

}
protectedlist toDoList=new ArrayList();
公共列表返回列表(){
回归政治;
}
公共无效添加Todo(Todo Todo){
toDoList.add(toDo);
System.out.println(toDo.uuid);
}
公共无效删除Todo(Todo Todo){
if(toDoList.contains(toDo.uuid)){
toDoList.remove(toDo);
}
}

单击“删除”后,它发送带有UUID的请求,网站刷新,但列表中没有任何更改。delete方法似乎没有从列表中删除位置,因为在我将其重定向到/todo.do并打印列表后,应该删除的位置仍然在这里,我不知道为什么在deletetetodo中传入一个todo对象。然后在List contains方法中使用传入的Todo uuid属性,这是不正确的。您需要将Todo对象传递到contains方法,而不仅仅是它的ID,因为列表包含方法并比较对象,而不是它们的uuid属性。如果调试此代码,您应该会看到从未调用List remove方法。您可能还需要覆盖Todo对象中的equals,使equals对uuid属性进行比较。

第一次列出所有Todo时,您在哪里填充Todo列表;页面加载列表为空且未显示在网站上,我使用with POST方法添加另一个位置/todo.do servlet具有doPost方法处理向列表中添加新位置的操作。请发布整个服务器端代码。
    protected List<Todo> toDoList = new ArrayList<>();


public List<Todo> returnList(){
    return toDoList;
}

public void addTodo(Todo toDo) {
    toDoList.add(toDo);
    System.out.println(toDo.uuid);
}

public void deleteTodo(Todo toDo) {
    if(toDoList.contains(toDo.uuid)) {
        toDoList.remove(toDo);
    }

}