做網上商城項目的一點記錄
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常見操作命令:
常用指令
- ls 顯示文件或目錄
-l 列出文件詳細信息l(list)
-a 列出當前目錄下所有文件及目錄,包括隱藏的a(all)
- mkdir 創建目錄
-p 創建目錄,若無父目錄,則創建p(parent)
- cd 切換目錄
- touch 創建空文件
- echo 創建帶有內容的文件。
- cat 查看文件內容
- cp 拷貝
- mv 移動或重命名
- rm 刪除文件
-r 遞歸刪除,可刪除子目錄及文件
-f 強制刪除
例:rm –rf /ect/fdfs/
rm fdfs* -f
- find 在文件系統中搜索某文件
- wc 統計文本中行數、字數、字符數
- grep 在文本文件中查找某個字符串
- rmdir 刪除空目錄
- tree 樹形結構顯示目錄,需要安裝tree包
- pwd 顯示當前目錄
- ln 創建鏈接文件
- more、less 分頁顯示文本文件內容
- head、tail 顯示文件頭、尾內容
- ctrl+alt+F1 命令行全屏模式
打包壓縮相關命令
- gzip:
- bzip2:
- tar: 打包壓縮
-c 歸檔文件
-x 壓縮文件
-z gzip壓縮文件
-j bzip2壓縮文件
-v 顯示壓縮或解壓縮過程 v(view)
-f 使用檔名
例:
- tar -cvf /home/abc.tar /home/abc 只打包,不壓縮
- tar -zcvf /home/abc.tar.gz /home/abc 打包,並用gzip壓縮
- tar –zxvf /home/abc.tar.gz /home/abc 解壓
- tar -jcvf /home/abc.tar.bz2 /home/abc 打包,並用bzip2壓縮
當然,如果想解壓縮,就直接替換上面的命令tar -cvf / tar -zcvf / tar -jcvf 中的“c” 換成“x” 就可以了。
做網上商城項目的一點記錄