有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java HttpServlet必须响应请求吗?

我有几个servlet在服务器端做一些事情。在一些情况下,我只是对一些不必要的数据进行编码并将其发回,这似乎毫无意义。你必须回应吗?当你说return时会发生什么?我以前做过这件事,似乎没有什么问题,但我对servlet相对来说是新手。简单地返回到我头上有什么后果吗?当你回来的时候会发生什么

if(request.getParameter("name").equals("saveusedcards")) {
        String sessId = request.getSession().getId();
        //encode request with confirmation that cards were successfully updated
        if(usersUpdatedCards.get(sessId).isEmpty()){
            //no cards were seen

        }
        boolean success = DataDAO.updateCards(usersUpdatedCards.get(sessId));

        if(success){
            System.out.println("Data base update successfull!");
            String responseMessage = new Gson().toJson("card successfully udpated");
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            System.out.println("updated cards response message: "+responseMessage);
            response.getWriter().write(responseMessage);
            return;
        } else {
            System.out.println("Data base update failed...");
            String responseMessage = new Gson().toJson("card was not successfully updated");
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            System.out.println("updated cards response message: "+responseMessage);
            response.getWriter().write(responseMessage);
            return;
        }
    } 

共 (1) 个答案

  1. # 1 楼答案

    servlet必须为客户机生成HTTP响应,但是在响应体中不返回任何内容是完全可以接受的。在执行此操作时,servlet应该通过发送204(无内容)的响应代码向客户机说明这一点。参考:https://httpstatuses.com/204

    下面是一个如何从doGet方法设置响应代码的示例。您可以通过doPostservice方法执行同样的操作

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                   throws IOException, ServletException {
    
        // Do whatever work you need to do here...
    
        res.setStatus(HttpServletResponse. SC_NO_CONTENT);  // This returns a 204
    }