Servlets 如何知道当前Servlet请求是否是重定向的结果?

Servlets 如何知道当前Servlet请求是否是重定向的结果?,servlets,Servlets,有没有办法知道请求是否在Servlet的doGet方法中被重定向或转发 在我的应用程序中,当用户(其会话已超时)单击文件下载链接时,会显示登录页面,这很好。当他们登录时,会立即发送他们请求的文件,而不会更新他们看到的页面,这是不好的。基本上,他们会被困在登录屏幕上(需要刷新) 我想做的是,当重定向导致文件被请求时,中断此操作并简单地重定向到带有链接的页面 也许有更好的方法来解决这个问题?如果您使用的是容器管理的身份验证,那么我认为您无法检测到这一点,因为只有在成功完成身份验证后,服务器才会涉及您

有没有办法知道请求是否在Servlet的
doGet
方法中被重定向或转发

在我的应用程序中,当用户(其会话已超时)单击文件下载链接时,会显示登录页面,这很好。当他们登录时,会立即发送他们请求的文件,而不会更新他们看到的页面,这是不好的。基本上,他们会被困在登录屏幕上(需要刷新)

我想做的是,当重定向导致文件被请求时,中断此操作并简单地重定向到带有链接的页面


也许有更好的方法来解决这个问题?

如果您使用的是容器管理的身份验证,那么我认为您无法检测到这一点,因为只有在成功完成身份验证后,服务器才会涉及您的资源


如果您以不同的方式管理身份验证,请解释。

重定向发生在客户端。以前的请求会指示浏览器发送新请求,因此不会对服务器造成影响。
Referer
标题可能包含一些有用的信息,但不确定

重定向时,您可以附加一些参数,如
?targetPage=dowloadpage
,然后检查该参数是否存在。如果要通过多个页面传输,您可能需要将其放入登录页面上的
隐藏的
字段中