• SSH Project热身整合


    写在前面:
    本来要在2号写的,但2号让电信屏了,无法打开网页,3号也郁闷,肚子痛,痛了一下午真受不了,也不知道什么原因,就冲了杯立顿喝了后一直痛,痛的时候才感觉健康真的就是幸福,现在快零点才好点,于是上来写!
    首先介绍下什么是SSH,SSH为Struts+Spring+Hibernate三个首字母缩写,为目前很多公司所采用的一种软件架构方式,当然随着UI层的不断出新,也有JSF和AJAJX代替Struts来做UI。
    SSH的 优点就是使用不同的三种框架,每层使用它们三种框架中的最优秀部份,当然,三种框架其实独自都可以实现MVC!
    Struts大量的库可以为我们实现用户接口非常的方便,而且在商业运作方面来说Struts已经非常成熟比其他的如JSF等等来说商用的选择比较明智,因为毕竟稳定是商用的一个必要条件!
    Struts以其松耦合成功的把VIEW和MODEL层进行了分离,而通过Spring的AOP把Struts连接很紧密的ActionForm和Action进行了分离!
    Hibernate使用ORM技术把模型和关系数据进行了映射,通过类和表的对应实现了数据持久化,在EJB3中也集成了hibernate!
    Spring在其中起一个总控的作用!ApplicationContext是Spring的核心,在WEB应用中我们会用到WebApplicationContext,它是继承自ApplicationContext
    如果要在WEB中使用Spring,在web.xml中添加<context-param>
    三者的加载顺序一般为Struts  Spring Hibernate

    Step1:先建立一个WebProject,我们第一件事来加载一个过滤器,也就是让我们的项目支持中文,而不必在代码中写编码方式!
    复制%TOMCAT_HOME%webapps\jsp-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.java到我们工程的fengyan.filters包下,该文件为TOMCAT中的一个例子文件,然后在web.xml文件中如下配置:

     <!-- 过滤器 -->
      
    <filter>
        
    <filter-name>Set Character Encoding</filter-name>
        
    <filter-class>fengyan.filters.SetCharacterEncodingFilter</filter-class>
        
    <init-param>
          
    <param-name>encoding</param-name>
          
    <param-value>GBK</param-value><!-- 设置为GBK -->
        
    </init-param>
      
    </filter>
      
    <filter-mapping>
        
    <filter-name>Set Character Encoding</filter-name>
        
    <url-pattern>/*</url-pattern><!-- 作用范围 -->
      
    </filter-mapping>

    Step2:按上述顺序我们先加载Struts 1.2。
    Step3:加载Spring 如下:

    加载Spring AOP, 核心库,Hibhernate3以及Web支持!

    将 配置文件放在WEB-INF下。

    Step4:创建fengyan.hibernate.config包并在其中添加Hibernate如下


    选择Spring的配置文件为Hibernate的配置文件!

    创建一个sessionFactory Bean!
    Step5:打开Struts-config.xml添加一个插件,如下:


    <!--生成的代码如下:-->
          
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        
    <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
      
    </plug-in>

    Step6:将 数据库中的表用Hibernate映射出来,如下:

    在接着的主键类型中我们选择assigned自己指定!
    为了使Hibernate导出的Beans可以由Struts框架用做FormBean,我们需要将 这些HibernateBeans都继承自ActionForm,

    Step7:在Struts-config.xml中 add new action form and jsp,其中选择Existing FormBean已存在的Formbean,类型为Hibernate导出的Resgister类

    <!--生成代码如下 :-->
     
    <form-beans >
        
    <form-bean name="registerForm" type="fengyan.hibernate.beans.Register" />
      
    </form-beans>

      
    <action-mappings >
        
    <action
          
    attribute="registerForm"
          input
    ="/form/register.jsp"
          name
    ="registerForm"
          path
    ="/register"
          scope
    ="request"
          type
    ="fengyan.struts.action.RegisterAction" />

      
    </action-mappings>

    将 action类型type="fengyan.struts.action.RegisterAction"改为Spring中的代理type="org.springframework.web.struts.DelegatingActionProxy"
    并在RegisterAction中添加一个RegisterDAO属性,并在其execute方法中添加rdao.save代码如下:

    RegisterAction.java

    另外为了使用Spring将Struts的FormBean与ActionBean分离,我们又需要在Spring的配置文件中添加符合Spring的spring-beans.dtd标准的声明!
    Step8:在spring的配置文件中添加一个类型RegisterAction的Bean代码如下: 

     <!-- struts-config.xml表单action的映射信息 -->
      
    <action-mappings >
        
    <action
          
    attribute="registerForm"
          input
    ="/form/register.jsp"
          name
    ="registerForm"
          path
    ="/registerAction"
          scope
    ="request"
          type
    ="org.springframework.web.struts.DelegatingActionProxy" />
      
    </action-mappings><!-- 会到Spring的配置文件中寻找registerAction的bean -->



    <!--  applicationContext.xml配置文件
            分离Struts表单的Action
            RegisterAction 
            该bean的name要与Struts中action的path名字相同! 
    -->
        
    <bean name="/registerAction" class="fengyan.struts.action.RegisterAction"
              abstract
    ="false" singleton="false" lazy-init="default"
              autowire
    ="default" dependency-check="default">
            
    <property name="rdao"><!-- 我们在Action中定义了数据访问对象 -->
                
    <ref bean="registerDAO"/>
            
    </property>
        
    </bean>
        
    <!-- 配置Hibernate根据表Register生成的数据访问对象DAO -->    
        
    <bean id="registerDAO" class="fengyan.hibernate.beans.RegisterDAO">
            
    <!-- 添加一个sessionFactory属性,该属性为registerDAO父类中的成员属性 -->
            
    <property name="sessionFactory">
                
    <ref bean="sessionFactory" />
            
    </property>
        
    </bean>

    我们可以看到整个系统中,我们用Struts侧身做VIEW ( 视图JSP),而用Spring做Controller处理业务层 ,Hibernate做MODEL模型层!

  • 相关阅读:
    互联网行业进入规范和监管时期 大数据行业也不例外
    R语言与显著性检验学习笔记
    R语言与显著性检验学习笔记
    大数据应用向前一步是什么
    大数据应用向前一步是什么
    CAS 4.0 配置开发手冊
    WinCE隐藏显示任务栏,当任务栏隐藏时将其显示,当任务栏显示时将其隐藏(FindWindow,ShowWindow,IsWindowVisible),
    每日算法之二十六:Substring with Concatenation of All Words
    Django网站管理--ModelAdmin
    Android实战简易教程-第四十一枪(显示倒计时的Button-适用于获取验证码)
  • 原文地址:https://www.cnblogs.com/eflylab/p/610896.html
Copyright © 2020-2023  润新知