天天看點

【鬥醫】【9】Web應用開發20天

   本來想把資料庫配置、hibernate連接配接封裝和映射配置一塊寫的,但由于個人時間問題時斷時續,思路也多次被打斷,是以在此對其進行彌補。

   若讀者把上篇的附件下載下傳下來運作,會發現運作失敗,下面随着異常分析并解決。

1、截止目前系統所使用的jar包

【鬥醫】【9】Web應用開發20天

2、通過eclipse啟動tomcat,抛出如下異常:

  嚴重: standardwrapper.throwable

  java.lang.noclassdeffounderror: org/dom4j/documentexception

  【問題原因】:系統缺少dom4j.jar包,下載下傳放入到運作環境d:\medical\war\web-inf\lib下(我會把系統所依賴的所有jar以附件的形式陸續上傳,因為上傳附件有大小限制,不能一次上傳完)

3、再通過eclipse啟動tomcat,抛出如下異常:

  java.lang.noclassdeffounderror: org/hibernate/annotations/common/reflection/reflectionmanager

  【問題原因】:系統缺少hibernate-commons-annotations.jar包,下載下傳放入到運作環境中

4、再通過eclipse啟動tomcat,抛出如下異常:

  java.lang.noclassdeffounderror: org/jboss/logging/basiclogger

  【問題原因】:系統缺少jboss-logging.jar包,下載下傳放入到運作環境中

5、再通過eclipse啟動tomcat,抛出如下異常:

  java.lang.noclassdeffounderror: javax/transaction/systemexception

  【問題原因】:系統缺少jboss-transaction-api_1.2_spec-1.0.0.final.jar包,下載下傳放入到運作環境中

6、再通過eclipse啟動tomcat,抛出如下異常:

  java.lang.noclassdeffounderror: javax/persistence/entitylisteners

  【問題原因】:系統缺少hibernate-jpa-2.1-api-1.0.0.final.jar包,下載下傳放入到運作環境中

7、再通過eclipse啟動tomcat,抛出如下異常:

  org.hibernate.mappingexception: could not get constructor for org.hibernate.persister.entity.singletableentitypersister

  【問題原因】:系統缺少javassist-3.18.1-ga.jar包,下載下傳放入到運作環境中

8、再通過eclipse啟動tomcat,抛出如下異常:

  org.hibernate.exception.jdbcconnectionexception: error calling driver#connect

  【問題原因】:從提示上看是連接配接失敗了,是以先檢視資料庫服務是否啟動。由于我使用的是window作業系統,是以隻需要在作業系統工作列上右鍵,選擇“任務管理器”,在“程序”頁簽檢視“映射名稱”是否有mysql服務存在?從下圖可見mysql服務并未啟動,是以啟動它

【鬥醫】【9】Web應用開發20天

9、再通過eclipse啟動tomcat,抛出如下異常:

  caused by: com.mysql.jdbc.exceptions.jdbc4.communicationsexception: communications link failure

  【問題原因】:檢查d:\medical\war\etc\hibernate.cfg.xml檔案中資料庫配置是否正确,配置如下:

   <property name="connection.driver_class">com.mysql.jdbc.driver</property>

   <property name="connection.url">jdbc:mysql://localhost:3306/medical</property>

   <property name="connection.username">root</property>

   <property name="connection.password">changeme123</property>

   由于前段時間我重新配置了mysql的密碼,是以更改為新密碼即可

   【備注】:若連接配接不通過,還需要檢查系統防火牆是否開啟,是否把端口号添加到例外中?

10、再通過eclipse啟動tomcat,抛出如下異常:

org.hibernate.boot.registry.selector.spi.strategyselectionexception: unable to resolve name [net.sf.hibernate.dialect.mysqldialect] as strategy [org.hibernate.dialect.dialect]

 【問題原因】:d:\medical\war\etc\hibernate.cfg.xml檔案中sql方言配置錯誤,把<property name="dialect">net.sf.hibernate.dialect.mysqldialect</property>改為<property name="dialect">org.hibernate.dialect.mysqldialect</property>

11、再通過eclipse啟動tomcat,啟動正常

  (1)此時系統所依賴的jar包如下:

【鬥醫】【9】Web應用開發20天

  (2)此時系統的hibernate.cfg.xml内容如下:

【鬥醫】【9】Web應用開發20天

二、建立資料庫medical和資料表usertable

1、打開mysql的指令行終端,并輸入正确的密碼,如下圖:

【鬥醫】【9】Web應用開發20天

2、建立資料庫medical

  在視窗中輸入“create database medical;”回車,一定要有分号。

3、建立資料表usertable

  在視窗中輸入“create table user(userid varchar(20) primary key not null, userauth varchar(64), usersign varchar(64), attention varchar(10));”回車,一定要有分号

三、建立資料表usertable的映射檔案

1、在運作環境d:\medical\war\etc\mapping下建立user.hbm.xml檔案,輸入如下内容:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<code>&lt;?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?&gt; </code>

<code>&lt;!doctype hibernate-mapping public </code>

<code>        </code><code>"-//hibernate/hibernate mapping dtd 3.0//en" </code>

<code>        </code><code>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt; </code>

<code>                                                                      </code> 

<code>&lt;</code><code>hibernate-mapping</code> <code>package</code><code>=</code><code>"com.medical.server.dao"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>class</code> <code>name</code><code>=</code><code>"userdao"</code> <code>table</code><code>=</code><code>"usertable"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>id</code> <code>name</code><code>=</code><code>"userid"</code> <code>column</code><code>=</code><code>"userid"</code> <code>type</code><code>=</code><code>"string"</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>generator</code> <code>class</code><code>=</code><code>"uuid.hex"</code> <code>/&gt;</code>

<code>        </code><code>&lt;/</code><code>id</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"userauth"</code> <code>column</code><code>=</code><code>"userauth"</code> <code>/&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"usersign"</code> <code>column</code><code>=</code><code>"usersign"</code> <code>/&gt;</code>

<code>        </code><code>&lt;</code><code>property</code> <code>name</code><code>=</code><code>"attention"</code> <code>column</code><code>=</code><code>"attention"</code> <code>/&gt;</code>

<code>    </code><code>&lt;/</code><code>class</code><code>&gt;</code>

<code>&lt;/</code><code>hibernate-mapping</code><code>&gt;</code>

(2)建立com.medical.server.dao.userdao.java類

16

<code>/**</code>

<code> </code><code>* 使用者id</code>

<code> </code><code>*/</code>

<code>private</code> <code>string userid = </code><code>null</code><code>;</code>

<code> </code><code>* 使用者鑒權字元串</code>

<code>private</code> <code>string userauth = </code><code>null</code><code>;</code>

<code> </code><code>* 使用者自我描述</code>

<code>private</code> <code>string usersign = </code><code>null</code><code>;</code>

<code> </code><code>* 使用者關注領域</code>

<code>private</code> <code>string attention = </code><code>null</code><code>;</code>

  裡面定義4個字元,與資料表usertable中的字段相對應,然後對其設定set&amp;get方法

(3)再通過eclipse啟動tomcat,啟動正常。

繼續閱讀