java - Servlet 重定向不显示请求的页面

标签 java servlets redirect

我有一个页面 - 让我们称之为页面 X - 我在其中执行 ajax 调用,填充使用 jqGrid 构建的表。所以在这里我调用 localhost:8080/servlet/ajax/Data.json ,它是一个 servlet 。 现在,如果页面过期并且用户仍然想要访问表(例如搜索数据),我想将请求重定向到登录页面。

ajax 调用调用的 Data.json servlet 与我的 Login 不在同一 servletcontext 中页面(即 localhost:8080/servlet/myapp),因此我无法使用 servlet 转发(我使用的是 JBoss 4.2,只能在同一个 中转发) servletcontext)。

我尝试使用sendRedirect进行重定向,它能够调用实际执行但未显示的Login页面。这就是我迷路的地方。我的 Login 页面已执行,但我仍然看到页面 X。 我尝试将返回的 HTML(从 Login 页面)写入页面 X 的响应(我还将 Content-Type 设置为 text/html)。 HTML 在响应中返回,但不显示。

我正在使用 Apache Turbine,它是另一个在请求时检索页面的 servlet。 你有什么想法?我不知道该怎么办。

最佳答案

看起来 servlet/ajax/Data.json 处的 servlet 正在告诉 AJAX 请求重定向到登录页面。然后页面将尝试使用登录页面渲染 jqGrid 表,这可能不起作用。

您需要在对 servlet/ajax/Data.json 进行 AJAX 调用的位置添加代码,以检查浏览器本身是否需要重定向。如果 servlet 返回 302 重定向作为响应,或者 servlet 返回一个简单的“SESSION EXPIRED”错误,那么浏览器端对 servlet 进行 AJAX 调用的 javascript 就会知道 session 已过期并重定向该 session 。浏览器访问登录页面。

关于java - Servlet 重定向不显示请求的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617926/

相关文章:

java - 库存元素使用的设计模式建议

java - 无法使用 Tomcat 服务器从 IntelliJ 中运行/调试 jsp 页面

java - JS和Java中相同图像的不同Base64字符串

将目录重定向到 Azure url

java - 逆数组(Java)//逆数组(Java)

java - 使用 GUI 时出错 : IllegalStateException

java - HTTP 状态 405 - 此 URL java servlet 不支持 HTTP 方法 POST

java - 在 Google App Engine 中读取 Java Servlet 输入流时出现问题

php - mediawiki如何实现Special :Allpages?

javascript - 如何使用 Native Javascript 将 Ajax PHP 字符串重定向到新 URL?