简体   繁体   English

java.lang.IllegalStateException:添加`return`后提交响应后无法转发

[英]java.lang.IllegalStateException: Cannot forward after response has been committed after add `return`

I want to redirect the url after user input name and password, but there are something wrong. 我想在用户输入名称和密码后重定向URL,但是出了点问题。 some people say that add return after forward(request,response) , and this method doesn't work. 有人说在forward(request,response)之后添加return ,这种方法不起作用。

  RequestDispatcher dispatcher; String username = request.getParameter("username"); String passwd = request.getParameter("passwd"); if(username != null && passwd != null){ try{ Database database = new Database("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/picshow","root","000000"); ResultSet rs = database.query("select * from ps_user where name=?", username); if(rs.next()){ if(rs.getString("passwd").equals(passwd)){ HttpSession session = request.getSession(); session.setAttribute("username", username); System.out.println("login successful"); dispatcher = request.getRequestDispatcher(request.getContextPath()+"/personalpage.jsp"); dispatcher.forward(request, response); return; }else { errMsg = "invalid password"; } }else { errMsg="user not exist"; } }catch(Exception e){ e.printStackTrace(); } if(errMsg != null && !errMsg.equals("")){ dispatcher = request.getRequestDispatcher(request.getContextPath()+"/login.jsp"); request.setAttribute("errMsg", errMsg); dispatcher.forward(request, response); return; } }else { dispatcher = request.getRequestDispatcher(request.getContextPath()+"/login.jsp"); dispatcher.forward(request, response); return; } 

Instead create a String variable, set your destination based on your condition and finally forward it. 而是创建一个String变量,根据您的条件设置目的地,然后将其转发。

RequestDispatcher dispatcher;
String username = request.getParameter("username");
String passwd = request.getParameter("passwd");
String destination = "";//new targe variable
if(username != null && passwd != null){
    try{
        Database database = new Database("com.mysql.jdbc.Driver",
                "jdbc:mysql://localhost:3306/picshow","root","000000");
        ResultSet rs = database.query("select * from ps_user where name=?", username);
        if(rs.next()){
            if(rs.getString("passwd").equals(passwd)){
                HttpSession session = request.getSession();
                session.setAttribute("username", username);
                System.out.println("login successful");
                destination=request.getContextPath()+"/personalpage.jsp";//set your target
            }else {
                errMsg = "invalid password";
            }
        }else {
            errMsg="user not exist";
        }
    }catch(Exception e){
        e.printStackTrace();
    }
    if(errMsg != null && !errMsg.equals("")){
        destination=request.getContextPath()+"/login.jsp";//set your target
        request.setAttribute("errMsg", errMsg);
    }
}else {
    destination=request.getRequestDispatcher(request.getContextPath()+"/login.jsp");//set 
}

dispatcher = request.getRequestDispatcher(destination);
dispatcher.forward(request, response);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 java.lang.IllegalStateException:在servletfilter中提交响应后无法转发 - java.lang.IllegalStateException: Cannot forward after response has been committed in servletfilter java.lang.IllegalStateException:在提交响应后无法转发 - java.lang.IllegalStateException: Cannot forward after response has been committed java.lang.IllegalStateException:PWC1227:提交响应后无法转发……为什么要发送? - java.lang.IllegalStateException: PWC1227: Cannot forward after response has been committed…why it was comming? java.lang.IllegalStateException:在404上提交响应后无法转发 - java.lang.IllegalStateException: Cannot forward after response has been committed on 404 随机java.lang.IllegalStateException:提交响应后无法转发 - Random java.lang.IllegalStateException: Cannot forward after response has been committed java.lang.IllegalStateException:提交响应后无法转发,位于com.java.QTD.QuestionOfTheDay.doGet() - java.lang.IllegalStateException: Cannot forward after response has been committed, at at com.java.QTD.QuestionOfTheDay.doGet() Spring boot:java.lang.IllegalStateException:响应提交后无法调用sendError() - Spring boot : java.lang.IllegalStateException: Cannot call sendError() after the response has been committed JSF 2.2 java.lang.IllegalStateException:提交响应后无法创建会话 - JSF 2.2 java.lang.IllegalStateException: Cannot create a session after the response has been committed Spring java.lang.IllegalStateException:在提交响应后无法创建会话 - Spring java.lang.IllegalStateException: Cannot create a session after the response has been committed java.lang.IllegalStateException - 在提交响应后无法创建会话 - java.lang.IllegalStateException - Cannot create a session after the response has been committed
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM