禁用对 Servlet 的访问

Disable access to a Servlet

我正在使用 JavaEE 开发一个 WebApp,我使用一个 servlet 来测试一些东西。

目前,我的 WebApp 设置为当我转到本地 url localhost:8080/myApp/test 时,我可以 运行 我的 test Servlet。

我的计划是将我的项目部署到 Web,我想禁用 Servlet,但不删除它。我的意思是,如果将来我通过 URL www.myNewWeb.com/test 访问我的远程服务器,我希望它抛出一个错误而什么都不做。

我该怎么做?

这里有很多可能的选项:

选项 1

删除映射(注解@WebServlet或url映射条目在web.xml中)。在这种情况下,任何调用此 servlet 的尝试都将以您选择的 JEE 容器生成的错误结束。它会尝试将 servlet 映射到 URL,显然会失败并抛出异常

此方法的明显缺点是您需要更改部署配置,如果您想要 运行 在该 servlet 应该工作的另一个环境中使用相同的工件,您将无法这样做。

选项 2

创建某种配置,将此配置与您的应用程序一起加载。 在 doGet(仅作为示例)方法中执行如下操作:

  public void doGet(request, response) {
     if(config.isTestServletEnabled()) { // this is where the data gets read from configuration that I've talked about before
        // do your regular processing here
     }
     else {
        // this will happen when the servlet should not be activated 
        // throw an exception, return HTTP error code of your choice, etc
      } 
  } 

这种方法没有我上面解释的第一种方法的缺点,但是需要编写一些代码。