2012-08-06 40 views
0

是否有可能找到動作類在struts中被訪問的次數?面試問題?在struts中查找動作類的命中數

+1

靜態字段在每次調用中會增加(同步內)嗎? – Korgen 2012-08-06 09:22:34

+1

不是一個很好的面試問題。 – 2012-08-06 13:18:57

+0

@StevenBenitez:我完全同意你的看法,但很常見的是提出這樣的問題。 – 2012-08-06 13:56:13

回答

1

是的。解析容器的訪問日誌。

這是最通用的,最靈活的,最常見的解決方案,並且有很多工具可以做到這一點。

如果這不是一個可以接受的答案(如果不是,並且這是一個採訪,恐怕),那麼我實際上是通過過濾器或攔截器來做到這一點,訪問,在每個請求上更新URL的計數(減去查詢字符串,如果存在)。如果需要堅持,它可以。

這和S2配置的組合會給你一個相當精確的請求統計視圖。

0

一個可能的解決方案是將其存儲在數據庫/應用程序上下文或文件中,因爲Struts2操作也可以作爲數據對象,所以框架爲每個請求創建一個唯一的Action實例,以使它們安全。 您可以將您的計數器邏輯添加到準備方法中,該方法將在任何Action方法調用之前調用。

還有很多需要回答的問題。

  1. 有很多情況下,實際行動將不會被調用,攔截器將發回流量。
  2. 通過操作call我們指的是具體的方法動作調用或僅動作實例創建。

我們不能將邏輯放在攔截器中,因爲攔截器並不是爲每個請求創建的,而且它也不安全,以便在攔截器中保存特定於動作的數據。