今天学习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);
}
}
控制台输出:
你可以在你方法的第一行随意打印一句话,然后在访问,看看这句话是打印几次,如果是打印2次,那么说明是你请求发起了2次,从代码上看,问题应该是次种情况。
望采纳
doget方法是在请求方法为GET时自动执行的,因此可能是在访问这个Servlet时产生了两次请求,导致doget方法执行两次。可以在doget方法的开头加入如下代码,打印出请求的方法,以便更好地定位问题:
String method = req.getMethod();
System.out.println("method=" + method);
如果发现每次访问都会产生两次请求,可以检查网页的HTML代码,看看是否有什么地方产生了两次请求。例如,如果有两个链接都指向了这个Servlet,则会导致两次请求。