今天使用Struts2的時候遇到一個怪異的問題,首先在struts.xml中配置的action是沒有問題的,Java類也寫好了。但是運行的時候報
告如下錯誤:
javax.servlet.ServletException: Unable to instantiate Action,
cn.edu.cup.actions.JobManager, defined for 'jobList' in namespace
'/'null - action -
file:/K:/Softwares/%E6%95%99%E5%AD%A6%E7%9B%B8%E5%85%B3
經過網上仔細搜索發現,根本原因在于我在方法中使用了 Student s = (Student) session.getAttribute("user");
其中session是在構造函數中獲取的。但是,通過分析Struts的原理(參見http://t8500071.javaeye.com/blog
/348057),由于Action先于ActionContext對象實例之前創建,所以session對象是null,因此,會報告空指針錯誤!
明白了上述原理后,將獲取session的語句從構造函數中刪除,放到方法中,程序終于正常了!
從初步觀察的結果來看,Netbeans是綠色軟件,即不需要安裝的軟件。
前天,系統重裝后,直接啟動NetBeans(上次安裝遺留的),正常,創建項目正常。只有JavaFx有些異常——不能正常執行。后來,增設了幾個環境
變量就好了。
增設的環境變量有:
set JAVA_HOME=D:\Java\jdk1.6.0_18
set JRE=d:\java\jre6
set JAVAFX=E:\NetBeans 6.8\javafx2\javafx-sdk
set classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
set path=%JAVA_HOME%\bin;%PATH%;%JRE%\bin;%JAVAFX%\bin;
用JSP開發的網站,一般超過一天不訪問的話,數據庫連接就會斷開。從網上查找的解決辦法如下: WNn?l{k
rtS]p %YT
如
果連接閑置8小時 (8小時內沒有進行數據庫操作), mysql就會自動斷開連接, 要重啟tomcat. <_ 2cV
不用hibernate
的話, connection url加參數: autoReconnect=true S?ByJ$
用hibernate的話, 加如下屬性: .hcs)z
<property
name="connection.autoReconnect">true</property> >%J q]8
<property
name="connection.autoReconnectForPools">true</property> r 0; x
<property
name="connection.is-connection-validation-required">true</property> R2lq<1|!
要是還用c3p0連接池: }~QD|3vh
<property
name="hibernate.c3p0.acquire_increment">1</property> EV|1P/h
<property
name="hibernate.c3p0.idle_test_period">0</property> Lp#%~PGr~
<property
name="hibernate.c3p0.timeout">0</property> 88O +w
<property
name="hibernate.c3p0.validate">true</property>
不過,經過測試,沒有效果。正在努力思考中...
經過測試,增加
autoReconnect不管用,url中不認識該關鍵字。有網上評論說對mySQL5.0以上該參數不靈。
第二種:Hibernate的配置
也不好用。
經測試,第三種方式是可行的。不過,參數配置不同。具體配置如下:
<property
name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">5</property>
<property
name="hibernate.c3p0.idle_test_period">5</property>
<property
name="hibernate.c3p0.max_statements">100</property>
<property
name="hibernate.c3p0.acquire_increment">1</property>
為了具
體測試出效果,我將mySQL數據庫的wait-timeout設置為10.也就是說,只要10秒鐘不操作,數據連接就自動斷開。
測試結果,網頁
在等待若干分鐘后,也能正常操作。
昨天晚上在進行JSP學習的時候,遇到一個很奇怪的問題:
我在action中獲取了一個數組(List),希望通過request設置傳遞到JSP中,然后利用標準標簽c:for 顯示。結果是編譯、運行都通過,但是就是沒有顯示任何內容!
經過N次查找,最終發現原來少了一行:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
太氣人了!
誰也不報告錯誤,就是不干活!
切記!