1

我尝试实现方法 getPathTranslated() 但总是返回 null 的东西,这是我使用的方法:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FileLocation extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //response.setContentType("text/html;charset=UTF-8");
        response.setContentType("text/plain");
        PrintWriter out = response.getWriter();

        if (request.getPathInfo() != null) {
            out.println("The file \"" + request.getPathInfo() + "\"");
            out.println("Is stored at \"" + request.getPathTranslated() + "\"");
        } else {
            out.println("Path info is null, no file to lookup");
        }
    }
}
4

3 回答 3

0

如果您尝试检索与 URL 路径对应的文件系统路径,请尝试getServletContext().getRealPath("your_path").

于 2013-08-18T02:44:35.520 回答
0

试试这条线:

request.getRequestURI().substring(request.getContextPath().length())

于 2013-08-18T03:03:04.490 回答
0

在 servlet 容器无法确定 getRealPath 或 getPathTranslated 方法的有效文件路径的情况下,例如当 Web 应用程序从存档、本地无法访问的远程文件系统或数据库中执行时,这些方法必须返回 null。

getPathTranslated 方法计算请求的 pathInfo 的真实路径。

如果没有这种情况,请检查部署描述符中的 Servlet 映射。

如果你有这样的情况:

<url-pattern>*.xhtml</url-pattern>

那么您必须知道观察到的路径元素行为如下(假设您的请求路径是/myapp/admin/mypage.xhtml)

ContextPath: /myapp
ServletPath: /admin/mypage.xhtml
PathInfo: null

希望它能帮助您从不同的角度分析问题。

于 2016-06-14T13:58:50.180 回答