Struts2+Hibernate架構探險

來源:互聯網
上載者:User

標籤:driver   改變   天才   nat   沒有   開始   code   ase   etc   

寫這篇文章的目的

瞭解 JavaWeb 開發的人都知道SSH和SSM架構,前段時間開始接觸 JavaWeb 開發,看了幾個教學視頻後就想上手構建一個小型 Web項目,可在跟著視頻敲代碼當中,使用 Struts2+Hibernate架構 卻不是那麼順利,百度和Google都用上,折騰了幾天才搞定。究其原因,是因為Struts和Hibernate架構隨著版本的升級,部分 API 有了很大的變化,然而網上的教程幾乎全都是舊版本的,為了讓更多的架構使用新手不被新舊版本的更替和網上的過時教程所坑,同時也當作個人的筆記,所以寫下了此文。

使用Struts2和Hibernate架構

使用的開發工具為 Eclipse Java EE IDE for Web Developers Neon.3,struts2版本為 struts-2.5.10.1 ,hibernate版本為 hibernate-release-5.2.9.Final ,Tomcat和Mysql為工具 xampp 最新的整合版本。

Struts2與Hibernate整合
  1. 建立struts2和bibernate使用者類庫
    不必多說,基本的程式開發操作
  2. 匯入struts2與hibernate的jar包
    這裡需要引起注意,使用Eclipse不僅需要引入使用者類庫,還需要在項目屬性的 Deployment Assembly 加入項目所用到的架構以及JDBC驅動
  3. 配置web.xml
    加入struts2的過濾器
  4. 建立struts.xml
    配置action
  5. 建立hibernate.cfg.xml
    配置JDBC驅動和資料庫連接資訊, xampp 整合的為 MariaDB ,儘管它是MySQL的一個分支,但它有它專有的驅動,相應的你需要將 hibernate.connection.driver_class 配置為 org.mariadb.jdbc.Driver ,hibernate.connection.url 配置為 jdbc:mariadb ,而 hibernate.dialect 仍使用MySQL 的配置就好了。在這個檔案裡你同時也需要配置 mapping resource 的值為 hbm.xml 即對象關係對應檔的位置

    取巧而不是蠻幹
  • 使用 Maven 管理項目的依賴問題
  • 複製修改使用下載的 struts2 解壓包內樣本的 struts.xml 檔案
  • Eclipse可以使用 hibernate tools for eclipse 外掛程式來產生 hbm.xml 檔案,它決定了實體類在資料庫中產生的表結構
  • Eclipse可以使用 StrutsClipse 外掛程式來獲得 struts.xml 的錯誤提醒
  • 使用 JUnit 測試架構來及時調試代碼

    編程中遇到的問題以及解決辦法
  • 在使用 JUnit 和 Hibernate 架構內建的 SchemaExport 測試建立表結構時,無法在資料庫中產生表結構,利用百度和Google,自己多次排查,找出原因為 Hibernate 新版本建立資料庫連接 Session 的 API 和 SchemaExport API 均有所改變。

    舊版本代碼

//建立設定物件  Configuration config = new Configuration().configure();  //建立服務註冊對象ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();//建立sessionFactorySessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);//建立session對象Session session = sessionFactory.getCurrentSession();//建立SchemaExport對象來產生表結構SchemaExport export = new SchemaExport(config);export.create(true,true);

新版本代碼

Configuration config = new Configuration().configure();ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();SessionFactory sessionFactory = config.buildSessionFactory(serviceRegistry);Session session = sessionFactory.getCurrentSession();Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();SchemaExport export = new SchemaExport();export.create(EnumSet.of(TargetType.DATABASE), metadata);
  • 在使用 Struts.xml 檔案進行頁面調用時,Tomcat 報錯

    又是一番排查,原因依舊是新舊版本的更替問題,因為我在 struts.xml action 中採用了*_*萬用字元調用動態方法,所以需要加入<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 以及 <allowed-methods>允許調用的方法名,多個方法用逗號隔開</allowed-methods> 才能允許動態方法的調用,其實返回的錯誤資訊已經說明了這個問題。

    思索和建議初次動手使用架構來進行 JavaWeb 開發,儘管是一個小型的工程,卻也花費了我很多時間,中間還有很多沒有言說的磕磕絆絆。造成這種情況的原因大概有兩點
  • 初次使用架構,相對來說各個組件的配置和功能並不是那麼瞭解的透徹
  • 網上的相關教程大多數是 Copy 一份的,這點使用 百度 搜尋體現的尤為明顯,Google 相對來說較好,但也存在教程過時,不適配更新後的架構,極易誤導新手,學習環境並沒有像大多數人說的那麼友好。真正的大神都在悶聲發大財,不會在意這些雞毛蒜皮的事(逃

    俗話說: 授人以魚不如授人以漁。當你現在還找不到教你釣魚的人的時候,你就應該學會 自學釣術。對於編程來說,你需要逐漸試著去看 官方API文檔 ,因為 技術革新的速度實在太快 。當你能從搜尋引擎得到你想要的答案的時候,其實你已經落在先頭部隊的後面了,這也是為什麼很多人建議去閱讀 源碼 的原因。

編程這條路還有很長,儘管走的慢,但請不要後退 ————你我共勉
2017/4/7 19:05

Struts2+Hibernate架構探險

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.