工欲善其事必先利其器,最近我在作一個springmvc的項目,程序伊始,我採用了必定的java的jdk版本、Spring版本、Tomcat版本,但是進行了一段時間,就發現了很多問題,首先是分工協做,你們用的版本須要統一一下,我開始沒有在乎,後來寫了一段時間的程序發現有不少東西由於版本的不一樣而不一致,這個時候不得已又從新安裝了jdk的規定版本,以後是電腦出現的問題,早上我興致勃勃的起得很早去寫程序,誰知道電腦剛開始仍是好好的,後來卡在一個地方,結果好了以後鼠標忽然沒有反應了,當時的狀況是鼠標還亮着,我等了很久,不斷的移動都沒有用,因而我把鼠標拔了以後從新插了一下,結果只有一個固有的響聲以後,鼠標也不亮了,如此反覆不少次,屏幕上也沒有任何的提示,我在想是否是由於頻繁的操做再加上電腦的死機致使鼠標燒壞了,試了一下子決定去向同窗借一個鼠標試一下,結果也是同樣的狀況,這個時候我想沒這麼巧的事情了,會不會是電腦的接口燒了?!因而我又把鼠標插在了電腦的不一樣端口上,結果都是同樣,我在想不會這麼巧合吧,因而看了一下電腦的磁盤,發現C盤只剩下6GB了,我趕忙把一些能夠移除的東西從C盤上清理了,又用了驅動精靈掃描了一下電腦的硬件,結果沒有什麼問題,而後想着再重啓一下試試,就這樣又重啓了一下結果能夠了,個人天,原來個人問題居然這麼簡單,其實這也和我這個window10已經使用了將近一年有關係,常理來講Windows使用1年以上基本上就會出現這樣那樣的未知問題,須要重裝系統才能恢復,這也是Windows和類Unix系統的差異和短板。html
這個問題真是痠痛,這也是我寫這個小結的主要緣由,由於我按照網上說的,在preference中的java——>editor——>content assist中的enable auto activation以及相應的屬性都作了選擇和勾選,結果仍是一個樣子,我那個崩潰呀,網上的全部的解決辦法就是到這裏就結束了,這點讓我很不爽,後來我百思不得其解,在無心之中我看到了content assist的內部還有一些設置,當時真是如獲至寶呀,趕忙把它們所有選上,而後又試了一下,結果能夠了,哈哈,這個問題我想不是全部人能解決的,但願能幫到其餘人,也就是在content assist中的advanced中選擇須要的東西,最好所有勾上,而後再試一下,基本上是沒問題了!!!java
由於使用了遠程項目管理器,我須要從遠程pull代碼到本地,須要明確的是我已經在本地生成了公鑰和私鑰,而且把公鑰已經註冊到了服務器中,也就是服務器能理解我發的東西,因而使用了git clone來下載代碼,誰知道之前無往不利的這條命令結果沒用了,一直提示我輸入本身的密碼(這個很正常),成功以後還要輸入git服務器的密碼,但是遠程服務器是沒有設置密碼的呀,我那個醉呀,沒辦法,我試了好多遍,在網上找答案,發現各類各樣的狀況都能形成這樣的問題,很鬱悶,按着試了一下仍是沒有解決,最後我一氣之下把git卸載了,而且從新裝了一遍,又從新生成了公鑰和私鑰密碼對,而後再從新注入到遠程服務器,這個時候我再試一下,成不成就看此次的了,不過結果須要明天才知道了~~次日我試了一下git clone其餘網站的開源代碼居然能夠了,也就說明了這個問題是由對方的git中沒有添加個人公鑰形成的,可是實際上添加了,後來才知道是由於公鑰的格式不一樣形成的,也就是說權限問題來自於公鑰沒有準確添加到服務器上。
mysql
原本個人mysql是沒問題的,從開始使用到如今已經很長時間了,但是前一段時間由於某些緣由修改了mysql的密碼,而後完成了一些功能,後來又去作別的事情了,到了如今要使用的時候就出問題了,我用的是mysql workbench6.1,之前也表現了良好的性能,但是此次當我想在數據庫管理系統中建立一個數據庫的時候居然提示我權限不夠,具體的錯誤是:ERROR 1044 (42000): Access denied for user ''@'localhost' to database xxx;這就很糾結了,我原本認爲是一個小的問題,因而在網上搜了一下,確實也有許多解決辦法,又Windows系統下的mysql和Linux下的mysql解決辦法,我照着一個個試了一下,無外乎關閉mysql服務,而後暫停權限檢測,讓咱們進入mysql內部,而後修改mysql數據庫下的user表,把其中的某些字段刪除,這些字段通常是四個,一個user='',還有三個user='root',可是這三個的IP是不一樣的,根據錯誤提示,是第一個user,也就是默認的user出了問題,沒有權限訪問,我就把這個user刪除了,而且按照網上說的,使用flush privileges;更新了一下權限,這樣我以爲就能夠了,而且爲了簡單我還把剩下的三個user的password設置爲了'',這樣我想一切都會好起來的,誰知道我又打開了mysql workbench,嘗試建立一個數據庫,仍是出了問題,到這裏真的是筋疲力盡了,由於這小小的錯誤已經花去了我很長時間了,但是我仍是不甘心,最後想着再重裝一次mysql,後來才知道這是多麼失敗的一次嘗試,在沒有重裝系統以前,卸載mysql並重裝,默認的系統的配置都是存在的,並無更新,也就是說我仍是什麼都沒搞定,而且此次重裝,居然卡在了其中的一個關於Visual studio插件上面,想一想也是欲哭無淚呀,重裝了好屢次,卸載了不少次,最後總算搞定了,才發現之前如前,沒辦法,只能硬着頭皮在網上找答案,功夫不負有心人,我又嘗試了不少遍,有一次我想着不如給剩餘的三個user='root'的用戶加上密碼,我帶着這樣的心情試了一下,沒想到居然能夠了,打開workbench提示我輸入密碼,以後我嘗試建立數據庫居然徹底沒問題,有時候想一想真的是隻離成功一步之遙的時候,咱們每每會放棄呀,吸收了此次的教訓,我總結了一下個人解決方案。git
第一步:關閉mysql服務,個人版本是mysql56,能夠在服務中關閉,也能夠用命令關閉。web
第二步:切換目錄到mysql的安裝目錄的/bin下,而且關閉權限檢查,這用命令實現比較簡單,本質是操做my-default.ini文件。spring
命令:cd D:\software_setup\mysql_setup\MySQL Server 5.6\bin 對於有環境變量的不需如此sql
mysqld --defaults-file="D:\software_setup\mysql_setup\MySQL Server 5.6\my-default.ini" --console --skip-grant-tables數據庫
該命令若是成功,則這個cmd就被控制,不能輸入!windows
第三:另起一個cmd,進行刪除user=",而且修改user='root'的密碼。服務器
mysql -u root -p
use mysql
delete from user where user='';
update user set password=password('123456') WHERE User='root';
select host,user,password from user;
flush privileges;
第四:再試一次看結果如何,個人是成功了,我想應該會成功!
正當我高興的炫耀本身的成果的時候,我把mysqld進行關了,而後再來登陸workbench,結果居然又不行了,輸入密碼也一直提示報錯,忽然間有一種諷刺的感受,好像本身的作的東西都是無用功同樣,不過學到的就是學到了,雖然沒有解決相應的問題,因而我又仔細思考,罪魁禍首就是我曾經把密碼給更改了,以後我就進不去了,這是關鍵,因而我在想上一次我重裝mysql,系統保留了個人一些文檔和設置,那麼系統憑什麼東西來作到這一點的,因而我就想也不可讓系統失去這種能力,若是能夠的話,我就能夠成功的從新安裝了,而不是這樣的被動,事實證實還真是能夠的,咱們首先須要刪除之前安裝mysql的安裝目錄下的全部文件,以後咱們須要在C盤的programdata(隱藏文件)下面刪除對應的mysql文件夾,這樣還不夠釜底抽薪,這隻能像是一我的咱們把他的腳砸受傷了,而這我的還能夠恢復過來,那麼最絕的是什麼呢,咱們能夠把這我的的腳部神經所有破壞了,那麼這我的就再也沒有恢復的可能了,在電腦系統上也是如此,windows中註冊表就至關於這樣的神經網絡,一旦註冊表被攻擊或者被誤刪,那麼系統就喪失了勞動力了,而咱們之前刪除的東西頂多至關於把一我的的腳砸受傷了,因而咱們在註冊表中在相關的單元中刪除相應的鍵值,這樣咱們就完全的使得系統變成部分殘廢了,具體能夠參考https://jingyan.baidu.com/article/f96699bbaa8fc1894f3c1b5a.html而後咱們再來一個骨髓移植,也就是重裝mysql,而且本身設置密碼,這樣就能夠完美的解決問題了,以後咱們安裝成功mysql workbench,而後輸入本身的密碼,也能夠不輸入密碼(以前沒設置的話),就能夠對數據庫進行各類操做了,這點正是咱們想要的結果!以後咱們再經過ODBC,jdbc來用程序鏈接數據庫,完成相應的增刪改查(CRUD)功能!!!!!!
這點我在網上找了很久都沒有解決辦法,後來在本身的摸索中一步步的走過來了。
5.一、非restful格式的請求和應答(resquest,response)
客戶端(網頁)輸入:http://localhost:8080/181mall/v1/member.action?keyword=12&page_size=10&page_no=1&c=12
服務端進行解析:首先格式是:
1 @RequestMapping("/v1") 2 public class MemberMall { 3
4 /*一些代碼*/
5
6 @RequestMapping(value="/member" ,method=RequestMethod.GET) 7 public @ResponseBody List<MemberInfoBean> getAllMemberInfo(@RequestParam(value="keyword") String keyword, 8 @RequestParam(value="page_size")int page_size, 9 @RequestParam(value="page_no")int page_no, 10 @RequestParam(value="c")int c) { 11 /*一些代碼*/
12
13 return memberInfoBeanPage; 14
15 }
在web.xml中的配置是(其實這裏的*.action能夠是任何東西,好比*.do只不過要和客戶端請求對的上):
1 <servlet>
2 <servlet-name>springmvc</servlet-name>
3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
4 <init-param>
5 <param-name>contextConfigLocation</param-name>
6 <param-value>/config/spring/springmvc.xml</param-value>
7 </init-param>
8 </servlet>
9
10 <servlet-mapping>
11 <servlet-name>springmvc</servlet-name>
12 <url-pattern>*.action</url-pattern>
13 </servlet-mapping>
5.二、restful格式的請求和應答(resquest,response)
客戶端請求:http://localhost:8080/181mall/v1/member/1
服務端接受並解析:
1 @Controller 2 @RequestMapping("/v1") 3 public class MemberMall { 4 /*一些代碼*/
5 @RequestMapping(value="/member/{member_id}" ,method=RequestMethod.GET) 6 public @ResponseBody MemberInfoBean getMemberInfoById(@PathVariable("member_id")int member_id) { 7
8 /*一些代碼*/
9 //返回對象
10 } 11 /*一些代碼*/
12 }
web.xml中的配置:
1 <servlet>
2 <servlet-name>springmvc_rest</servlet-name>
3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
4 <init-param>
5 <param-name>contextConfigLocation</param-name>
6 <param-value>/config/spring/springmvc.xml</param-value>
7 </init-param>
8 </servlet>
9 <servlet-mapping>
10 <servlet-name>springmvc_rest</servlet-name>
11 <url-pattern>/</url-pattern>
12 </servlet-mapping>
值得一提的是,系統同時支持這兩種方式並存,咱們能夠很方便地進行取捨。