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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【struts2+spring+hibernate】ssh框架整合开发

發布時間:2025/3/20 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【struts2+spring+hibernate】ssh框架整合开发 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SSH框架整合

1 Struts2+Spring+Hibernate導包

Struts2導入jar包:

? * struts2/apps/struts2-blank.war/WEB-INF/lib/*.jar

導入與spring整合的jar

* struts2/lib/struts2-spring-plugin-2.3.15.3.jar--- 整合Spring框架

* struts2/lib/struts2-json-plugin-2.3.15.3.jar--- 整合AJAX

* struts2/lib/struts2-convention-plugin-2.3.15.3.jar--- 使用Struts2注解開發.

Spring導入jar包:

Spring3.2 開發最基本jar包

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

com.springsource.org.apache.log4j-1.2.15.jar

AOP開發

spring-aop-3.2.0.RELEASE.jar

spring-aspects-3.2.0.RELEASE.jar

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

Spring Jdbc開發

spring-jdbc-3.2.0.RELEASE.jar

spring-tx-3.2.0.RELEASE.jar

Spring事務管理

spring-tx-3.2.0.RELEASE.jar

Spring整合其他ORM框架

spring-orm-3.2.0.RELEASE.jar

Spring在web中使用

spring-web-3.2.0.RELEASE.jar

Spring整合Junit測試

spring-test-3.2.0.RELEASE.jar

Hibernate的jar包導入:

* 核心包:hibernate3.jar

* lib/required/*.jar

* lib/jpa/*.jar

* 引入hibernate整合日志系統的jar包:

* 數據連接池:

* 數據庫驅動:

?二級緩存:(可選的.)

* backport-util-concurrent.jar

* commons-logging.jar

* ehcache-1.5.0.jar

2 配置文件

2.1 web.xml

<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

<!-- 配置Spring的監聽器 -->

<listener>

<!-- 監聽器默認加載的是WEB-INF/applicationContext.xml -->

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 指定Spring框架的配置文件所在的位置 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>

2.2 struts.xml

<struts><constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default"></package></struts>

2.3 加入配置文件

applicationContext.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"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><!-- 零障礙整合 在spring配置文件中引入hibernate的配置文件 --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"/></bean><!-- 配置Action --><bean id="bookAction" class="com.sihai.action.BookAction" scope="prototype"><property name="bookService" ref="bookService"/></bean><!-- Service的配置 --><bean id="bookService" class="com.sihai.service.BookService"><property name="bookDao" ref="bookDao"/></bean><!-- DAO的配置 --><bean id="bookDao" class="com.sihai.dao.BookDao"><property name="sessionFactory" ref="sessionFactory"/></bean><!-- 管理事務 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean><!-- 注解開啟事務 --><tx:annotation-driven transaction-manager="transactionManager"/> </beans>

Log4j.properties

### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ### log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=c:/mylog.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info, stdout

?Hibernate的配置:

?hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory><!-- 必須去配置的屬性 --><!-- 配置數據庫連接的基本信息: --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///ssh1</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123</property><!-- Hibernate的方言 --><!-- 生成底層SQL不同的 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 可選的屬性 --><!-- 顯示SQL --><property name="hibernate.show_sql">true</property><!-- 格式化SQL --><property name="hibernate.format_sql">true</property><property name="hibernate.connection.autocommit">false</property><!-- hbm:映射 to DDL: create drop alter --><property name="hibernate.hbm2ddl.auto">update</property><!-- C3P0連接池設定--><!-- 使用c3po連接池 配置連接池提供的供應商--><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property><!--在連接池中可用的數據庫連接的最少數目 --><property name="c3p0.min_size">5</property><!--在連接池中所有數據庫連接的最大數目 --><property name="c3p0.max_size">20</property><!--設定數據庫連接的過期時間,以秒為單位,如果連接池中的某個數據庫連接處于空閑狀態的時間超過了timeout時間,就會從連接池中清除 --><property name="c3p0.timeout">120</property><!--每3000秒檢查所有連接池中的空閑連接 以秒為單位--><property name="c3p0.idle_test_period">3000</property><!-- 通知Hibernate加載那些映射文件 --><mapping resource="cn/itcast/vo/Book.hbm.xml" /></session-factory> </hibernate-configuration>

?映射:

?格式:類名.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.sihai.vo.Book" table="book"><id name="id"><generator class="native"/></id><property name="name"/><property name="price"/></class> </hibernate-mapping>

3 Struts2和Spring的整合

3.1.新建包結構:

com.sihia.action

com.sihia.service

com.sihia.dao

com.sihia.vo

3.2創建實體類:

?Book

package com.sihia.vo;public class Book {private Integer id;private String name;private Double price;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}}

3.3.新建一個jsp頁面:

?addBook.jsp

?????

<s:form action="book_add" namespace="/" method="post" theme="simple">圖書名稱:<s:textfield name="name"/><br/>圖書價格:<s:textfield name="price"/><br/><s:submit value="添加圖書"/></s:form>

3.4.編寫Action:

public class BookAction extends ActionSupport implements ModelDriven<Book>{// 模型驅動類private Book book = new Book();public Book getModel() {return book;}// 處理請求的方法:public String add(){System.out.println("web層的添加執行了...");return NONE;}}

3.5.配置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><constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default"><action name="book_*" class="bookAction" method="{1}"></action></package></struts>

4 Struts2和Spring的整合兩種方式

4.1 Struts2自己管理Action:(方式一)

<action name="book_*" class="com.sihia.action.BookAction" method="{1}">

4.2 Action交給Spring管理:(方式二)

可以在<action>標簽上通過一個偽類名方式進行配置:

<action name="book_*" class="bookAction" method="{1}"></action>

在spring的配置文件中:

<!-- 配置Action --><bean id="bookAction" class="com.sihai.action.BookAction"></bean>

注意:Action交給Spring管理一定要配置scope=”prototype”

4.3 Web層獲得Service:

傳統方式:

* 獲得WebApplicationContext對象.

* 通過WebAppolicationContext中getBean(“”);

實際開發中:

* 引入了struts2-spring-plugin-2.3.15.3.jar

* 有一個配置文件 : struts-plugin.xml

開啟常量 :

<constant name="struts.objectFactory" value="spring" />

引發另一個常量的執行:(Spring的工廠類按照名稱自動注入)

struts.objectFactory.spring.autoWire = name

5 Spring整合Hibernate:

Spring整合Hibernate框架的時候有兩種方式:

5.1 零障礙整合:(一)

可以在Spring中引入Hibernate的配置文件.

1.通過LocalSessionFactoryBean在spring中直接引用hibernate配置文件

<!-- 零障礙整合 在spring配置文件中引入hibernate的配置文件 --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"/></bean>

2.Spring提供了Hibernate的模板.只需要將HibernateTemplate模板注入給DAO.

DAO繼承HibernateDaoSupport.

<!-- DAO的配置 --><bean id="bookDao" class="com.sihai.dao.BookDao"><property name="sessionFactory" ref="sessionFactory"/></bean>

改寫DAO:繼承HibernateDaoSupport類.

public class BookDao extends HibernateDaoSupport{public void save(Book book) {System.out.println("DAO層的保存圖書...");this.getHibernateTemplate().save(book);}}

3.創建一個映射文件 :

<hibernate-mapping><class name="com.sihai.vo.Book" table="book"><id name="id"><generator class="native"/></id><property name="name"/><property name="price"/></class></hibernate-mapping>

4.別忘記事務管理:

事務管理器:

<!-- 管理事務 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean>

5.注解管理事務:

<!-- 注解開啟事務 --><tx:annotation-driven transaction-manager="transactionManager"/>

6.在業務層類上添加一個注解:

@Transactional

5.2 沒有Hibernate配置文件的形式(二)

不需要Hibernate配置文件的方式,將Hibernate配置文件的信息直接配置到Spring中.

Hibernate配置文件中的信息 :

* 連接數據庫基本參數:

* Hibernate常用屬性:

* 連接池:

* 映射:

把Hibernate配置文件整合Spring中:

連接池:

<!-- 引入外部屬性文件. --><context:property-placeholder location="classpath:jdbc.properties"/><!-- 配置c3p0連接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"/><property name="jdbcUrl" value="${jdbc.url}"/><property name="user" value="${jdbc.user}"/><property name="password" value="${jdbc.password}"/></bean>

Hibernate常用屬性:

<!-- 配置Hibernate的屬性 --><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop><prop key="hibernate.connection.autocommit">false</prop></props></property>

映射

<!-- <property name="mappingResources"><list><value>cn/itcast/vo/Book.hbm.xml</value></list></property> --><property name="mappingDirectoryLocations"><list><value>classpath:cn/itcast/vo</value></list></property>

6 HibernateTemplate的API:

?Serializable save(Object entity) :保存數據

?void update(Object entity) :修改數據

?void delete(Object entity) :刪除數據

?<T> T get(Class<T> entityClass, Serializable id) :根據ID進行檢索.立即檢索

?<T> T load(Class<T> entityClass, Serializable id) :根據ID進行檢索.延遲檢索.

?List find(String queryString, Object... values) :支持HQL查詢.直接返回List集合.

?List findByCriteria(DetachedCriteria criteria) ?:離線條件查詢.

?List findByNamedQuery(String queryName, Object... values):命名查詢的方式.

總結

以上是生活随笔為你收集整理的【struts2+spring+hibernate】ssh框架整合开发的全部內容,希望文章能夠幫你解決所遇到的問題。

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