1. 程式人生 > >做網上商城項目的一點記錄

做網上商城項目的一點記錄

重命名 ons blog 方式 序列化 aps 兼容 start 逆向工程

1. 註意事項:

1. @註解相關

1. StringUtils中的isBlank與isEmply區別(org.apache.commons.lang3.StringUtils此包中)

  StringUtils.isEmpty():參數如果是null、”” 返回true

  StringUtils.isBlank():參數是null、””、” ” 都返回true

2. JS中,提交表單時若果是:$(“#formName”).serialize()

  指的是將表單內容序列化成key-value形式(提交到後臺可以直接匹配一個pojo)

3. @RequestBody 放在方法參數前,會把頁面請求中的json字符串封裝到該註解後面的pojo中(spring自動完成將json字符串轉Java對象再封裝到pojo中,且js中需定義 contenttype=application/json)

  3.1. json字符串和json對象的轉換:

    var bToObject=JSON.parse(b);

  3.2. json對象轉為json字符串:

    var aToString=JSON.stringify(a);

4. @ResponseBody 放於方法上面,將函數的返回結果直接響應給頁面(json數據或字符串)

5. 將密碼加密可以直接使用spring的一個包下的工具:

user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes()));

6. 編寫service時,不要加try,catch語句,因為aop會根據是否出現異常來選擇進行回滾,如加上try-catch語句,則不會回滾!

答:解決方案不寫try-catch語句或在catch語句中手動回滾。

7. Controller中如從頁面接收的數據如果包含多個形參,可以用包含這些形參屬性的pojo來接收,spring會自動註入這些屬性信息,沒有對應的屬性應用形參來接收。

8. 有時需要手動啟動SQLserver :doc中命令:net start sql

9. 表中 text類型為較大的文件,選擇非主鍵查詢時必須用:selectByExampleWithBLOBs(example)

如: List<TbItemParam> list = itemParamMapper.selectByExampleWithBLOBs(example);

10. 如何加載屬性文件的值

創建一個屬性文件 ---> 使用spring容器掃描屬性文件 ---> @Value註解取屬性的值。

11. @ResponseBody:其實是直接調用response.write()把結果返回給瀏覽器;(默認會將Java對象轉換成json數據),而這樣有些瀏覽器不能直接接受json數據,會造成不兼容問題,因此返回String是最好的選擇(手動將Java對象轉換成字符串)

12. @RequestMapping(value = "/user/{userId}",produces=MediaType.TEXT_HTML_VALUE+”;charset=utf-8”)

答:他就是一個請求路徑的占位符,它可以通過@PathVariable("userId") 綁定到操作方法的參數中

@RequestMapping(value = "/user/{userId}/{userName}")

public String loginPage(@PathVariable String userId, @PathVariable String userName) {

...

}

而produces=MediaType.TEXT_HTML_VALUE+”;charset=utf-8”表示通知瀏覽器返回的類型是HTML,應采取相應方式解析

另:/user/*/login:匹配/user/xxx/login、/user/yyy/login

/user/**/login: 匹配/user/login、/user/aaa/login

/user/login??: 匹配/user/loginaa、/user/loginbb

/user/{userId}: 匹配 /user/123、/user/456

/user/**/{userId} : 匹配 /user/aaa/bbb/123、/user/xxx/345

13. cartItem.getId().longValue() == longId 當兩個Long類型比對時,== 比較的是其內存地址,因註意轉換成數值再進行比對!

14. 每一個子工程中的pom.xml配置完之後,會自動導入jar包到eclipse中,其實是從本地倉庫拷貝到了C:/User/19650/.m/…下並導入eclipse,如提示缺包可自行拷貝到該路徑下。

15. packing有三種:

1. pom方式:創建聚合工程;

2. jar方式:生成可以引用的jar包;(如創建的taotao-common工具類maven工程)

3. war方式:創建帶有Web資源文件的包。每個聚合工程中都應該至少包含一個war包。

