服務器部署項目問題總結
一.問題
在本機運行正常的項目,部署到遠程服務器上之后部分功能運行出錯,錯誤信息是“NoResultDefinedForActionAndResultInput”,由于在本機運行正常,所以初步認為是遠程服務器上的java環境導致的運 行出錯,但是在將服務器上的JDK、Tomcat等環境重裝成和本地一致之后項 目仍然報相同的錯誤,在網上搜查的方法也都沒有解決問題,后來使用 struts2的debug標簽查找到了問題所在,問題是上傳文件的臨時路徑無法找到導致帶有文件上傳的表單提交無法通過struts2的攔截器驗證,返回“INPUT”,但是在action中沒有關于“INPUT”的配置,所以導致出現上述錯誤。
在出錯的表單中,文件上傳功能是使用struts2的fileUpload方式實現的,在實現文件上傳時,需要獲取到上傳文件的絕對路徑和相對路徑,但是這兩個只是在文件的上傳和持久化路徑時需要,除了這兩個路徑之外還需要一個虛擬路徑,這個虛擬路徑用來保存上傳文件所形成的臨時文件,也就是一個臨時路徑,如果文件上傳失敗,臨時文件也是存儲在該路徑之中。如果不配置的話將使用默認的javax.servlet.context.tempdir來保存文件,但是在struts2的配置文件中設置<constantname="struts.mult 二.反思 1.第一點不得不說的就是對于struts2的fileUpLoad組件的使用的熟練程度不夠,每次使用的時候都是拿到以前寫好的或者是在網上查找到的例子直接Copy、修改,看到代碼也能理解是什么意思,也能實現需要的功能,雖然這樣做可以提高效率,但是某些配置或者細節就容易遺忘,出錯了也不知道是哪里的問題,一個小小的錯誤可能會糾結很久,但是當你找到出錯的問題所在時又感覺十分簡單,所以以后的開發學習中不管是什么東西,都盡量的去弄懂,看詳細看深入,這樣可能剛開始的時候很費時間,但是在以后的使用中可以很快的寫出代碼,并且出現問題了也能很快的定位,對于這個方面我還需要很多的努力。 2.曾經在博客園看到這樣一篇文章,說一個飯店老板讓店里的員工去調查市場上雞的價格,A員工直接跑了幾家市場,調查了雞的價格,B員工去詳細詢問了老板為什么要調查雞的價格,然后不僅去市場調查了雞的價格,而且去別的飯店調查了雞的價格,C員工不僅調查了雞的價格,而且調查了鴨、魚等其他同類產品的價格,D員工在調查雞的價格的同時還想到是不是需要一個好的廚師,剛好有一個朋友就是廚師,然后就介紹給了老板,給飯店儲備人才,然后上述的四個員工分別得到了60/70/80/90分,因為A員工僅僅完成了任務,B員工在完成任務的同時還知道了為什么要完成這個任務,C、D員工雖然得到80/90分的詳細原因我不太記得了,但是總結起來就是超前意識,因為在完成任務的時候不僅知道了為什么要完成這個任務,還要想到與之相關的東西。對于我來說,缺乏的就是這樣的一種超前的意識,可能有時候完成一個功能,僅僅是完成了一個功能,或者說有時候知道為什么完成這個功能,但是對于這些功能中的一些內容的封裝、復用 以及與之相關功能的擴展做的很不夠,可能上面的例子不夠恰當,其實主要想說的是對于代碼的重構,以后再這方面可能要做的更 多一些,我怎么感覺上面的例子就是廢話呢? 3.第三個方面可能跟第一個有點類似,就是每次研究一些東西基本都是淺嘗輒止,例如fancybox、AjaxForm這些,但是也不全是我不愿意去深入研究,我的JQUERY能力還是太弱了一些,很多JS代碼根本看不懂,這個東西不是一時半會兒可以補起來的,接下來會找時間來繼續學習,另外在研究一些東西的時候也將研究成果形成文字記錄下來。 暫時能想到的就這些了,以后再有其他問題再進行總結記錄。
新聞熱點
疑難解答