TOMCAT伺服器重啟造成圖片資源自動刪除
最近在做了一個簡單的Spring+springMVC+Mybatis 的案例,在該過程中遇到幾個問題,現在佔時以之記錄。有些問題還沒得到解決。
2)向jsp頁面傳遞List集合問題
在實際情況中,有可能對LIst集合進行了多重封裝:例如,可能在訂單orders中封裝一個訂單項orderitem,在訂單項orderitem中又封裝一個書book項,等等。那麼如何使用el表示式在jsp頁面取值的時候才能不出錯呢?它傳遞值的時候又遵循哪些規則呢?
3)圖片上傳的問題
圖片上傳程式寫完之後,發現上傳到 Tomcat 伺服器中的圖片,在每次Tomcat重啟的情況下都會被自動刪除。上網查詢之後,解決方法如下:
a.修改web.xml檔案,內容如下:
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value >
</init-param>
<init-param>
<!-- 圖片要想上傳成功,需要新增readonly選項,它的值設定成為:false -->
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name >listings</param-name>
<!-- param-value原來的值是:false 這裡將它改為:true-->
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
b.修改service.xml檔案,內容如下:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<!-- 修改部分:將以下一行程式碼註釋掉 -->
<!-- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/> -->
- 1
其實就是給工程配置虛擬路徑,這樣tomcat在啟動的時候直接找到你的工程了,你上傳的圖片就不會跑到/tomcat/webapps/目錄,而是直接到了你的工程裡,不管你怎樣重啟專案,或者清理快取,上傳的檔案依然存在!
4)資料庫的級聯操作問題
雖然就是簡單的幾個表,但是都是有外來鍵約束的,而且當初在建表的時候並沒有對外來鍵使用:on delete cascade/on update cascade 。所以在mybatis對錶進行刪除和更新的時候總是無法成功!雖然有mapper.xml 配置檔案,可是一個方法中卻只能寫一個SQL語句呀!這就比較鬱悶了。在網上看了帖子都沒找到符合要求的SQL,於是索性將外來鍵刪除,再重新將on delete cascade/on update cascade 直接加上去,果然級聯刪除與跟新就沒那麼麻煩了。所以,以後在建表的時候,最好仔細考慮一下是否有需要新增on delete cascade/on update cascade !