如何知道Web请求中提供的文件

时间:2013-02-28 08:24:16

标签: java tomcat webserver

我的问题很清楚,在没有像

这样的文件名的Web服务器请求中
http://whatever.com/path_1/path_b/

当使用“welcome-file-list”(在Tomcat应用程序的web.xml中)获取Web服务器响应时,使用默认的可能页面(deafult.html,index.html等)。
有没有办法通过Web服务器知道确切文件或文件名是服务器?

我需要在过滤器中检查文件,但在请求和/或响应对象中似乎不可用

由于

2 个答案:

答案 0 :(得分:0)

不,你不能。隐藏文件的物理细节及其在Web服务器后面的访问的目的是提供对服务器资源的简化和安全访问。

答案 1 :(得分:0)

嗯,我已经尝试过这个解决方案,但我不知道它是否太“耗费资源”。

在我的servlet过滤器中,检查第一个现有文件的欢迎文件列表。

String fullURL = httpRequest.getRequestURL().toString();
String realPath = this.servletContext.getRealPath(filePath);

// if path is not a filename
if (fullURL.endsWith("/")){
    // welcome file list
    for (String wf : (String[])servletContext.getAttribute("org.apache.catalina.WELCOME_FILES")) {
        // first encountered - first used
        if ((new File(realPath+"\\"+wf)).exists()) {
            // el primero que exista será el utilizado
            fullURL += wf;
            realPath += "\\"+wf;
            break;
        }
    }
}