我正在使用Tomcat服务器来运行部署为WAR的应用程序。该应用程序不提供静态内容或JSP。是否有办法禁用默认servlet和jsp servlet?
ajsxfq5m1#
从未尝试过,但应该足以禁用所有连接器:编辑conf/server.xml并删除所有<Connector>条目(默认情况下应该有一个活动的HTML连接器)。重新启动并检查服务器是否仍按预期工作。
conf/server.xml
<Connector>
oalqel3c2#
是的,有可能。Servlet容器通常与默认Servlet一起提供。Tomcat也是has one。您可以通过删除conf/web.xml中与<servlet-name>default</servlet-name>关联的条目来禁用它。删除<servlet>条目和关联的<servlet-mapping>条目。同样的操作也可以用于<servlet-name>jsp</servlet-name>。但是这个解决方案是依赖于容器的,所以如果你把Web应用程序放到一个不同的容器中,而你忘记删除默认的servlet,那么你的应用程序的行为会有一些不同。独立于容器的解决方案是创建自己的默认servlet,从而覆盖容器提供的默认servlet(如Tomcat)。可以通过创建具有所需行为的servlet并将其Map到"/"来实现这一点。例如:
conf/web.xml
<servlet-name>default</servlet-name>
<servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
"/"
public class MyDefaultServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.sendError(404); } }
当被访问时,它应该总是抛出HTTP 404(NOT FOUND),否则它将在每个未定义的URL请求上返回HTTP 200(OK)。在web.xml中:
NOT FOUND
OK
<servlet> <servlet-name>myDefaultServlet</servlet-name> <servlet-class>example.demo.MyDefaultServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myDefaultServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2条答案
按热度按时间ajsxfq5m1#
从未尝试过,但应该足以禁用所有连接器:编辑
conf/server.xml
并删除所有<Connector>
条目(默认情况下应该有一个活动的HTML连接器)。重新启动并检查服务器是否仍按预期工作。oalqel3c2#
是的,有可能。
Servlet容器通常与默认Servlet一起提供。Tomcat也是has one。您可以通过删除
conf/web.xml
中与<servlet-name>default</servlet-name>
关联的条目来禁用它。删除<servlet>
条目和关联的<servlet-mapping>
条目。同样的操作也可以用于<servlet-name>jsp</servlet-name>
。但是这个解决方案是依赖于容器的,所以如果你把Web应用程序放到一个不同的容器中,而你忘记删除默认的servlet,那么你的应用程序的行为会有一些不同。
独立于容器的解决方案是创建自己的默认servlet,从而覆盖容器提供的默认servlet(如Tomcat)。可以通过创建具有所需行为的servlet并将其Map到
"/"
来实现这一点。例如:
当被访问时,它应该总是抛出HTTP 404(
NOT FOUND
),否则它将在每个未定义的URL请求上返回HTTP 200(OK
)。在web.xml中: