我想知道是否有一种方法可以启用或禁用除web.xml之外的servlet(或至少是servlet的映射)。我有多种服务器使用相同的web.xml(我无法改变这一点)所以这就是为什么另一种启用/禁用servlet的方法会很有用。
谢谢, TEO
答案 0 :(得分:1)
您可以在servlet 3.0之后使用@WebServlet
注释,不确定这是否适用于您的要求,如果这不是您想要的方式,请发表评论
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// code code code
}
答案 1 :(得分:0)
据我所知,除了部署描述符之外,没有其他程序可以禁用servlet。
我接近这样一个问题的方式如下:
- 我会在每个servlet service()方法中添加一个if语句,我想控制访问权限,如:
if(MyCustomSecurity.isServletAccessible(request)){
//here is your code that you have right now
}else{
//redirect request to an error page maybe
}
在MyCustomSecurity类中创建此方法isServletAccessible(),该类将在天气上返回布尔值,允许用户加入servlet
答案 2 :(得分:0)
如果您使用的是Tomcat 7.x / Servlet 3.0,则可以通过编程方式添加servlet过滤器,以动态启用/禁用对某些servlet的访问,而无需触及web.xml文件或应用程序代码。
答案 3 :(得分:0)
我只是创建一个Web过滤器,它可以读取某种配置,并在特定的已配置路径上传递或重定向。
另一种选择是阻止安全层上的路径,例如Spring Security(实际上它使用了如上所述的东西)。
答案 4 :(得分:0)
如何创建过滤器(实现javax.servlet.Filter
的类),然后在xml
或properties
文件中,甚至在database
中,您可以添加用户可以访问或无法访问的servlet名称。