Servlets 禁用对Servlet的访问

Servlets 禁用对Servlet的访问,servlets,jakarta-ee,Servlets,Jakarta Ee,我正在使用JavaEE开发一个WebApp,并使用servlet测试一些东西 目前,我的WebApp设置为当我转到我的本地urllocalhost:8080/myApp/test时,我可以运行我的testServlet 我的计划是将我的项目部署到Web,我想禁用Servlet,但不删除它。我的意思是,如果将来我通过URLwww.myNewWeb.com/test访问我的远程服务器,我希望它抛出一个错误,并且什么都不做 我该怎么做呢?这里有很多可能的选择: 选项1 删除映射(注释@WebServl

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

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

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


我该怎么做呢?

这里有很多可能的选择:

选项1

删除映射(注释
@WebServlet
web.xml
中的url映射项)。在这种情况下,任何调用此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
      } 
  } 

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

取决于您所说的禁用、完全禁用或在某些情况下禁用,或者。。。????如果你只是想把它留在那里,而不能从网络上访问它,你可以简单地删除它的映射,但我不确定你到底想要什么。是的,我想完全禁用它。感谢从
web.xml
文件中删除servlet的映射,或者如果使用了注释(servlet spec 3.0+),请删除
@WebServlet
注释以及提供的servlet路径。