Geo*_*Geo 0 java static servlets
我对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>
Run Code Online (Sandbox Code Playgroud)
我假设在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);
// ...
Run Code Online (Sandbox Code Playgroud)