當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring整合Hibernate和Struts2 (SSH)
生活随笔
收集整理的這篇文章主要介紹了
Spring整合Hibernate和Struts2 (SSH)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、首先從整合Hibernate開始
2、導入包,這里就把所有的報導進來,包括struts2的,一起導進來 一共29個包
3、編寫實體類
package?star.july.entity; public?class?Student { ??????????private?int?id; ??????????private?String?name; ??????????private?String?gender; ??????????public?int?getId() { ???????????????????return?id; ??????????} ??????????public?void?setId(int?id) { ???????????????????this.id?= id; ??????????} ??????????public?String?getName() { ???????????????????return?name; ??????????} ??????????public?void?setName(String name) { ???????????????????this.name?= name; ??????????} ??????????public?String getGender() { ???????????????????return?gender; ??????????} ??????????public?void?setGender(String gender) { ???????????????????this.gender?= gender; ??????????} ??????????@Override ??????????public?String toString() { ???????????????????return?"Student [id="?+?id?+?", name="?+?name?+?", gender="?+?gender ??????????????????????????????????????+?"]"; ??????????} ?????????? }
4、創建實體類的映射文件,Student.hbm.xml
<?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate Mapping DTD 3.0//EN"?"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"?> <hibernate-mapping> ??????????<class?name="star.july.entity.Student"?table="student"> ???????????????????<id?name="id"> ?????????????????????????????<generator?class="native"></generator> ???????????????????</id> ???????????????????<property?name="name"?column="sname"></property> ???????????????????<property?name="gender"?column="sgender"></property> ??????????</class> </hibernate-mapping>
5、編寫dao,基本完成Hibernate的工作
package?star.july.dao; import?java.util.List; import?org.springframework.orm.hibernate4.HibernateTemplate; import?star.july.entity.Student; public?class?StudentDaoImpl?implements?IStudentDao{ ????//接收hibernateTemplate對象 ????private?HibernateTemplate hibernateTemplate; ????public?void?setHibernateTemplate(HibernateTemplate hibernateTemplate)?{ ????????this.hibernateTemplate?=?hibernateTemplate; ????} ????//查詢所有的學生 ????public?List<Student>?queryAll()?{ ????????return? hibernateTemplate.loadAll(Student.class); ????} ???? }
6、創建applicationContext.xml,用于連接數據庫,相當于hibernate.cfg.xml配置文件 <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:context="http://www.springframework.org/schema/context" ????xsi:schemaLocation="http://www.springframework.org/schema/beans ????????http://www.springframework.org/schema/beans/spring-beans.xsd ??????? http://www.springframework.org/schema/context ??????? http://www.springframework.org/schema/context/spring-context.xsd"> ????????<context:property-placeholder?location="classpath:db.properties"></context:property-placeholder> ??????? ????????<!-- 創建連接池對象 --> ????????<bean?id="dataSourceID"?class="com.mchange.v2.c3p0.ComboPooledDataSource"?> ??????? ??<!-- 注入參數 --> ??????? ??<property?name="jdbcUrl"?value="${jdbcUrl}"></property> ??????? ??<property?name="driverClass"?value="${driverClass}"></property> ??????? ??<property?name="user"?value="${user}"></property> ??????? ??<property?name="password"?value="${password}"></property> ????????</bean> ??????? ??????? ????????<!-- 創建SessionFactory --> ????????<bean?id="sessionFactoryID"?class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ??????? ??<!-- 注入連接池 --> ??????? ??<property?name="dataSource"?ref="dataSourceID"></property> ??????? ??<!-- 注入hibernate環境配置:方言,是否顯示sql,是否維護表 --> ??????? ??<property?name="hibernateProperties"> ??????? ???????????<props> ??????? ?????????????????????<prop?key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> ??????? ?????????????????????<prop?key="hibernate.show_sql">true</prop> ??????? ?????????????????????<prop?key="hibernate.hbm2ddl.auto">update</prop> ??????? ???????????</props> ??????? ??</property> ??????? ??<!-- 注入映射文件的路徑 --> ??????? ??<property?name="mappingLocations"> ??????? ???????????<array> ??????? ?????????????????????<value>classpath:star/july/entity/Student.hbm.xml</value> ??????? ???????????</array> ??????? ??</property> ????????</bean> ??????? ??????? ??????? ????????<!-- 創建HibernateTemplate對象 --> ????????<bean?name="hibernateTemplateID"?class="org.springframework.orm.hibernate4.HibernateTemplate"> ??????? ??<!-- 注入工廠 --> ??????? ??<property?name="sessionFactory"?ref="sessionFactoryID"></property> ????????</bean> ??????? ??????? ????????<!-- 創建dao對象 --> ????????<bean?name="studentDaoID"?class="star.july.dao.StudentDaoImpl"> ??????? ??<!-- 注入hibernateTemplate對象 --> ??????? ??<property?name="hibernateTemplate"?ref="hibernateTemplateID"></property> ????????</bean> ?</beans>
其中,db.properties文件的內容如下:
jdbcUrl=jdbc:mysql://localhost:3306/day36 driverClass=com.mysql.jdbc.Driver user=root password=root
7、開始整合struts,導入對應的struts2包,前面已導入
8、編寫service層 package?star.july.service; import?java.util.List; import?star.july.entity.Student; public?interface?IStudentService?{ ????public?List<Student>?queryAll(); }
StudentServiceImpl.java package?star.july.service; import?java.util.List; import?star.july.dao.IStudentDao; import?star.july.entity.Student; public?class?StudentServiceImpl?implements?IStudentService?{ ????IStudentDao stuDao; ???? ????public?void?setStudao(IStudentDao studao)?{ ????????this.stuDao?=?studao; ????} ????public?List<Student>?queryAll()?{ ????????System.out.println("調用了queryAll方法"); ????????return?stuDao.queryAll(); ????} }
9、創建Action
package?star.july.web; import?java.util.List; import?star.july.entity.Student; import?star.july.service.IStudentService; import?com.opensymphony.xwork2.ActionContext; import?com.opensymphony.xwork2.ActionSupport; public?class?StudentAction?extends?ActionSupport?{ ????private?IStudentService stuService; ????public?void?setStuService(IStudentService stuService)?{ ????????this.stuService?=?stuService; ????} ???? ????//查詢所有學生 ????public?String list(){ ????????List<Student>?list?=?stuService.queryAll(); ????????ActionContext.getContext().put("list",?list); ????????System.out.println("調用list方法"); ????????return?SUCCESS; ????} }
10、在applicationContext.xml中配置
?????<!-- 創建service --> ????????<bean?name="studentServiceID"?class="star.july.service.StudentServiceImpl"> ??????? ??<!-- 注入dao?--> ??????? ??<property?name="studao"?ref="studentDaoID"></property> ????????</bean> ??????? ??????? ????????<!-- 創建Action --> ????????<bean?name="studentActionID"?class="star.july.web.StudentAction"> ??????? ??<!-- 注入dao?--> ??????? ??<property?name="stuService"?ref="studentServiceID"></property> ????????</bean>
11、配置struts.xml <?xml?version="1.0"?encoding="UTF-8"??> <!DOCTYPE?struts?PUBLIC ??????????"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" ??????????"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> ?????????? ??????????<package?name="base"?namespace="/"?extends="struts-default"> ???????????????????<action?name="student_*"?class="studentActionID"?method="{1}"> ?????????????????????????????<result>/success.jsp</result> ???????????????????</action> ??????????</package> ?????????? </struts>
12、在web.xml中配置全局過濾器和spring的Listener
<?xml?version="1.0"?encoding="UTF-8"?> <web-app?version="2.5" ??????????xmlns="http://java.sun.com/xml/ns/javaee" ??????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??????????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ??????????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> ??<display-name></display-name>???? ??<!-- 配置全局過濾器 --> ??<filter> ? ????????<filter-name>StrutsPrepareAndExecuteFilter</filter-name> ? ??????????<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> ??</filter> ??<filter-mapping> ? ????????<filter-name>StrutsPrepareAndExecuteFilter</filter-name> ? ????????<url-pattern>/*</url-pattern> ??</filter-mapping> ? ??<!-- 配置啟動spring的Listener --> ??<listener> ? ??????????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> ??</listener> ??<!-- 配置參數,指向文件路徑 --> ??<context-param> ? ????????<param-name>contextConfigLocation</param-name> ? ??????????<param-value>/WEB-INF/classes/applicationContext.xml</param-value> ??</context-param> ??<welcome-file-list> ????<welcome-file>index.jsp</welcome-file> ??</welcome-file-list> </web-app>
13、創建JSP頁面,顯示數據
<%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%> <%@?taglib?uri="/struts-tags"??prefix="s"%> <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ??<head> ????<title>title</title> ??? ??????????<meta?http-equiv="pragma"?content="no-cache"> ??????????<meta?http-equiv="cache-control"?content="no-cache"> ??????????<meta?http-equiv="expires"?content="0"> ??????????<!-- ??????????<link?rel="stylesheet" type="text/css"?href="styles.css"> ??????????--> ??</head> ? ??<body> ????<h2>學生信息</h2> ????<s:iterator?value="#list"?var="s"> ??? ??????ID:<s:property?value="#s.id"/>  ??? ??????姓名:<s:property?value="#s.name"/>  ??? ??????性別:<s:property?value="#s.gender"/><br> ????</s:iterator> ??</body> </html>
2、導入包,這里就把所有的報導進來,包括struts2的,一起導進來 一共29個包
3、編寫實體類
package?star.july.entity; public?class?Student { ??????????private?int?id; ??????????private?String?name; ??????????private?String?gender; ??????????public?int?getId() { ???????????????????return?id; ??????????} ??????????public?void?setId(int?id) { ???????????????????this.id?= id; ??????????} ??????????public?String?getName() { ???????????????????return?name; ??????????} ??????????public?void?setName(String name) { ???????????????????this.name?= name; ??????????} ??????????public?String getGender() { ???????????????????return?gender; ??????????} ??????????public?void?setGender(String gender) { ???????????????????this.gender?= gender; ??????????} ??????????@Override ??????????public?String toString() { ???????????????????return?"Student [id="?+?id?+?", name="?+?name?+?", gender="?+?gender ??????????????????????????????????????+?"]"; ??????????} ?????????? }
4、創建實體類的映射文件,Student.hbm.xml
<?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate Mapping DTD 3.0//EN"?"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"?> <hibernate-mapping> ??????????<class?name="star.july.entity.Student"?table="student"> ???????????????????<id?name="id"> ?????????????????????????????<generator?class="native"></generator> ???????????????????</id> ???????????????????<property?name="name"?column="sname"></property> ???????????????????<property?name="gender"?column="sgender"></property> ??????????</class> </hibernate-mapping>
5、編寫dao,基本完成Hibernate的工作
package?star.july.dao; import?java.util.List; import?org.springframework.orm.hibernate4.HibernateTemplate; import?star.july.entity.Student; public?class?StudentDaoImpl?implements?IStudentDao{ ????//接收hibernateTemplate對象 ????private?HibernateTemplate hibernateTemplate; ????public?void?setHibernateTemplate(HibernateTemplate hibernateTemplate)?{ ????????this.hibernateTemplate?=?hibernateTemplate; ????} ????//查詢所有的學生 ????public?List<Student>?queryAll()?{ ????????return? hibernateTemplate.loadAll(Student.class); ????} ???? }
6、創建applicationContext.xml,用于連接數據庫,相當于hibernate.cfg.xml配置文件 <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:context="http://www.springframework.org/schema/context" ????xsi:schemaLocation="http://www.springframework.org/schema/beans ????????http://www.springframework.org/schema/beans/spring-beans.xsd ??????? http://www.springframework.org/schema/context ??????? http://www.springframework.org/schema/context/spring-context.xsd"> ????????<context:property-placeholder?location="classpath:db.properties"></context:property-placeholder> ??????? ????????<!-- 創建連接池對象 --> ????????<bean?id="dataSourceID"?class="com.mchange.v2.c3p0.ComboPooledDataSource"?> ??????? ??<!-- 注入參數 --> ??????? ??<property?name="jdbcUrl"?value="${jdbcUrl}"></property> ??????? ??<property?name="driverClass"?value="${driverClass}"></property> ??????? ??<property?name="user"?value="${user}"></property> ??????? ??<property?name="password"?value="${password}"></property> ????????</bean> ??????? ??????? ????????<!-- 創建SessionFactory --> ????????<bean?id="sessionFactoryID"?class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ??????? ??<!-- 注入連接池 --> ??????? ??<property?name="dataSource"?ref="dataSourceID"></property> ??????? ??<!-- 注入hibernate環境配置:方言,是否顯示sql,是否維護表 --> ??????? ??<property?name="hibernateProperties"> ??????? ???????????<props> ??????? ?????????????????????<prop?key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> ??????? ?????????????????????<prop?key="hibernate.show_sql">true</prop> ??????? ?????????????????????<prop?key="hibernate.hbm2ddl.auto">update</prop> ??????? ???????????</props> ??????? ??</property> ??????? ??<!-- 注入映射文件的路徑 --> ??????? ??<property?name="mappingLocations"> ??????? ???????????<array> ??????? ?????????????????????<value>classpath:star/july/entity/Student.hbm.xml</value> ??????? ???????????</array> ??????? ??</property> ????????</bean> ??????? ??????? ??????? ????????<!-- 創建HibernateTemplate對象 --> ????????<bean?name="hibernateTemplateID"?class="org.springframework.orm.hibernate4.HibernateTemplate"> ??????? ??<!-- 注入工廠 --> ??????? ??<property?name="sessionFactory"?ref="sessionFactoryID"></property> ????????</bean> ??????? ??????? ????????<!-- 創建dao對象 --> ????????<bean?name="studentDaoID"?class="star.july.dao.StudentDaoImpl"> ??????? ??<!-- 注入hibernateTemplate對象 --> ??????? ??<property?name="hibernateTemplate"?ref="hibernateTemplateID"></property> ????????</bean> ?</beans>
其中,db.properties文件的內容如下:
jdbcUrl=jdbc:mysql://localhost:3306/day36 driverClass=com.mysql.jdbc.Driver user=root password=root
7、開始整合struts,導入對應的struts2包,前面已導入
8、編寫service層 package?star.july.service; import?java.util.List; import?star.july.entity.Student; public?interface?IStudentService?{ ????public?List<Student>?queryAll(); }
StudentServiceImpl.java package?star.july.service; import?java.util.List; import?star.july.dao.IStudentDao; import?star.july.entity.Student; public?class?StudentServiceImpl?implements?IStudentService?{ ????IStudentDao stuDao; ???? ????public?void?setStudao(IStudentDao studao)?{ ????????this.stuDao?=?studao; ????} ????public?List<Student>?queryAll()?{ ????????System.out.println("調用了queryAll方法"); ????????return?stuDao.queryAll(); ????} }
9、創建Action
package?star.july.web; import?java.util.List; import?star.july.entity.Student; import?star.july.service.IStudentService; import?com.opensymphony.xwork2.ActionContext; import?com.opensymphony.xwork2.ActionSupport; public?class?StudentAction?extends?ActionSupport?{ ????private?IStudentService stuService; ????public?void?setStuService(IStudentService stuService)?{ ????????this.stuService?=?stuService; ????} ???? ????//查詢所有學生 ????public?String list(){ ????????List<Student>?list?=?stuService.queryAll(); ????????ActionContext.getContext().put("list",?list); ????????System.out.println("調用list方法"); ????????return?SUCCESS; ????} }
10、在applicationContext.xml中配置
?????<!-- 創建service --> ????????<bean?name="studentServiceID"?class="star.july.service.StudentServiceImpl"> ??????? ??<!-- 注入dao?--> ??????? ??<property?name="studao"?ref="studentDaoID"></property> ????????</bean> ??????? ??????? ????????<!-- 創建Action --> ????????<bean?name="studentActionID"?class="star.july.web.StudentAction"> ??????? ??<!-- 注入dao?--> ??????? ??<property?name="stuService"?ref="studentServiceID"></property> ????????</bean>
11、配置struts.xml <?xml?version="1.0"?encoding="UTF-8"??> <!DOCTYPE?struts?PUBLIC ??????????"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" ??????????"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> ?????????? ??????????<package?name="base"?namespace="/"?extends="struts-default"> ???????????????????<action?name="student_*"?class="studentActionID"?method="{1}"> ?????????????????????????????<result>/success.jsp</result> ???????????????????</action> ??????????</package> ?????????? </struts>
12、在web.xml中配置全局過濾器和spring的Listener
<?xml?version="1.0"?encoding="UTF-8"?> <web-app?version="2.5" ??????????xmlns="http://java.sun.com/xml/ns/javaee" ??????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??????????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ??????????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> ??<display-name></display-name>???? ??<!-- 配置全局過濾器 --> ??<filter> ? ????????<filter-name>StrutsPrepareAndExecuteFilter</filter-name> ? ??????????<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> ??</filter> ??<filter-mapping> ? ????????<filter-name>StrutsPrepareAndExecuteFilter</filter-name> ? ????????<url-pattern>/*</url-pattern> ??</filter-mapping> ? ??<!-- 配置啟動spring的Listener --> ??<listener> ? ??????????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> ??</listener> ??<!-- 配置參數,指向文件路徑 --> ??<context-param> ? ????????<param-name>contextConfigLocation</param-name> ? ??????????<param-value>/WEB-INF/classes/applicationContext.xml</param-value> ??</context-param> ??<welcome-file-list> ????<welcome-file>index.jsp</welcome-file> ??</welcome-file-list> </web-app>
13、創建JSP頁面,顯示數據
<%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%> <%@?taglib?uri="/struts-tags"??prefix="s"%> <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ??<head> ????<title>title</title> ??? ??????????<meta?http-equiv="pragma"?content="no-cache"> ??????????<meta?http-equiv="cache-control"?content="no-cache"> ??????????<meta?http-equiv="expires"?content="0"> ??????????<!-- ??????????<link?rel="stylesheet" type="text/css"?href="styles.css"> ??????????--> ??</head> ? ??<body> ????<h2>學生信息</h2> ????<s:iterator?value="#list"?var="s"> ??? ??????ID:<s:property?value="#s.id"/>  ??? ??????姓名:<s:property?value="#s.name"/>  ??? ??????性別:<s:property?value="#s.gender"/><br> ????</s:iterator> ??</body> </html>
總結
以上是生活随笔為你收集整理的Spring整合Hibernate和Struts2 (SSH)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 整合Struts2
- 下一篇: Spring 注解AOP