我有一个带有java和EXT JS(3.4)的Web应用程序。 对于所有servlet,这就是我在doGet方法中所拥有的:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.sendRedirect("ErrorPage.jsp");
} catch (Throwable t) {
//do some logging
}
}
我使用EXT JS模拟GET请求:
Ext.Ajax.request({
method : 'GET',
url : 'web'//web is the servlet name
});
页面不会重定向。这是firefox的tamperData插件的输出:
如果您无法看到图像,则表示AJAX Get请求已响应状态302:表示重定向,并且有一个请求ErrorPage.jsp,其返回状态代码200:表示请求已成功完成。
如果我在ajax请求的回调中警告响应,它会警告ErrorPage.jsp的内容。我有很多这样的AJAX请求。是否有任何理由说明重定向无效。
我还添加了以下代码。但我总是得到200的状态。虽然我可以在firebug中看到,对于获取请求,第一个请求给出了状态302,而第二个请求给出了200.
Ext.Ajax.on('requestcomplete', function(conn, response, options) {
alert('successful'+response.status)
});
Ext.Ajax.on('requestexception', function(conn, response, options) {
alert('failed'+response.status)
});
详细说明:
操作系统:Windows 7
服务器:Apache Tomcat 7.0.42
Servlet Api:使用servlet-api-3.0.jar
答案 0 :(得分:2)
基于@ AnthonyGrist的帖子,这是我为EXT JS提出的解决方案。
在控制器中,我将doGet更改为:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
try {
response.setStatus(403);
} catch (Throwable t) {
//do something
}
}
状态代码403在EXT JS中被识别为失败。所以在jsp页面中:
Ext.Ajax.on('requestexception', function(conn, response, options) {
if(response.status=403){
window.location.assign("ErrorPage.jsp");
}
});