gpt4 book ai didi

Java Servlet 从一个 Servlet 重定向到另一个 Servlet,然后返回到初始 Servlet

转载 作者:行者123 更新时间:2023-11-29 03:53:14 28 4
gpt4 key购买 nike

我有一个关于 Java Servlet 的问题。

假设我在 servlet 网页“somePage”上。我想登录(使用另一个 servlet,“登录”servlet)。所以我点击“somePage”上的登录链接,然后被重定向到“登录”页面。我输入我的名字和密码,它们都是正确的。登录页面已成功让我登录。

(现在询问“登录”servlet 的编码)如何编写“登录”页面的代码,以便它将成功登录的人重定向回“somePage”网页?

主要问题:登录页面如何知道最初重定向到它的页面是“somePage”页面?

我检查了很多请求参数,但没有告诉我,是的,您是从页面“somePage”定向的。这些是我看过的参数:

String authType = request.getAuthType();
String pathInfo = request.getPathInfo();
String pathTranslated = request.getPathTranslated();
String getUserName = request.getRemoteUser();
String remoteAdd = request.getRemoteAddr();
String uriString = request.getRequestURI();
String sessionID = request.getRequestedSessionId();
String serverName = request.getServerName();
Integer serverPort = request.getServerPort();
String servletPath = request.getServletPath();

我知道其中一些显然不会给我正在寻找的答案,但我认为 HttpServletRequest 参数之一必须告诉要求显示它的登录页面。任何帮助将不胜感激。我将继续寻找答案。我试图搜索这个问题,但没有找到答案。

最佳答案

您应该考虑使用 form based authentification 而不是自己实现为您的网络应用程序。

几乎每个 servlet 容器都支持这一点。

首先您必须配置安全性。这取决于您的应用程序服务器。 IE。与 Jetty您可以使用数据库方法为用户及其角色或 LDAP 等创建表格。

web.xml 中打开基于表单的身份验证:

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/logon.jsp</form-login-page>
<form-error-page>/logonError.jsp</form-error-page>
</form-login-config>
</login-config>

您指定必须提供的两个 JSP 页面。 logon.jsp 是输入用户名和密码的登录页面。如果用户名和密码无效,则显示 logonError.jsp

整个登录流程由应用服务器处理。

如果用户首先访问 protected URL,应用程序服务器将显示登录页面。作为约定,用户名和密码的输入字段应命名为 j_usernamej_password。当用户提交登录表单时,服务器会检查用户凭据是否有效(根据其配置)。如果是这样,用户将被重定向到原始页面。否则显示登录错误页面。

如果你真的想自己实现它,那么你可以实现一个 servlet filter这样所有对 protected 资源的调用都必须通过您的过滤器。在您的过滤器中,您可以检查是否已经存在 session 以及用户是否已成功登录。然后可以继续进行正常调用。否则,您可以转到您的登录页面并将原始 URL 存储在 session 中。成功登录后,您可以从 session 上下文中读取原始 URL 并重定向到用户首先希望看到的页面。

关于Java Servlet 从一个 Servlet 重定向到另一个 Servlet,然后返回到初始 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com