我只创建了一个最小的 Web 应用程序(出于学习目的),但当我从 Dockerfile 映像运行它时,我无法设置上下文路径(但当我不以这种方式使用它时,它工作得很好)。在我的多阶段 Dockerfile 中,我构建了应用程序,然后在 tomcat 下使用它。这是用于此目的的线路:
COPY --from=builder /app/target/*.war $CATALINA_HOME/webapps/
这是我的 servlet 的代码:
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/firstTest")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");//setting the content type
PrintWriter pw=response.getWriter();//get the stream to write the data
//writing html in the stream
pw.println("<html>");
pw.println("<body>");
pw.println("Welcome to servlet");
pw.println("</body>");
pw.println("</html>");
pw.close();//closing the stream
}
}
我的项目名称是 servletjdbc,因此它会生成一个战争和一个版本为 servletjdbc-1.0-SNAPSHOT 的地图。我可以用 http://localhost:8080/servletjdbc-1.0-SNAPSHOT/ 和 http://localhost:8080/servletjdbc-1.0-SNAPSHOT/firstTest
但我想用 http://localhost:8080 和 http://localhost:8080/firstTest
我尝试在我的 web.xml 中放入如下内容:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</context-param>
,但我收到消息: 此处不允许使用元素参数名称 此处不允许使用元素参数值
我的 web.xml 现在是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
</web-app>
我的错误可能是什么?
如果我可以提供任何必要的附加信息,请告诉我。
非常感谢您提前提供的帮助。