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

时间:2014-11-29 14:04:08

标签: java servlets requestdispatcher

我想在用户输入名称和密码后重定向url,但是有些错误。 有人说在return之后添加forward(request,response),这种方法不起作用。

    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;
    }

1 个答案:

答案 0 :(得分:0)

而是创建一个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);
相关问题