用SSH做採購系統遇到的問題

1、注入sessionFactory

 <bean id="userDao" class="com.UserDaoImpl">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>

把<ref bean 改成<ref local

2、

SQL Error: 1064, SQLState: 42000錯誤原因

 

保留字被引起來後可以用作識別符。如果在表中使用這些會報1064,42000錯誤。

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL


3、SQL Error: 1364, SQLState: HY000 ;Field 'account' doesn't have a default value

解決方法:把<generator class="native"></generator>改成<generator class="increment"></generator>

4、No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

這裏不是每次都能拿到當前的session的,即getCurrentSession不是總是能獲取非空值。
你可以在getSession方法裏面給一個判斷,如果sessionFactory.getCurrentSession();的返回值爲空的話,就用sessionFactory.openSession();方法來新開一個session來返回就行了。

5、jsp如何獲得action中保存的session

jsp獲取action傳來的session值問題有一下幾種方法:

比如我action中有個session ("sessionid","11111111")

一、用struts標籤獲取:<s:property value="#session.sessionid"/>

二、<%=request.getSession.getAttribute("sessionid");>  session也是內置對象之一,可以直接用session,比request.getSession方便多了
       也可以寫成<%=session.getAttribute("sessionid");>

三、el表達式獲取:${sessionScope.sessionid}

  如果賦值的是個bean,也是一樣的,類似於${sessionScope.bean.beansth}

6、No suitable Log implementation沒有合適的日誌實現

應該是打開日誌的時候出現的錯誤

7、struts2的action需要繼承或實現什麼

Struts2的action主要有兩種方式: 
1.實現Action 接口 (implements Action) 

2、繼承ActionSupport

1Actionsupport這個工具類在實現了Action接口的基礎上還定義了一個validate()方法,重寫該方法,它會在execute()方法之前執行,如校驗失敗,會轉入input處,必須在配置該Action時配置input屬性。

 2另外,Actionsupport還提供了一個getText(String key)方法還實現國際化,該方法從資源文件上獲取國際化信息這樣在自定義標籤時可以定義一個變量爲new actionsupport對象實現國際化。

9、@BeforeClass什麼作用

@BeforeClass @AfterClass註解是junit提供的另外的兩個註解。

一般用在AOP方式的測試上。
一個是前置執行,一個是後置執行

10、Don't know how to iterate over supplied "items" in &lt;forEach&gt;
解釋:傳的不是集合所以不能遍歷

11、org.hibernate.exception.DataException: Could not execute JDBC batch update

有可能是你的實體類總的數據類型與數據庫中字段的類型對應的不一致,導致更新的時候出錯.比如數據庫是number類型,但是你在實體中設置爲string.檢查一下,也有可能是屬性的個數不一致
12、java.sql.BatchUpdateException: Data truncation: Data too long for column 'price' at row 1
這個是因爲數據庫字段的長度爲0
13、thread pool Exception線程池異常

解釋一:對象中沒有足夠的自由線程來完成操作

14、java.lang.OutOfMemoryError: PermGen space
	對於我的程序出現這種情況是因爲我再服務器上多次發佈了我的同一個項目(大量的class文件)引起的,其實項目只要第一次發佈到服務器上就可以了,不用再次發佈(重啓服務器的時候)
網上解釋原因:
 一、java.lang.OutOfMemoryError: PermGen space PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域, 這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中, 它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對 PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤, 這種錯誤常見在web服務器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤信息了。
 解決方法: 手動設置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 
 建議:將相同的第三方jar文件移置到tomcat/shared/lib目錄下,這樣可以達到減少jar 文檔重複佔用內存的目的。
 二、java.lang.OutOfMemoryError: Java heap space Heap size 設置 JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置.JVM在啓動的時候會自動設置Heap size的值,其初始空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的時間是用於GC且可用的Heap size 不足2%的時候將拋出此異常信息。提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置爲相同,而-Xmn爲1/4的-Xmx值。 
 解決方法:手動設置Heap size 修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m" 
 三、實例,以下給出1G內存環境下java jvm 的參數設置參考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " 
15、java.lang.reflect.InvocationTargetException
我碰到該問題的根源是實體文件被我改過,而映射文件沒有修改導致的問題
16、The content of element type "package" must match "(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-exception-
 mappings?,action*)".
	原因:package裏元素必須按照一定的順序排列:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(所有action放到最後)
我得情況是struts裏面有沒被標籤包住的字符
17、Encountered "<EOF>" at line 1, column 1. 
SQL語句語法錯誤,最有可能的是你的引號""少了一個,沒有引好。
18、com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'number' in 'where clause'
這個錯誤一定產生在sql語句中,不要在其他錯誤上浪費功夫
以上是我開發阿德一個簡易採購系統遇到的一些問題整理出來(部分),供以後查閱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章