@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String inputPwd = req.getParameter("edit_pwd");
int pId = Integer.parseInt(req.getParameter("pId"));
DatabaseHandler dbHandler = new DatabaseHandler();
PersonInfoRepository pr = new PersonInfoRepository(dbHandler);
String editPwd = pr.getPasswordById(pId);
System.out.println(req.getContextPath());
if (inputPwd.equals(editPwd)) {
System.out.println("密码正确");
req.getRequestDispatcher("edit.jsp").forward(req, resp);
return;
}
// else {
// System.out.println("密码错误");
// resp.sendRedirect("../../error.jsp");
// return;
// }
}
源码如上,报错信息如下
java.lang.IllegalStateException: 提交响应后无法转发
EditConfirm.doPost(EditConfirm.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:696)
javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
研究了很久,最后发现把super那一句删了就好了
super.doPost(req, resp); // 把这句删了
记录一下,没事不要瞎super
补充:忘记是在哪篇笔记看到的了,doPost原函数主要就是一个条件判断,不是返回400就是返回405,所以会一直报错