`
xianglg
  • 浏览: 66806 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2+hibernate+spring配置管理(一)——配置文件

阅读更多

虽然是简单的用户登录,但东西一点不少,基于MVC原理实现,共分DAO层,SERVICE层,ACTION层和WEB层,其中DAO和SERVICE层都有各自的接口。

今天主要讲解配置文件的代码,我学习实例,喜欢从控制层出发,然后用到了哪些类或者JSP,再一一扯“蛋”扯出来。

当然,还是先看web.xml

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"  
  3.          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  4.     <!-- Spring ApplicationContext配置文件的路径�,可使用通配符,多个路径用�1,号分隔,此参数用于后面的Spring-Context loader -->  
  5.     <context-param>  
  6.         <param-name>contextConfigLocation</param-name>  
  7.         <param-value>classpath*:spring/*.xml</param-value>  
  8.     </context-param>  
  9.   
  10.        
  11.     <!-- 著名 Character Encoding filter -->  
  12.     <filter>  
  13.         <filter-name>encodingFilter</filter-name>  
  14.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  15.         <init-param>  
  16.             <param-name>encoding</param-name>  
  17.             <param-value>UTF-8</param-value>  
  18.         </init-param>  
  19.     </filter>  
  20.     <!--Hibernate Open Session in View Filter-->  
  21.     <filter>  
  22.         <filter-name>hibernateFilter</filter-name>  
  23.         <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>  
  24.     </filter>  
  25.     <!-- ExtremeTable 导出Excel和Pdf的Filter -->  
  26.     <filter>  
  27.         <filter-name>eXtremeExport</filter-name>  
  28.         <filter-class>org.extremecomponents.table.filter.ExportFilter</filter-class>  
  29.     </filter>  
  30.     <filter-mapping>  
  31.         <filter-name>encodingFilter</filter-name>  
  32.         <url-pattern>*.do</url-pattern>  
  33.     </filter-mapping>  
  34.     <filter-mapping>  
  35.         <filter-name>encodingFilter</filter-name>  
  36.         <url-pattern>*.jsp</url-pattern>  
  37.     </filter-mapping>  
  38.     <filter-mapping>  
  39.         <filter-name>hibernateFilter</filter-name>  
  40.         <url-pattern>*.do</url-pattern>  
  41.     </filter-mapping>  
  42.   
  43.   
  44.     <!--Spring ApplicationContext 载入 -->  
  45.     <listener>  
  46.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  47.     </listener>  
  48.   
  49.     <!-- Spring 刷新Introspector防止内存泄露 -->  
  50.     <listener>  
  51.         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  52.     </listener>  
  53.   
  54.        
  55.     <!-- session超时定义,单位为分钟 -->  
  56.     <session-config>  
  57.         <session-timeout>10</session-timeout>  
  58.     </session-config>  
  59.   
  60. </web-app>  
  61.   

 

东西很简单,无非是配置一些过滤器呀,监听器的。主要讲一下openSessionInViewFilter吧,假设在你的应用中Hibernate是通过spring 来管理它的session.如果在你的应用中没有使用OpenSessionInViewFilter或者OpenSessionInViewInterceptor。session会在transaction结束后关闭,此时会抛出session is close 的异常。关于这方面的知识,值得大家去找一下相关资料仔细阅读。

strut2.xml

xml 代码
  1. <!---->
  2.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"   
  3.         "http://struts.apache.org/dtds/struts-2.0.dtd">    
  4. <struts >    
  5.     <include file ="struts-default.xml"/>       
  6.        
  7.     <package name ="default" extends ="struts-default">    
  8.         <action name="login" method="login" class="userAction">  
  9.             <result>/login_success.jspresult>  
  10.             <result name="input">/login.jspresult>  
  11.         action>  
  12. package>  
  13.        
  14. struts>  

可能注意到了,这里的Action交给SPRING来管理了。所以我们看一下application.xml的代码吧

xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>      
  2. <!---->>      
  3.      
  4. <beans>      
  5.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">         
  6.         <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />         
  7.         <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:oracleDB" />         
  8.         <property name="user" value="xxx" />         
  9.         <property name="password" value="xxx" />              
  10.         <!---->           
  11.         <property name="minPoolSize" value="3" />       
  12.         <!---->        
  13.         <property name="maxPoolSize" value="30" />       
  14.         <!---->              
  15.         <property name="maxIdleTime" value="1800" />       
  16.         <!---->              
  17.         <property name="acquireIncrement" value="3" />        
  18.         <property name="maxStatements" value="0" />         
  19.         <property name="initialPoolSize" value="3" />         
  20.         <!---->      
  21.         <property name="idleConnectionTestPeriod" value="60" />         
  22.         <!---->      
  23.         <property name="acquireRetryAttempts" value="30" />         
  24.         <property name="breakAfterAcquireFailure" value="true" />             
  25.         <property name="testConnectionOnCheckout" value="false" />         
  26.     bean>      
  27.           
  28.     <bean id="sessionFactory"     
  29.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">      
  30.         <property name="dataSource">      
  31.             <ref bean="dataSource" />      
  32.         property>      
  33.         <property name="hibernateProperties">      
  34.             <props>      
  35.                 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialectprop>      
  36.                 <prop key="hibernate.show_sql">trueprop>      
  37.                 <prop key="hibernate.generate_statistics">trueprop>      
  38.                 <prop key="hibernate.connection.release_mode">autoprop>      
  39.                 <prop key="hibernate.autoReconnect">trueprop>                   
  40.             props>      
  41.         property>      
  42.         <property name="mappingDirectoryLocations">       
  43.         <list>      
  44.             <value>      
  45.                 classpath:com/caitong/pingou/bean      
  46.             value>      
  47.         list>                               
  48.         property>      
  49.     bean>       
  50.           
  51.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">          
  52.           <property name="sessionFactory">          
  53.               <ref bean="sessionFactory"/>          
  54.           property>          
  55.     bean>        
  56.               
  57.     <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">          
  58.         <property name="transactionManager" ref="transactionManager"/>          
  59.         <property name="transactionAttributes">        
  60.             <props>        
  61.                 <!---->      
  62.                 <prop key="add*">PROPAGATION_REQUIREDprop>        
  63.                 <prop key="find*">PROPAGATION_REQUIRED,readOnlyprop>        
  64.             props>        
  65.         property>        
  66.     bean>          
  67.                  
  68.    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">          
  69.         <property name="beanNames">        
  70.             <value>*Servicevalue>        
  71.         property>        
  72.         <property name="interceptorNames">          
  73.             <list>          
  74.                 <value>transactionInterceptorvalue>          
  75.                 <!---->          
  76.             list>          
  77.         property>          
  78.     bean>          
  79.           
  80.     <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">          
  81.           <property name="transactionInterceptor" ref="transactionInterceptor"/>          
  82.     bean>        
  83.           
  84.     <bean id="baseDAO" class="com.caitong.pingou.dao.impl.BaseDAO" abstract="true">      
  85.         <property name="sessionFactory">      
  86.             <ref bean="sessionFactory"/>      
  87.         property>      
  88.     bean>      
  89.     <bean id="userDAO"       
  90.         class="com.caitong.pingou.dao.impl.UserDAO" parent="baseDAO">      
  91.     bean>      
  92.           
  93.     <bean id="userService" class="com.caitong.pingou.service.impl.UserService"       
  94.         autowire="byName">      
  95.     bean>      
  96.           
  97.     <bean id="userAction" class="com.caitong.pingou.action.UserAction"            
  98.         autowire="byName">      
  99.     bean>      
  100. beans>    

应该说SPRING太强大了,以至于一个配置文件可以解决任何一件事情。简单介绍一下这个配置文件吧,例子用的是c3p0的数据库链接池,hibernate的配置文件也都集成在这里了,如果细心的读者,可能注意到了事务管理模块。是的,本例的事务管理是由spring来管理,而且集中在service层

xml 代码
  1. <property name="beanNames">     
  2.             <value>*Servicevalue>     
  3.         property>   

有人可能提出问题,为什么非得要放在service层,而不是dao层,应该说,事务管理有一个不成文的规定,尽量将问题放在上层处理。
然后每个类由SPRING来管理,并且autowire="byName"来寻找依赖注入的bean。

 

所有的xml文件都已经配置完了,其实最重要也是这个,XML文件将是框架的一个趋势,掌握了它,其实你已经打开了这个框架的门。

分享到:
评论

相关推荐

    NewsSystem:基于Struts + Spring + Hibernate + Bootstrap

    jQuery的引导程序UEditor——在线HTML编辑器模块介绍公共类设计Web.xml中配置Struts及初始化Spring容器,准备WEB-INF路径下applicationContex.xml文件作为Spring配置文件,在Spring中定义数据源Bean,使用C3P0数据源...

    低清版 大型门户网站是这样炼成的.pdf

    2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts 2应用开发实务 61 2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建...

    JAVA WEB典型模块与项目实战大全

    3.4 实现spring、struts2.x和hibernate框架集成  3.5 小结  第2篇 典型模块开发  第4章 在线文本编辑器(fckeditor)  4.1 分析fckeditor在线文本编辑器  4.2 fckeditor在线文本编辑器初级应用  4.3 ...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 ...

    Spring in Action中文版 清晰pdf part2

    附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必...

    Java Web程序设计教程

    8.3.2hibernate配置文件 177 8.3.3configuration与sessionfactory 178 8.3.4session类 179 8.3.5hibernate中的关联关系 179 8.3.6hibernate映射文件 180 8.3.7hibernate工作原理 182 8.4项目实战——新闻内容...

    Spring in Action中文版 清晰pdf part1

    附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必...

    从Java走向Java+EE+.rar

    12.2.3 Hibernate配置文件 159 12.3 使用Hibernate 161 12.4 小结 165 第13章 Struts和Hibernate实例——两个与登录有关的实例 166 13.1 Struts和Hibernate的开发环境配置 166 13.1.1 数据库的安装和管理...

    JAVA程序开发大全---上半部分

    9.2.5 使用Hibernate配置文件编辑器 141 9.2.6 使用反向工程生成持久化对象、映射文件和DAO类 143 9.2.7 使用Hibernate功能 151 9.3 MyEclipse中Hibernate框架的高级操作 152 9.3.1 在Hibernate反向工程中定制映射...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...

    JuniorYear_J2EE_HostelWorld:2017年 大三学年 J2EE课程的大作业——HostelWorld客栈管理系统

    使用Eclipse进行开发,数据库为MySQL5.6,使用的框架是SSH(Spring+Struts+Hibernate)框架。 已将sql文件上传,导入项目后,需要自行导入SSH框架所需要的Jar包(如果没有,可以从这个百度网盘链接中下载。链接: ...

    ssh登陆实例——集成3个框架

    ssh登陆实例 里面的文件都写全的。 按照如下操作: 1.建立数据库(不需要建立表) 2.修改hibernate配置文件,也可以不修改,但必须建立同名的数据库 3.运行项目里面导出表的文件,详见代码

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    iuhyiuhkjh908u0980

    我们的Hello World程序是你开发基于Struts2框架程序的第一步.这里我们会提供循序渐进的教程来开发基于Struts2框架的Hello World程序. 教程包含基本的步骤像创建目录结构,建立build.xml文件来使用Ant构建工具创建程序...

    java_技术参考汇集(完整版)

    java配置文件编写说明 java设计模式 jboss log4j spring starts——actiong struts标签 swing tomcat webandxml 正则表达式……………… …………………… ………… 等,,,最齐全的java技术参考汇集。

    基于J2EE框架的个人博客系统项目毕业设计论...

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    JAVA上百实例源码以及开源项目

    2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。 WebStorage HTML新增的本地存储解决...

Global site tag (gtag.js) - Google Analytics