0

我的问题很清楚,在没有文件名的 Web 服务器请求中

http://whatever.com/path_1/path_b/

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

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

谢谢

4

2 回答 2

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;
        }
    }
}
于 2013-02-28T11:42:18.540 回答
0

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

于 2013-02-28T08:37:15.500 回答