SSH整合

流程
jsp-->ActionServlet(接收请求)-->ActionForm(填充/页面get/set)-->Action(调用service/注入)
-->service(调用DAO/注入)-->DAO(使用pojos/注入)-->pojos

添加顺序:hibernate->spring->生成pojos->删除asm2.2.3->添加log4j->structs

配置文件
        hibernate配置文件
            pojo.hbm.xml + hibernate.cfg.xml  不需要配置
        spring配置文件
            applicationContext.xml +  实现注解时:  xxx.xml
            applicationContext.xml
                1.spring自动生成sessionFactory
                2.spring自动将sessionFactory注入给DAO
                3.service注入:将DAO注入给service
                4.事务管理器:将sessionFactory注入给HibernateTransactionManager
                5.事务属性:<tx:advice:>  注意换头+四大属性
                6.织入:<aop>
                7.Action:把service注入给Action  注意bean内不是id 而是name 是structs-config中action-mappings中的action中的path
        structs配置文件
            structs-config.xml  在WEB-INF下
                1.ActionForm: name+type
                2.Action:  path:页面请求  parameter:页面请求参数p   name:formBean   type:Action
        web.xml 在WEB-INF下
                1.初始化配置
                    contextConfigLocation -->classpath:appli*.xml
                2.过滤器
                    中文处理  chineseFilter  -->CharacterEncodingFilter + init-param:encoding->utf-8
                    session控制开关  openSessionInViewFilter  关闭session
                3.监听器
                    ContextLoaderListener 监听applicationContext.xml文件
                4.servlet
                    ActionServlet  是structs核心控制器  工具配置structs会自动生成  
                            在dwr实现下需要手动配置DwrServlet
                           
                           
        applicationContext.xml如下:
    <!-- spring自动创建sessionFactory工厂  -->
    <!--  取代了hibernate实现  由于事务 spring本身实现了代理 -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
    </bean>
   
    <!-- DAO -->
    <!-- spring对hibernate封装模板HibernateTemplate DAO继承HibernateDaoSupport -->
    <!-- HibernateDaoSupport 存在setSessionFactory  需要注入 -->
    <bean id="EmpDAO" class="com.dao.EmpDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="DepDAO" class="com.dao.DepDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
   
    <!-- 业务层service -->
    <bean id="empService" class="com.service.EmpService">
       <property name="depDAO" ref="DepDAO"></property>
       <property name="empDAO" ref="EmpDAO"></property>
    </bean>
   
    <!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
       <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
   
    <!-- 事务属性advice -->
    <tx:advice id="mytx" transaction-manager="transactionManager">
        <tx:attributes>
           <tx:method name="*"/>
        </tx:attributes>
     </tx:advice>
    
     <!-- 织入 -->
     <aop:config>
        <aop:advisor advice-ref="mytx" pointcut="execution(* com.service.*.*(..))"/>
     </aop:config>
    
     <!-- action -->
     <!-- action调用service service由spring注入 -->
     <!-- 在struts-config.xml中的action-mapping不需要structs去new action 只需要代理即可 由spring代理实现 -->
     <bean name="/emp" class="com.actions.EmpAction">
        <property name="empService" ref="empService"></property>
     </bean>
     <!-- 注意:bean内是name  不是id name中的内容是action-mappings下的action的path-->
    

        web.xml如下:
    <!-- 配置文件路径:contextConfigLocation:读取applicationContext.xml文件
                spring内部通过SAX解析xml文件
         过滤器:
             session开关:OpenSessionInViewFilter:打开对数据库的操作
             中文处理:CharacterEncodingFilter  注意初始化参数别忘记写
         监听器:
             ContextLoaderListener:加载applicationContext.xml文件
         structs-action:
             ActionServlet:获取页面*.do请求
            
         //如果不使用structs,而是dwr,需要配置DWRSwrvlet
         在WEB-INF下。。。
     -->

    <!-- 配置文件路径 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:app*.xml</param-value>
    </context-param>

    <!-- 控制session开关 -->
    <filter>
        <filter-name>OpenSession</filter-name>
        <filter-class>
            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
        </filter-class>
    </filter>

    <!-- 中文处理 -->
    <filter>
        <filter-name>ChineseFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>OpenSession</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>ChineseFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 监听器 -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
   
    <!-- action   ActionServlet(structs工具自动生成)-->
    <servlet>
        <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>
        <init-param>
            <param-name>debug</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>3</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>

    
        struts-config.xml如下:
    <!-- form-bean -->
  <form-beans> <!-- empForm随便取的 在action-mapping中使用 -->
     <form-bean name="empForm" type="com.forms.EmpForm"></form-bean>
  </form-beans>
  <global-exceptions />
  <global-forwards />
 
  <!-- action-mapping -->
  <action-mappings> <!-- 页面路径以/emp的接收   填充到name="empForm"  到spring代理的action处理  参数通过p获取页面的p  在action中就要写p作为键的值的方法 -->
    <action path="/emp" name="empForm" type="org.springframework.web.struts.DelegatingActionProxy" parameter="p"></action>
  </action-mappings>
  
   <!-- 请求处理器  com.util.MyRequest继承RequestProcessor处理编码问题 -->
  <controller processorClass="com.util.MyRequest"></controller>
 
  <!-- 资源文件  i18n国际化 -->
  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值