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