getpathtranslated返回null

时间:2013-08-18 02:25:47

标签: java java-ee servlets

我试图实现方法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");
        }
    }
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

试试这一行:

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

答案 2 :(得分:0)

  

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

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

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

如果您遇到类似情况:

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

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

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

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