[Web基礎]使用SpringMVC編寫web程序的自我約定方法論

(1) 所有web請求的參數的解析和驗證,可以使用統一的ValidateService去做,每個方法和controller的每個方法一一對應,正確時返回解析後的輸入參數,錯誤時拋出異常,帶上錯誤原因的信息,如:

public User login(User user) {
        //驗證用戶名和密碼的合法性
        if (user == null || StringUtils.isBlank(user.getUsername())
                || !validateUsername(user.getUsername()) || StringUtils.isBlank(user.getPassword())
                || !validatePassword(user.getPassword())) {//用戶名或密碼不合法!
            String errorMessage = messageSource.getMessage(
                    "username.or.password.not.allow.key", null, LocaleContextHolder
                            .getLocale());
            throw new ValidateException(errorMessage);
        }
        return user;
    }

 

也可以使用《validation language 》 去驗證。

 

(2) 每個controller方法,都需要有2種結果:error,success

 

(3) xml文件的校驗,使用xsd

 

(4) 操作數據庫,注意對符合這2個條件的添加事務

     1. save和update,delete;

     2.同時操作2個表以上,或者對一個表處理2個記錄以上(批處理);

 

(5) sql語句, Where語句參數爲空時不能誤操作。

     對update,delete不能寫(對於query則可以這樣使用動態where):

      <dynamic prepend="WHERE">
            <isGreaterThan compareValue="0" prepend="and" property="id">
                ID = #id#
            </isGreaterThan>
        </dynamic>

        而應該:

WHERE
           ID = #id#
 

 

(6) 檢查程序中哪些地方是需要同步的(web本身就是多線程,所以controller,filter,servlet,service本身設計上已經考慮到),例如一個有狀態的對象被多線程訪問,考慮使用syncronized或併發包的集合對象;

 

(7) 創建一個完整的web.xml,創建404頁面和500頁面;

 

(8) 單元測試:

   傳統是JUnit,可以執行run的單元測試;

   對於web,常常需要容器才能run單元測試,因此有了testNG和play的JUint。

    testNG可以結合Spring自動載入bean然後再run,還可以結合mvn使用mvn test跑測試,數據庫測試的mork可以使用DbFit,DbFit使用wiki文件mork數據。

    play的JUnit更加強大,與框架集合在一起,使用play test命令,可以在web頁面跑單元測試,數據庫的mork使用YAML。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章