struts+spring+hibernate感悟
三者的结合堪称完美,整合三者关键是配置文件
1.web.xml用于web服务器装载过滤器,servlet,以及配置文件
struts在此被装载org.apache.struts.action.ActionServlet,还有它的配置参数config文件struts-config.xml,spring在此被装载org.springframework.web.context.ContextLoaderServlet还有它的配置文件applicationContext.xml,其他省略不列出
例子:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.struts-config.xml这个文件
这个是strust专有配置文件,配置form,全局转发,action,message-resources(用于显示提示信息),插件
格式如下:
<struts-config>
<form-beans>
<form-bean name="logonform" type="com.binghe.forms.LogonForm" />
.....
</form-beans>
<global-forwards>
<forward name="logon" path="/login.jsp" />
.......
</global-forwards>
<action-mappings>
<action path="/logon"
type="org.springframework.web.struts.DelegatingActionProxy" name="logonform"
input="/login.jsp" scope="request" validate="true">
<forward name="logon" path="/login.jsp" />
.....
</action>
......
</action-mappings>
<controller locale="true" />
<message-resources parameter="com.binghe.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml" />
</plug-in>
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>
3.applicationContext.xml
这个是spring的专有配置文件,里面配置代理hibernate资源和struts的action
格式如下:
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:microsoft:sqlserver://127.0.0.1:1400;DatabaseName=books</value>
</property>
<property name="username">
<value>sa</value>
</property>
<property name="password">
<value>123</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>
com/binghe/hibernate/booktype/BookType.hbm.xml
</value>
<value>
com/binghe/hibernate/book/Book.hbm.xml
</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">false</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="bookTypeDAO"
class="com.binghe.spring.booktype.BookTypeDAOImp">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="bookDAO"
class="com.binghe.spring.book.BookDAOImp">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
<property name="bookTypeDAO">
<ref bean="bookTypeDAOProxy" />
</property>
</bean>
<bean id="bookTypeDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="bookTypeDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="bookDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="bookDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="zhuxiao*">PROPAGATION_REQUIRED</prop>
<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean name="/booktype"
class="com.binghe.struts.action.booktype.BookTypeAction"
singleton="false">
<property name="bookTypeDAO">
<ref bean="bookTypeDAOProxy" />
</property>
</bean>
<bean name="/book"
class="com.binghe.struts.action.book.BookAction"
singleton="false">
<property name="bookDAO">
<ref bean="bookDAOProxy" />
</property>
</bean>
</beans>
4.hibernate的配置文件为POJOClassName.hbm.xml,POJOClassName是你定义的一个javabean,你可以把这个配置文件放在和pojobean一个目录下,也可以放在其他目录,然后引用,格式如下:
<hibernate-mapping package="com.binghe.hibernate.reader">
<class name="Reader" table="reader" lazy="false">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="code" column="code" type="string"
not-null="false" />
<property name="name" column="name" type="string"
not-null="false" />
<property name="userId" column="userid" type="integer"
not-null="false" />
<property name="typeId" column="typeid" type="integer"
not-null="false" />
<many-to-one name="user" class="com.binghe.utils.UserBean"
insert="false" update="false">
<column name="userid" />
</many-to-one>
<many-to-one name="readerType"
class="com.binghe.hibernate.readertype.ReaderType" insert="false"
update="false">
<column name="typeid" />
</many-to-one>
<set name="borrowBills" lazy="false"
inverse="true" cascade="none">
<key column="readerid" />
<one-to-many
class="com.binghe.hibernate.borrowbill.BorrowBill" />
</set>
</hibernate-mapping>
上面的所有配置信息是我从自己做的一个项目中抽取出来的
spring中的依赖注入/控制反转是不错的,你可以定义任何接口,然后实现接口里面的方法,通过spring的配置文件把你的接口注入到任何地方,前提是你引用的必须是接口,在引用的地方必须有接口定义以及getter方法,不过你可以把这个接口当作类似javabean的一个属性一样来使用,javabean都有getter和setter方法的
spring里面的事务代理也挺挺不错的
<property name="target">
<ref local="bookTypeDAO" />
</property>
target它是指向要注入的类,代理这个类所实现的接口
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
transactionAttributes是对所代理的方法哪些方法提供事务,比如你定义一个以add开头的方法,那它就可以有事务管理了,对于它里面的所有操作,都可以实现事务机制,若有异常就回滚事务
hibernate的映射机制是orm,面向对象的数据库查询,查询时必须提供查询类(如find方法"from Book"hql语句中的Book不是表名而是类名),以得到它的实例,对应数据库的javabean的属性必须都是对象型的,int、double必须定义为Integer和Double类型,映射表有个lazy属性应该设置false,不然在查询数据库后加载一条记录时会报错。一对多双相关联:
一对多映射,复杂
<set name="borrowBills" lazy="false"
inverse="true" cascade="none">
<key column="readerid" />
<one-to-many
class="com.binghe.hibernate.borrowbill.BorrowBill" />
</set>
cascade属性不好用,如果有删除记录操作时我都把它设置成none值,双方都要设置,否则报错,因为没法相互通知
多对一映射,简单
<many-to-one name="name" type="com.ClassName" update="false" insert="false">
<column name="nameId" />
</many-to-one>
分享到:
相关推荐
chap01 领略清晰的MVC流程----Struts讲解技术资料 chap02 体验控制反转的理念----Spring介绍技术文档 chap03 感悟Hibernate操作数据的方便技术资料 chap04 SSH互整合技术资料
SSH是Java开发中的一种经典框架组合,主要包括Struts、Spring和Hibernate三个部分。这个压缩包文件包含四篇关于SSH技术的PDF文档,分别是关于Struts、Spring、Hibernate以及它们之间整合的详细介绍。以下是对这些...
SSH框架的掌握包括了对Java基础和高级概念的理解,如类、对象、继承、接口等,以及SSH框架中各组件的应用,如Struts的MVC设计模式、Spring的依赖注入和事务管理、Hibernate的对象关系映射。 此外,他还掌握了...
SSH三大框架经典入门教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 资料包含:领略清晰的MVC流程- --- Struts...
文档分为两部分,第一部分主要介绍了Struts、Spring和Hibernate三个框架在Java Web开发中的应用和特点,第二部分则是实习生的个人经历和感悟。 第一部分中,我们可以看到,Struts、Spring和Hibernate三个框架在Java...
本文主要探讨的是SSH框架,即Struts、Spring和Hibernate的使用心得。 首先,Struts作为经典的MVC(模型-视图-控制器)框架,其核心是struts-config.xml配置文件。这个配置文件定义了请求路径、动作映射、以及Action...
本教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 chap01 领略清晰的MVC流程----Struts讲解技术资料.pdf chap02 ...
本文总结了前端开发实习生的实习经历,涵盖了 Struts、Spring、Hibernate 三个框架的使用和区别,介绍了软件开发过程中的每个细节,并分享了实习生在实习过程中的经验和感悟。 1. Struts 框架: Struts 代表了表示...
本教程共有4章,以非常通俗易懂的方式,向我们介绍Struts、Spring、Hibernate三大现在比较流行的JAVA_WEB开发框架,非常适合刚刚接触的朋友快速入门。 chap01 领略清晰的MVC流程----Struts讲解技术资料.pdf chap02 ...
同时,实践了流行的MVC(Model-View-Controller)设计模式,增强了对Struts、Spring、Hibernate三大框架协同工作的理解。此外,运用CSS和jQuery提升了用户体验,为未来的Web开发积累了宝贵的经验。在未来的学习和...
chap01 领略清晰的MVC流程----Struts讲解技术资料 chap02 体验控制反转的理念----Spring介绍技术文档 chap03 感悟Hibernate操作数据的方便技术资料 chap04 SSH互整合技术资料
SSH框架相关技术资料专题资源目录:【】19061a0ebe09aa9a85cc5725afbd6286【】chap01领略清晰的MVC流程----Struts讲解技术资料【】chap02体验控制反转的理念----Spring介绍技术文档【】chap03感悟Hibernate操作数据...
chap03 感悟Hibernate操作数据的方便技术资料.pdf chap04 SSH互整合技术资料.pdf Struts2权威指南完整版.pdf struts2源代码分析(个人觉得非常经典).docx 尚学堂-马士兵Struts2教学视频之Struts2_学习笔记.pdf
这里提到了SSH(Struts、Spring、Hibernate)框架,它将项目分为表示层、业务逻辑层、持久层,还有可能扩展的通信层等。包的划分应遵循一定的规范,如SSH框架中的bean、bo、service、dao、filter、util等,这些包...
本资源一个包括4个PDF文档 第一个文档 Struts技术讲解资料...第三个文档 Hibernate技术讲解文档 ----感悟Hibernate操作数据的方便技术资料 第四个文档 SSH互整合技术资料 SSH入门的绝好资料,保证大家下载了不会后悔!
许多开源项目和库都是用Java编写的,如Spring框架、Hibernate和Maven等,它们极大地丰富了Java的生态系统。此外,Stack Overflow、GitHub和各种论坛都是Java开发者交流和求助的好去处。 ### 个人经验分享 文章中...
第三阶段,学习了HTML/CSS、JavaScript核心,以及Servlet/JSP、Ajax和JavaScript框架,特别是SSH三大框架(Struts2、Hibernate、Spring)的运用。通过完成“当当书店工程”,将这些前端和后端技术融合应用。 【实训...
- **框架技术**:如Struts、Hibernate、MyBatis和Spring。 - **软件工程**:了解软件过程、软件测试和行业标准CMMI5。 5. **移动应用开发**: - **Android**:基于Java的移动应用开发,涵盖游戏和应用。 - **...