我正在尝试创建登录servlet,但仍然收到此错误?我是编程新手,所以不太了解这意味着什么。我查了这个错误,但看不到我在做什么错?任何帮助表示赞赏。这是错误
Cannot call sendRedirect() after the response has been committed
Description The server encountered an unexpected condition that prevented it
from fulfilling the request.
异常
java.lang.IllegalStateException:无法在调用之后调用sendRedirect() 已作出回应 org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:488) Loginn.processRequest(Loginn.java:52) Loginn.doPost(Loginn.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:660) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
这是我的代码
public class Loginn extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try(PrintWriter out = response.getWriter())
{
String name = request.getParameter("name");
String pass = request.getParameter("pass");
MyDb1 db = new MyDb1();
Connection con = db.getCon();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select uid,name,pass from register where email = '"+name+"' and pass = '"+pass+"'");
while ((rs.next())) {
String uid = rs.getString("uid");
HttpSession session=request.getSession();
session.setAttribute("name",uid);
response.sendRedirect("http://localhost:8080/Final_Year_Project_5_/userprofile.jsp");
}
}catch (SQLException ex) {
Logger.getLogger(Loginn.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
答案 0 :(得分:0)
使用请求distpatcher代替sendRedirect
RequestDispatcher dispatcher = req.getRequestDispatcher("/userprofile.jsp");
dispatcher.forward(req, resp);