Jakarta ee 在struts中查找action类的命中数

Jakarta ee 在struts中查找action类的命中数,jakarta-ee,struts2,Jakarta Ee,Struts2,有没有可能在struts中找到一个action类被访问的次数?访谈问题?一种可能的解决方案是将其存储在数据库/应用程序上下文或文件中,因为Struts2操作也可以作为数据对象使用,所以框架为每个请求创建一个唯一的操作实例,以使其线程安全。 您可以在prepare方法中添加计数器逻辑,该方法将在任何操作方法调用之前被调用 在这之前,还有许多问题需要回答 在很多情况下,实际操作不会被调用,拦截器会发回流 我们所说的动作调用是指动作的特定方法调用,还是仅指动作实例创建 我们不能将逻辑放在拦截器中,因为

有没有可能在struts中找到一个action类被访问的次数?访谈问题?

一种可能的解决方案是将其存储在数据库/应用程序上下文或文件中,因为Struts2操作也可以作为数据对象使用,所以框架为每个请求创建一个唯一的操作实例,以使其线程安全。 您可以在prepare方法中添加计数器逻辑,该方法将在任何操作方法调用之前被调用

在这之前,还有许多问题需要回答

  • 在很多情况下,实际操作不会被调用,拦截器会发回流
  • 我们所说的动作调用是指动作的特定方法调用,还是仅指动作实例创建

  • 我们不能将逻辑放在拦截器中,因为拦截器不是为每个请求创建的,在拦截器中保存特定于操作的数据是不安全的。

    是的,是的。解析容器的访问日志

    这是最通用、最灵活、最常见的解决方案,有很多工具可以做到这一点

    如果这不是一个可接受的答案(如果不是,而且这是一次采访,请担心),那么我实际上会使用一个过滤器或拦截器来实现这一点,通过同步写入访问保持由URL键入的映射,在每个请求上更新URL的计数(减去查询字符串,如果存在的话)。如果需要持久化,则可以


    再加上S2配置的组合,您可以非常准确地查看请求统计信息。

    每次通话时,静态字段会增加(在同步范围内)吗?这不是一个好的面试问题。@Stevenbeintez:我完全同意您的看法,但问这样的问题很常见。