我试图实现方法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");
}
}
}
答案 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
希望它能帮助您从不同的角度分析问题。