日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0

發布時間:2023/12/19 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1、Struts2

1.1、了解Struts2

Struts2是基于MVC設計模式的Java Web框架技術之一,按照MVC設計思想把Java Web應用程序分為:

控制器層,包括核心控制器FilterDispatcher和業務控制器Action;

模型層,包括業務邏輯組件和數據庫訪問組件;

視圖層,包括HTML、JSP、Struts2的標簽等;

Struts2標簽庫分為3大類:

UI標簽(包含表單標簽&非表單標簽)、非UI標簽(包含數據標簽&控制標簽)、Ajax標簽

內容繁多,用到的時候再查吧。

1.2、搭建環境

在web項目右鍵>Project Capabilties>Add Struts Capabilities,即可配置好Struts2環境。

{其中在匹配模式的單選按鈕組中選擇/*,意為全部匹配,對應web.xml中

<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

}

1.3、測試

參考(http://www.cnblogs.com/wchhuangya/archive/2011/03/21/1968877.html),直接從(五、struts2實例--簡單的登錄例子)開始即可順利完成;

其中處理器映射struts.xml

<package?name="struts2"?namespace="/"?extends="struts-default"><action?name="login"?class="org.jason.actions.LoginAction"?method="execute"><result?name="success">/welcome.jsp</result><result?name="login">/login.jsp</result></action></package>

主要屬性說明:(package-name:用于區別不同的package;必須是唯一的、可用的變量名;用于其它package來繼承;

??????????????????? package--namespace:用于減少重復代碼(和struts1比較);是調用action時輸入路徑的組成部分;

??????????????????? package--extends:用于繼承其它package以使用里面的過濾器等東東;

<action>元素中name屬性表示請求映射的地址,class屬性表示請求的Action處理類),如果將class名字寫錯(誤寫成com.jason.actions.LoginAction了),會報錯如下:

嚴重:?Exception?starting?filter?struts2 java.lang.ClassNotFoundException:

出現此錯誤之后,系統提示是過濾器加載的問題,想到web.xml中

<filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

可能有問題,但運行環境是自動生成的,故排除此錯誤,仔細觀察發現<action>中class寫錯了。

若盲目修改生成的參數只會徒增煩惱。

2、Spring

2.1、了解Spring

Spring是一個輕量級控制反轉(IoC)和面向切面(AOP)的容器框架

2.2、搭建Spring環境

參考Myeclipse10下搭建SSH框架(圖解)Struts2.1+Spring3.0+Hibernate3.3 之后會發現,其實在MyEclipse10下搭建三個框架都挺簡單的。

概括其流程:

a、新建web項目ssh;

b、添加Spring。MyEclipse→Project Capabilities→Add Spring Capabilities;

c、version選擇3.0之后,選擇5個包(按圖選擇相應的包Spring 3.0 AOP,Spring 3.0 Core,Spring 3.0 Persistence Core,Spring 3.0 Persistence JDBC,Spring 3.0 Web;JAR Library Installation里選擇Copy到lib目錄(避免發布到Tomcat出問題)。?);

d、自動生成applicationContext.xml;

2.3、測試

2.3.1、在applicationContext.xml中添加Bean配置

<!--?添加bean配置?--><bean?id="HelloWorld"?class="com.demo.spring.test.HelloWorld"><property?name="message"><value>Jason's?World</value></property></bean>

2.3.2、新建Bean類HelloWorld.java和測試類Test.java

package?com.demo.spring.test; public?class?HelloWorld?{protected?String?message;public?String?getMessage()?{return?message;}public?void?setMessage(String?message)?{this.message?=?message;}public?String?execute(String?str)?{return?"Hello?"?+?getMessage()+"\tstr:"+str;} }

package?com.demo.spring.test; import?org.springframework.context.ApplicationContext; import?org.springframework.context.support.FileSystemXmlApplicationContext; public?class?Test?{public?static?void?main(String[]?args)?{ApplicationContext?ctx?=?new?FileSystemXmlApplicationContext("src/applicationContext.xml");HelloWorld?hello?=?(HelloWorld)?ctx.getBean("HelloWorld");System.out.println(hello.execute("test"));System.out.println(hello.getMessage());hello.setMessage("set?message");System.out.println(hello.getMessage());} }

輸出結果則表明環境已經支持Spring了

Hello Jason's World?str:test
Jason's World
set message

3、Hibernate

3.1、了解Hibernate

更好的教程:

http://blog.csdn.net/mazhaojuan/article/category/1756651

{四星,5篇系列教程,包含概念、實踐、測試,不足之處在于一些可以自動生成的代碼還要自己寫}

在MyEclipse中快速搭建hibernate應用

{五星,其中d.創建實體類及該實體類的映射文件使用MyEclipse自動生成,簡便清晰}

3.2、搭建環境

參考上文五星教程即可,其中(創建SessionFactory,這個SessionFactory其實是Hibernate提供的一個用于管理Session的類,他可以確保在每個獨立的線程中Session是唯一的。),2.2中教程沒創建SessionFactory,應該不恰當;

該過程自動創建,在此指定factory的位置com.demo.hibernate,默認名稱為HibernateSessionFactory.java;

【如果是在上節Spring基礎上搭建Hibernate,在一步步next的過程中最好選擇新建一個獨立的xml(2.2中選擇將Hibernate的配置添加到Spring生成的applicationContext.xml中,這會導致測試故障難找),默認名hibernate.cfg.xml】;

hibernate.cfg.xml詳解

????????<!--選擇使用的方言??--><property?name="dialect">org.hibernate.dialect.MySQLDialect</property><!--?連接字符串?--><property?name="connection.url">jdbc:mysql://localhost:3306/page0803</property><!--?連接數據庫的用戶名(本數據庫密碼為空)?--><property?name="connection.username">root</property><!--?數據庫驅動?--><property?name="connection.driver_class">com.mysql.jdbc.Driver</property><property?name="myeclipse.connection.profile">SSH</property><!--?映射文件?--><mapping?resource="com/demo/entity/Students.hbm.xml"/>

?

自動生成的hibernate.cfg.xml中會包含映射文件,省去很多麻煩,如果沒有映射文件,運行時會報錯

Students is not mapped [from Students]

3.3、測試

3.3.1、數據庫

使用page0803的students表(http://my.oschina.net/SnifferApache/blog/297572#OSC_h3_20)

3.3.2、Test.java

按照3.1五星中操作自動生成持久化類Students.java和映射文件Students.hbm.xml;

Test.java

package?com.demo.entity; import?java.util.Iterator; import?java.util.List; import?org.hibernate.Session; import?org.hibernate.Transaction; import?com.demo.hibernate.HibernateSessionFactory; public?class?Test?{Session?session?=?null;Transaction?tx?=?null;//@SuppressWarnings("rawtypes")public?static?void?main(String[]?args)?{Test?th?=?new?Test();List?cl?=?th.getAllStudents();if?(cl?!=?null)?{Iterator?it?=?cl.iterator();while?(it.hasNext())?{Students?stu?=?(Students)?it.next();System.out.println("ID:"?+?stu.getStuId()?+?"name:"+?stu.getStuName()?+?"address:"?+?stu.getAddress()+?"Phone:"?+?stu.getStuPhone());}}}//@SuppressWarnings("rawtypes")public?List?getAllStudents()?{session?=?HibernateSessionFactory.getSession();List?stulist?=?null;try?{tx?=?session.beginTransaction();stulist?=?session.createQuery("from?Students").list();return?stulist;}?catch?(Exception?ex)?{System.err.println(ex.getMessage());return?null;}?finally?{HibernateSessionFactory.closeSession();}} }

運行結果

ID:1name:楊華林address:長沙Phone:13787825190
ID:2name:李明清address:天津Phone:13787525190
ID:3name:李小華address:大連Phone:13788451190
ID:4name:鄭小明address:蘇州Phone:13787052188
ID:5name:楊一新address:西安Phone:13787851190
ID:6name:王新任address:廣州Phone:13787056460
ID:7name:謝小華address:深圳Phone:13787075550
ID:8name:王建明address:廈門Phone:13788853690
ID:9name:秦一生address:北京Phone:13788689236
ID:10name:田翠林address:杭州Phone:13787655150
ID:11name:陳小明address:廣州Phone:13787623668

4、實現一個SSH項目(挖坑待填

挖坑待填

轉載于:https://my.oschina.net/SnifferApache/blog/305691

總結

以上是生活随笔為你收集整理的Java Web笔记之Struts2.1 +Hibernate3.3 +Spring3.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。