以web.xml以外的方式启用/禁用servlet

时间:2012-08-03 07:48:22

标签: java java-ee tomcat servlets web.xml

我想知道是否有一种方法可以启用或禁用除web.xml之外的servlet(或至少是servlet的映射)。我有多种服务器使用相同的web.xml(我无法改变这一点)所以这就是为什么另一种启用/禁用servlet的方法会很有用。

谢谢, TEO

5 个答案:

答案 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的类),然后在xmlproperties文件中,甚至在database中,您可以添加用户可以访问或无法访问的servlet名称。