16. 在Maven中,任何一個依賴、插件或者項目構建的輸出,都可以稱之為構件。

Maven在某個統一的位置存儲所有項目的共享的構件,這個統一的位置,我們就稱之為倉庫。(倉庫就是存放依賴和插件的地方)

2. 問題集合:

1. 遇到java.util.zip.ZipException: invalid LOC header問題

答:是由於eclipse中的mavenuser setting中的路徑指向默認是C:user/*/repository 所以每次設置完依賴後都會從Maven的本地倉庫中將相關jar包復制到C對應目錄盤下,再將其導入到eclipse

http://blog.csdn.net/limingjian/article/details/53925001

2. Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean

答:出現這種錯誤,通常是由於您已啟動了另一個tomcat 進程,導致報錯。

解決方法:

鼠標點擊 X 進行關閉運行失敗的 Console頁,(如果運行多次,程序的console都只會放在這裏)

3. navicat mysql導入數據sq文件時 USING BTREE 錯誤

答:只需要將sql文件之中的USING BTREE放在括號前面就好了。

另外,如果提示說第一句錯誤’/*(註釋信息),可以試試將SQL文件轉為UTF-8無BOM編碼格式’

4. 配置springmvc.xml出現的問題:

4.1. The matching wildcard is strict, but no declaration can be found for element ‘context:component-scan‘.

4.2. cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element ‘mvc:annotation-driven‘.

schema_reference.4: Failed to read schema document ‘http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd‘, because 1) could not

find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.

答:一般是命名空間有誤,修改順序即可

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

5. 逆向工程生成mapper包和pojo包出現Result Maps collection already contains value for xyx.dsw.dao.mapper.admin.quotationwish.TempTestTableMapper.TempTestTableResult錯誤

答:檢查是否手滑生成了2次,生成的mapper的xml文件會追加。

6. 一般提示log4j找不到,可以自己新建一個log4j.properties文件,並保證在web.xml中log4j的配置和監聽器在spring的前面。

3. Linux常見操作命令:

常用指令

  1. ls 顯示文件或目錄

-l 列出文件詳細信息l(list)

-a 列出當前目錄下所有文件及目錄,包括隱藏的a(all)

  1. mkdir 創建目錄

-p 創建目錄,若無父目錄,則創建p(parent)

  1. cd 切換目錄
  2. touch 創建空文件
  3. echo 創建帶有內容的文件。
  4. cat 查看文件內容
  5. cp 拷貝
  6. mv 移動或重命名
  7. rm 刪除文件

-r 遞歸刪除,可刪除子目錄及文件

-f 強制刪除

例:rm –rf /ect/fdfs/

rm fdfs* -f

  1. find 在文件系統中搜索某文件
  2. wc 統計文本中行數、字數、字符數
  3. grep 在文本文件中查找某個字符串
  4. rmdir 刪除空目錄
  5. tree 樹形結構顯示目錄,需要安裝tree包
  6. pwd 顯示當前目錄
  7. ln 創建鏈接文件
  8. more、less 分頁顯示文本文件內容
  9. head、tail 顯示文件頭、尾內容
  10. ctrl+alt+F1 命令行全屏模式

打包壓縮相關命令

  1. gzip:
  2. bzip2:
  3. tar: 打包壓縮

-c 歸檔文件

-x 壓縮文件

-z gzip壓縮文件

-j bzip2壓縮文件

-v 顯示壓縮或解壓縮過程 v(view)

-f 使用檔名

例:

  1. tar -cvf /home/abc.tar /home/abc 只打包,不壓縮
  2. tar -zcvf /home/abc.tar.gz /home/abc 打包,並用gzip壓縮
  3. tar –zxvf /home/abc.tar.gz /home/abc 解壓
  4. tar -jcvf /home/abc.tar.bz2 /home/abc 打包,並用bzip2壓縮

當然,如果想解壓縮,就直接替換上面的命令tar -cvf / tar -zcvf / tar -jcvf 中的“c” 換成“x” 就可以了。

做網上商城項目的一點記錄