1

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

谢谢,泰奥

4

5 回答 5

1

您可以@WebServlet在 servlet 3.0 及更高版本中使用注释,不确定这是否适合您的要求,如果这不是您想要的方式,请发表评论

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// code code code
}
于 2012-08-03T07:50:56.787 回答
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

于 2012-08-03T08:23:37.400 回答
0

如果您使用的是 Tomcat 7.x / Servlet 3.0,您可以通过编程方式添加一个 servlet 过滤器来动态启用/禁用对某些 servlet 的访问,而无需接触您的 web.xml 文件或应用程序代码。

于 2012-08-03T08:30:16.383 回答
0

我只是创建一个 Web 过滤器,它读取某种配置并在特定的配置路径上传递或重定向。

另一种选择是阻止安全层上的路径,例如 Spring Security(实际上它使用如上所述的东西)。

于 2012-08-03T08:31:06.533 回答
0

创建一个过滤器(一个实现的类javax.servlet.Filter)怎么样,然后在一个xmlproperties文件中,甚至在 中database,您可以添加用户可以访问或无法访问的 servlet 名称。

于 2012-08-03T08:32:14.527 回答