Java 如何从通过apache ErrorDocument重定向实现的Struts 2操作中获取原始请求URI?
如何从Struts 2操作中访问请求URI?在perl/php/ruby中,它可以通过ENV[“REQUEST_URI”]等方式轻松获得。在java中,我正在寻找PageContext.getErrorData().getRequestURI(),但遗憾的是,PageContext似乎没有在操作中定义,这可能是因为ErrorDocument重定向使请求看起来不像一个错误,也可能是因为它是稍后定义的 特定示例 给定tomcat上的apache前端(mod_jk/ajp)struts 2应用程序,通过apache中的ErrorDocument 404配置实现。详情如下: --原始请求url(触发404)-- --http.conf-- --撑杆动作-- 同样,我需要的是字符串“/total/bogus/path”,但在上面的操作中,我能找到的唯一url字符串是“/struts2app/lookup.action”。我与ErrorDocument联系在一起是因为/bogus/path不可能在我的应用程序的名称空间中,因为apache提供其他非tomcat资源。request.getAttribute(“javax.servlet.forward.request\u uri”)使用:Java 如何从通过apache ErrorDocument重定向实现的Struts 2操作中获取原始请求URI?,java,apache,struts2,servlets,Java,Apache,Struts2,Servlets,如何从Struts 2操作中访问请求URI?在perl/php/ruby中,它可以通过ENV[“REQUEST_URI”]等方式轻松获得。在java中,我正在寻找PageContext.getErrorData().getRequestURI(),但遗憾的是,PageContext似乎没有在操作中定义,这可能是因为ErrorDocument重定向使请求看起来不像一个错误,也可能是因为它是稍后定义的 特定示例 给定tomcat上的apache前端(mod_jk/ajp)struts 2应用程序,通
JkEnvVar REDIRECT_URL ""
在您的
httpd.conf
文件中。然后使用request.getAttribute(“重定向URL”)
获取jsp/servlet中的变量。如果您不想错过查询字符串部分,最好:
baseUri = (String)request.getAttribute("struts.request_uri");
final String referrer = (String) request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
if(referrer != null) {
final String query = (String) request.getAttribute(RequestDispatcher.FORWARD_QUERY_STRING);
if(query != null && query.length() > 0) {
url = referrer+ "?" + query;
}
else {
url = referrer;
}
// do something
}
不。在这个上下文中是空的。
JkEnvVar REDIRECT_URL ""
baseUri = (String)request.getAttribute("struts.request_uri");
final String referrer = (String) request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI);
if(referrer != null) {
final String query = (String) request.getAttribute(RequestDispatcher.FORWARD_QUERY_STRING);
if(query != null && query.length() > 0) {
url = referrer+ "?" + query;
}
else {
url = referrer;
}
// do something
}