最近我正在學習Spring。我創建了一個簡單的Web應用程序,基本上應該有2種類型的用戶:Spring MVC - Spring Security - 控制器通用架構 - 最佳實踐
- 客戶
- 聯繫
你能想象的應用作爲一個典型的購物web應用程序,其中管理員有權限添加新項目,客戶可以看到列出的項目並添加到他們的購物車。 我的問題是關於系統的通用體系結構,它應該是Spring Framework的最佳實踐示例之一。
我可以在這裏列出的點有關這一建築的決定,你能告訴我,你是否會以另一種方式做這些:
我有2級不同的調度員的servlet。因此,公衆下的網址將用於客戶,管理員將用於管理員。
<servlet-mapping>
<servlet-name>public-dispatcher</servlet-name>
<url-pattern>/public/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>admin-dispatcher</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
2-在Spring-security.xml文件我有一個這樣的管理認證:
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
(所有的URL /管理之下的行動/將密碼保護)
每個Servlet都有一個viewResolver指向一個不同的文件夾,其中包含jsps:
/WEB-INF/admin-jsp/ (admin jsps)
/WEB-INF/public-jsp/ (customer jsps)
4-可以說我有這些域對象:Item,ShoppingCart,Customer等。對於每個域對象,我有一個Controller類,即ItemController,它處理關於某個項目的所有請求(客戶和管理員)。
@Controller
@RequestMapping("/item")
@SessionAttributes({"cart"})
public class ItemController { ...
這些決定中的每一個,當我一個一個考慮他們時都是有意義的。但實際上,很顯然,因爲我沒有看到任何大的Spring應用程序(因特網包含很多小代碼部分,它們並不能提供有關整體的信息),所以這裏有些問題..
For Instance:我可以將這個url作爲customer/public/item/addNewItem(實際上是爲管理員)調用,並且該方法將被執行,因爲ItemController(/ item)對每個人都是可見的。但是因爲我在兩個不同的位置有jsps,所以Spring會拋出視圖不存在的錯誤。 同樣作爲一個管理員,當我可以打電話的URL /管理/項目/ addToCart ....
什麼是最好的拱門。實施整體?我應該在安全配置中定義更多的URL嗎?例如:
<intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
<intercept-url pattern="/admin/addNewItem" access="ROLE_ADMIN" />
OR
如果我有不同的角色定義不同的控制器?
@RequestMapping("/public/item")
@SessionAttributes({"cart"})
public class PublicItemController { ...
@RequestMapping("/admin/item")
public class AdminItemController { ...
OR
任何其他方式?在一個有很多角色,控制器等發生的大系統中應該如何實現。
謝謝。 4.點實際上更多關於控制器類計數專業領域對象,比基於註釋的配置;) – akcasoy 2013-05-06 11:15:39
啊,OK。在這種情況下,我可能會有單獨的控制器的管理員和公共項目控制器。 – ashario 2013-05-07 03:43:35