java - 关于从 servlet 提供静态文件的问题

标签 java servlets static

我对 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/

相关文章:

java - Hibernate 数据源连接未关闭

java - 多文件上传jsp & servlet

tomcat - 我可以在 servlet 映射中组合这些 url 模式吗?

java - java中的静态方法

C++ - 在派生类中静态初始化基类保护的成员变量

java - 如何在前台打开 chrome 驱动程序(使用 Selenium Webdriver)。默认情况下它在没有焦点的背景中打开

java - Spring Boot 项目的 JUnit 和 Mockito 依赖项

java - 回收者 View 不显示项目

java - 网站在本地工作,但是当部署在 Tomcat 服务器上时,它不再找到 Servlet

java - 静态与新对象