java - 如何配置在 Tomcat 容器中运行的 Java Servlet 以提供 HTML 文件(无 JSP)

标签 java tomcat servlets

我想配置一个简单的 Tomcat 容器来提供 HTML 文件。请注意,这个问题与这个旧问题非常相似:

Can't display images in JSP

但是,如果可能的话,我不想使用 JSP,因为它似乎是一项正在消亡的技术,我不想花很多时间在即将淘汰的东西上学习。

HomeServlet.java:

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
    response.setContentType("text/html;charset=UTF-8");

    try {
        RequestDispatcher view = request.getRequestDispatcher("/webapp/html/home.html");
        view.forward(request, response);
    }
    catch(Exception ex) {

        // do nothing bc idk what I'm doing

    }
}

web.xml:

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>home</servlet-name>
    <servlet-class>com.rigatron.rigs4jj.Servlets.HomeServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>home</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

Directory Structure (note location of the home.html file)

我以前也遇到过类似的问题,当时我只是使用上面链接的解决方案。但是我不想在这个项目中使用 JSP。有没有办法配置 Tomcat 的默认目录,以便我可以知道我的路径在运行时的相对位置?

顺便说一句,我应该提一下这个应用程序是要部署在 Heroku 上的。 Heroku 部署 Tomcat 应用程序的方式是使用一个名为“webapp-runner”的 jar 包装器。这是该依赖项的 Maven 描述:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.3</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals><goal>copy</goal></goals>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>com.github.jsimone</groupId>
              <artifactId>webapp-runner</artifactId>
              <version>8.5.11.3</version>
              <destFileName>webapp-runner.jar</destFileName>
            </artifactItem>
          </artifactItems>
        </configuration>
      </execution>
    </executions>
  </plugin>

然后我使用命令“java -jar target/dependency/webapp-runner.jar target/*.war”在本地运行我的应用程序。

最佳答案

您的 servlet com.rigatron.rigs4jj.Servlets.HomeServlet 处理所有请求(包括对 index.html 等静态内容的请求)。

因此从 web.xml 中删除 servlet 或更改其 servlet 映射。然后 Tomcat 将为您的静态上下文提供服务。

关于java - 如何配置在 Tomcat 容器中运行的 Java Servlet 以提供 HTML 文件(无 JSP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44081203/

相关文章:

java - 如何通过java邮件将ZipInputStream作为附件发送?

java - 将 Curl 转换为 Java 等价物

javax.net.ssl.SSLHandshakeException : Remote host closed connection during handshake

java - 关闭jsp窗口

java - TomEE/Tomcat - 部署后运行一些东西

java - IntelliJ 2017 中没有代码覆盖率

tomcat - 我在哪里可以告诉 Tomcat 已部署应用程序的数据要存储在哪里?

oracle - JDBC 类型 : -9 没有方言映射

java - HTML 和 CSS 引用跳出我的 Tomcat 上下文

java - 与其他 'server' 应用程序相比,servlet 的用途、重要性