禁用对 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
}
}
这种方法没有我上面解释的第一种方法的缺点,但是需要编写一些代码。
我正在使用 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
}
}
这种方法没有我上面解释的第一种方法的缺点,但是需要编写一些代码。