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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AIX samba服务器配置
- 下一篇: java美元兑换,(Java实现) 美元