使用Servlet登录后重定向到index.jsp

时间:2014-08-31 04:21:13

标签: java jsp servlets

我有一个servlet来处理/Login

String tempUsername = request.getParameter("username").trim();
String tempPassword = request.getParameter("password").trim();
String message = null;

if(tempUsername != null && tempPassword != null) {
    String username = tempUsername;
    String password = tempPassword;
    Staff staff = new Staff();

    try {
        Facade facade = new Facade();
        Staff result = facade.getStaff(username, password);

        if(result != null) {
            // response.sendRedirect(request.getContextPath()+"/Home"); // Success but didn't redirect to `/Home`
            System.out.println("Success");
        }
        else {
            // request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
            System.out.println("Fail");
        }
    }
    catch(SQLException | NamingException e) {
        // SQL Error
    }
    finally {
        request.setAttribute("message", message);   
    }

}
else {
    // Empty field(s)
}

我有另一个servlet来处理/Home,如果登录成功,将显示index.jsp

但是,目前如果登录成功,页面仍然只有/Login,只有一个空白页面,而不是重定向到/Home

如何在登录成功后重定向到/Home

我是使用Servlet和Eclipse的新手。我刚开始学习J2EE和Eclipse。还在探索。

  • 编辑(S):
  • 我将forward()sendRedirect()更改为println()。当我使用错误的用户名和密码时,"失败"打印出来。但是当我使用正确的细节时,没有任何打印出来。

2 个答案:

答案 0 :(得分:0)

不要使用sendRedirect() - forward()更合适,因为您在同一服务器上重定向请求(使用相对路径)。如果您坚持使用sendRedirect() - 请使用提取网址。

答案 1 :(得分:0)

如果你想要在web.xml中重定向的servlet的url映射,或者作为注释这个简单的行应该完成工作,为什么你需要那个absolutePath呢?

RequestDispatcher requestDispatcher=servletContext.getRequestDispatcher("/Home");
requestDispatcher.forward(request, response);

或者这个

response.sendRedirect("/Home");