Servlet重定向不显示请求的页面
我有一个页面 - 让它叫做页面X - 我在那里做一个ajax
调用,填充我的表格,用jqGrid
构建。所以这里我叫localhost:8080/servlet/ajax/Data.json
这是一个servlet
。 现在,如果页面过期并且用户仍然想访问表格(例如搜索数据),我想将请求重定向到Login
页面。Servlet重定向不显示请求的页面
的ajax
电话呼叫Data.json servlet
不在同一servletcontext
作为我Login
页面(这是localhost:8080/servlet/myapp
),所以我不能使用servlet
着(我使用JBoss 4.2和我只能在相同的正向servletcontext
)。
我试着重定向sendRedirect
,它可以调用Login
实际执行但未显示的页面。这就是我迷失的地方。我的Login
页面已执行,我仍然看到页面X. 我试图将返回的HTML(从Login
页面)写入页面X的响应中(我也将Content-Type
设置为text/html
)。 HTML会在响应中返回,但不会显示。
我使用的是Apache Turbine
,这是另一个servlet
,它在请求时检索页面。 你有什么想法吗?我不知道该怎么办。
Ajax调用是异步调用,对ajax调用的sendRedirect调用永远不会有效(ajax响应始终向发起者发送响应)。
您可能需要使用XMLHttpRequest状态码来查找页面过期,然后使用java脚本window.location重置浏览器url以登录url。
它看起来像你的servlet在servlet/ajax/Data.json
告诉AJAX请求重定向到登录页面。然后页面将尝试使用登录页面呈现jqGrid表格,这可能不起作用。
您需要添加代码,您正在对AJAX调用servlet/ajax/Data.json
进行检查以确定浏览器本身是否需要重定向。如果servlet返回一个302重定向作为响应,或者如果servlet返回一个简单的“SESSION EXPIRED”错误,那么在浏览器端对JavaScript进行AJAX调用的JavaScript知道会话已过期并重定向浏览器到登录页面。