从同一java类调用不同的jsp文件

从同一java类调用不同的jsp文件,jsp,Jsp,我正在创建一个简单的web应用程序,它有一个jsp登录页面。验证凭证后,我使用servlet的doPost方法获取参数。现在我将这些值传递给一个简单的java类(不是servlet),然后使用JDBC技术将一个字符串返回servlet,该字符串表示正确密码/错误密码/无效用户名。现在,我从servlet调用一个jsp,它将在屏幕上打印字符串 工作正常。现在我想从java类本身调用3个jsp。例如,在正确密码id的if()块中,我想调用一个名为correct.jsp的jsp,它已经有了在屏幕上打印

我正在创建一个简单的web应用程序,它有一个jsp登录页面。验证凭证后,我使用servlet的doPost方法获取参数。现在我将这些值传递给一个简单的java类(不是servlet),然后使用JDBC技术将一个字符串返回servlet,该字符串表示正确密码/错误密码/无效用户名。现在,我从servlet调用一个jsp,它将在屏幕上打印字符串

工作正常。现在我想从java类本身调用3个jsp。例如,在正确密码id的if()块中,我想调用一个名为correct.jsp的jsp,它已经有了在屏幕上打印“正确密码”的代码。同样地

您能建议我如何从java文件调用jsp吗?我只需要调用jsp并加载它。无需对jsp文件进行任何修改


谢谢

这不是正确的方法。您将Java数据库访问类与JSP/Servlet API紧密耦合。Java数据库访问类应该返回合理的/可重用的结果和/或引发合理的异常。您应该在servlet中执行此操作

例如

顺便说一句,如果您使用一个相同的JSP有条件地显示错误消息,而不是显示硬编码的消息,并且如果需要,让servletcontainer的默认错误页面机制基于
web.xml
中的
处理异常,那么也会容易得多。如果您将消息直接显示在登录表单所在的同一个JSP页面中,这样最终用户就不需要导航回登录表单,那么它的用户友好性也会大大提高

例如

另见:
  • -hello world示例还包括验证
try {
    User user = userService.find(username, password);

    if (user == null) {
        response.sendRedirect("wronglogin.jsp");
    } else {
        request.getSession().setAttribute("user", user);
        response.sendRedirect("correctlogin.jsp");
    }
} catch (SQLException e) {
    response.sendRedirect("databaseerror.jsp");
    e.printStackTrace();
}
try {
    User user = userService.find(username, password);

    if (user == null) {
        request.setAttribute("message", "Login failed, unknown user");
        request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response);
    } else {
        request.getSession().setAttribute("user", user);
        response.sendRedirect("correctlogin.jsp");
    }
} catch (SQLException e) {
    throw new ServletException("Database error!", e);
}