我想知道除了 web.xml 是否有办法启用或禁用 servlet(或至少 servlet 的映射)。我有多种使用相同 web.xml 的服务器(我无法更改它),所以这就是为什么另一种启用/禁用 servlet 的方法会很有用。
谢谢,泰奥
我想知道除了 web.xml 是否有办法启用或禁用 servlet(或至少 servlet 的映射)。我有多种使用相同 web.xml 的服务器(我无法更改它),所以这就是为什么另一种启用/禁用 servlet 的方法会很有用。
谢谢,泰奥
您可以@WebServlet
在 servlet 3.0 及更高版本中使用注释,不确定这是否适合您的要求,如果这不是您想要的方式,请发表评论
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// code code code
}
据我所知,除了部署描述符之外,没有诸如以编程方式禁用 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
如果您使用的是 Tomcat 7.x / Servlet 3.0,您可以通过编程方式添加一个 servlet 过滤器来动态启用/禁用对某些 servlet 的访问,而无需接触您的 web.xml 文件或应用程序代码。
我只是创建一个 Web 过滤器,它读取某种配置并在特定的配置路径上传递或重定向。
另一种选择是阻止安全层上的路径,例如 Spring Security(实际上它使用如上所述的东西)。
创建一个过滤器(一个实现的类javax.servlet.Filter
)怎么样,然后在一个xml
或properties
文件中,甚至在 中database
,您可以添加用户可以访问或无法访问的 servlet 名称。