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

时间:2017-05-20 02:02:57

标签: 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”。

1 个答案:

答案 0 :(得分:0)

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

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