我想配置一个简单的 Tomcat 容器来提供 HTML 文件。请注意,这个问题与这个旧问题非常相似:
但是,如果可能的话,我不想使用 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>
我以前也遇到过类似的问题,当时我只是使用上面链接的解决方案。但是我不想在这个项目中使用 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/