doget方法自动执行两次的问题

问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

今天学习Servlet时遇到了doget方法自动执行了两次,获取数据正常,但是doget经过调试发现会执行两次,而且第二次执行时,永远无法点击下一步执行,请各位指教,谢谢各位

@WebServlet("/index")
public class IndexServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        FruitDAOImpl fruitDAO = new FruitDAOImpl();
        Connection connection = null;
        try {
            //获取数据库连接
            connection = JDBCutil.getConnection();
            //获取表中的全部记录
            List<Fruit> fruitList = fruitDAO.getAll(connection);
            //输出表中所有的数据
            System.out.println(fruitList);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //关闭数据库连接
        JDBCutil.closeResource(connection,null);


    }
}

控制台输出:

img

你可以在你方法的第一行随意打印一句话,然后在访问,看看这句话是打印几次,如果是打印2次,那么说明是你请求发起了2次,从代码上看,问题应该是次种情况。

  • 第一种,你前端有逻辑掉了两次,那看看你前端请求的逻辑
  • 第二种,你配了WebServlet注解,检查是不是其他配置也配了相同的请求路径,或者说相同的代码逻辑,这个你打印一下线程名,和输出行号看看

望采纳


doget方法是在请求方法为GET时自动执行的,因此可能是在访问这个Servlet时产生了两次请求,导致doget方法执行两次。可以在doget方法的开头加入如下代码,打印出请求的方法,以便更好地定位问题:

String method = req.getMethod();
System.out.println("method=" + method);

如果发现每次访问都会产生两次请求,可以检查网页的HTML代码,看看是否有什么地方产生了两次请求。例如,如果有两个链接都指向了这个Servlet,则会导致两次请求。