閱讀SSH項目之ERP
前言
本博文主要是記錄我閱讀過的SSH項目所學習到的知識,並不是相關係列教程。該SSH項目的gitHub地址:ERP項目地址
刪除數據
實際業務中真正意義上的數據刪除操作比較少見,多數情況是在數據中設置標記,通過標記的值來區分該數據是否可以用,而不是將數據真正的刪除。
根據業務需求,為數據添加標記位,同時對數據的維護中添加啟用/停用切換按鈕,用於替換刪除業務。所有的查詢操作默認攜帶條件值為標記為可以的數據。除特殊業務外,標記為不可用的數據將不參與日常數據操作。
javaScript數值數據操作
javascript中如果需要對頁面組件獲取的值進行數字加操作,必須保障兩個操作數據都是數字,否則將進行字元串連接運算。此處使用*1操作,將字元串快速轉換為數字格式
代碼生成器
由於我們的Dao、Service、Controller、配置文件都有很多重複的地方,我們可以通過「代碼生成器」來將我們的文件生成出來。
主要是依靠反射和IO的技術來進行生成對應的文件
我個人認為它不夠通用、如果使用SSM來進行開發的話,那這段代碼的用處就不大了,並且還要遵循它固有的習慣開發。
主要是看看原來還能有這種操作!
攔截器捕獲異常
一般地,我們都是Dao、servcie層都把異常拋出,最後由Action來進行捕獲。如果所有的Action都要捕獲異常的話,那麼就多了很多的重複代碼。
因此,我們可以使用攔截器來進行統一捕獲。
修改角色許可權無法同步的問題
如果用戶已經登錄,此時修改登錄用戶的角色信息或角色對應的資源信息。由於用戶的數據已經存在於Session中,無法及時進行數據同步。
解決方案:
在ServletContext範圍內設置集合變數changeEmp,當管理員維護到某個員工的角色時,將該員工的OID放入該集合;
當管理員維護到某個角色的資源時,將該角色對應的所有員工OID放入該集合。
在登錄校驗時,獲取完登錄信息後,再次獲取該集合,查看當前用戶OID是否存在於該集合。如果存在於該集合中,清空當前登錄人信息,將員工OID從集合中刪除,同時跳轉到登錄界面。
將要修改的用戶保存到集合中(記錄被修改的用戶)
等到校驗的時候發現該用戶是否被修改過(在集合中是否存在),如果存在,那麼則強制註銷,跳轉回登陸頁面
配置數據源
一般地,我們做開發都是直接使用tomcat來連接資料庫,但是如果資料庫的地址變化的時候,我們就要手動去修改連接的地址了。這樣會造成一些不必要的麻煩。
所以,官方是推薦我們使用JNDI來配置數據源,使用JNDI來連接資料庫的。這樣即使資料庫的地址變了,我們就不用手動去修改連接的地址。
步驟如下:
修改tomcat安裝目錄/conf/context.xml,添加如下配置
配置Web應用使用Tomcat數據源,修改WEB-INF/web.xml,添加如下配置
接著來spring中配置我們的數據源,是從JNDI從查找出來的。
JNDI的命名,不同web伺服器有不同的書寫格式:
許可權控制菜單樹
每個菜單樹需要的許可權可能是不一樣的,要想用許可權系統去管理菜單樹,就要把菜單樹寫成是動態的。
菜單模型設計如下:
菜單名稱,菜單編號,所屬父級菜單對象,菜單對應訪問路徑
在查詢的時候用到了自關聯
商品聯動
在頁面載入的時候,查詢出所有供應商的數據、查詢第一個供應商商品的類別以及第一個商品類別對應的所有信息集合。那麼在頁面上我們就可以將其展示出來了。
隨後如果發生了改變的話,那麼還是使用ajax來進行聯動。
在添加新項的時候,對應的聯動還是需要保持的,因此需要在外面套一層ajax來獲取具體的數據!
可以使用兩種方式來進行控制數據:
SQL控制:
程序控制:
Juqery未來對象
如果在生成的代碼不是當前對象的,那麼綁定的事件就無法被激活了。因此需要使用live去激活未來對象。
2018年3月11日18:01:31更新!
Jquery高版本已經捨棄這個方法了,改成了on方法
訂單設計
我們的訂單可能分很多種:採購訂單、銷售訂單、採購退貨單、銷售退貨單
一般地,我們都不會將它們四種都用欄位來表示出來,僅僅使用訂訂單狀態欄位進行了區分
TAG:Java3y |