我对 servlet 非常陌生。我想提供一些静态文件、一些 css 和一些 javascript。这是我到目前为止所得到的:
在 web.xml 中:
<servlet>
<description></description>
<display-name>StaticServlet</display-name>
<servlet-name>StaticServlet</servlet-name>
<servlet-class>StaticServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StaticServlet</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
我假设在StaticServlet
中我必须使用request.getPathInfo
来查看请求的内容,获取mime类型,读取文件并写入它给客户。
如果这不是可行的方法,或者不是可行的做事方法,请提出更好的方法。
我不太确定将 static
目录放置在哪里,因为如果我尝试打印 new File(".")
它会给我 Eclipse 安装的目录。
有没有办法找到项目的目录?
最佳答案
您确实可以让 servletcontainer 的 DefaultServlet
来处理这个问题。
要回答您的实际问题,即使只是出于学习目的,您也可以使用 ServletContext#getRealPath()
将相对 Web 路径转换为绝对本地磁盘文件系统。
String relativeWebPath = "/static/file.ext";
String absoluteFilePath = getServletContext().getRealPath(relativeWebPath);
File file = new File (absoluteFilePath);
// ...
关于java - 关于从 servlet 提供静态文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930497/