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

Java Servlet从一个Servlet重定向到另一个Servlet,然后再返回到初始Servlet,java,servlets,redirect,web,Java,Servlets,Redirect,Web,我有一个关于Java servlet的问题 假设我在一个servlet网页“somePage”上。我想登录(使用另一个servlet“login”servlet)。因此,我点击“somePage”上的登录链接,并被重定向到“login”页面。我输入了我的名字和密码,它们都是正确的。登录页面已成功让我登录 (现在询问有关“登录”servlet的编码)如何对“登录”页面进行编码,以便将成功登录的用户重定向回“somePage”页面 主要问题:登录页面如何知道最初重定向到它的页面是“somePage”

我有一个关于Java servlet的问题

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

(现在询问有关“登录”servlet的编码)如何对“登录”页面进行编码,以便将成功登录的用户重定向回“somePage”页面

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

我已经检查了很多请求参数,但请不要告诉我,是的,您是从“somePage”页面直接获得的。这些是我看过的paramater:

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参数必须告诉要求显示它的登录页面。任何帮助都将不胜感激。我将继续寻找答案。我试图搜索这个问题,但没有找到答案。

有不同的方法。一种方法是让您的登录页面支持
continue
CGI参数,该参数提供登录成功后要重定向到的URL。另一种方法是使用传递到登录页面的“Referer”头,并重定向到该URL


对于前者,您可以使用获取CGI参数,并确定是否存在名为
continue
(或您为该CGI参数选择的任何名称)的CGI参数;对于后者,您可以使用获取“Referer”标题。

有不同的方法。一种方法是让您的登录页面支持
continue
CGI参数,该参数提供登录成功后要重定向到的URL。另一种方法是使用传递到登录页面的“Referer”头,并重定向到该URL


对于前者,您可以使用获取CGI参数,并确定是否存在名为
continue
(或您为该CGI参数选择的任何名称)的CGI参数;对于后者,您可以使用它来获取“引用者”标头。

而不是实现自己,您应该考虑使用Web应用程序。p> 几乎每个servlet容器都支持这一点

首先,您必须配置安全性。这取决于您的应用服务器。也就是说,您可以使用数据库方法,为用户及其角色或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>

因此,对受保护资源的所有调用都必须通过您的筛选器。

在过滤器中,您可以检查是否已经存在会话,以及用户是否已成功登录。然后正常通话可以继续。否则,您可以转发到登录页面,并在会话中存储原始URL。在成功登录后,您可以从会话上下文中读取原始URL并重定向到用户希望首先看到的页面。

相反,实现您自己应该考虑使用您的Web应用程序。p> 几乎每个servlet容器都支持这一点

首先,您必须配置安全性。这取决于您的应用服务器。也就是说,您可以使用数据库方法,为用户及其角色或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>

因此,对受保护资源的所有调用都必须通过您的筛选器。
在过滤器中,您可以检查是否已经存在会话,以及用户是否已成功登录。然后正常通话可以继续。否则,您可以转发到登录页面,并在会话中存储原始URL。成功登录后,您可以从会话上下文中读取原始URL,并重定向到用户首先希望看到的页面