名词解释 jar,war,ear

jar :java archive(封装类)
包含:class、properties文件,是文件封装的最小单元;
部署文件:application-client.xml
war :Web Archive(封装web站点)
包含: Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等;
部署文件: web.xml
ear :Enterprise Archive(封装ejb)
包含:除了包含JAR、WAR以外,还包括EJB组件
部署文件:application.xml


jar包:通常是开发时要引用通用类,打成包便于存放管理。
war包:是做好一个web应用后,通常是网站,打成包部署到容器中。
ear包:企业级应用,通常是EJB打成ear包。
所有的包都是用jar打的,只不过目标文件的扩展名不一样
------------------------------------------------------------------名词解释完------------------------------------------------------------------------------------------

分析
struts2
    基本jar: apps / struts2-blank.war
    查看Action加载信息:struts2-config-browser-plugin.jar   插件,
    注解开发:struts2-convention-plugin.jar       
    json(ajax):struts2-json-plugin.jar  
    整合Spring:struts2-spring-plugin.jar      
web.xml(struct2是一个过滤器)
      <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>
在src下创建 struts.xml

Spring
    基本jar : beans、core、 context、expression  、 common-logging 、log4j
    AOP开发 : aop、aspecj
    web开发 : web
    测试junit : test
    jdbc开发 : jdbc 、tx
    整合 hibernate : orm

在src编写 log4j.properties 、 applicationContext.xml
web.xml
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <!-- 加载配置文件默认 WEB-INF/applicationContext.xml -->
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
      </context-param>

Hibernate
    最基本jar: hibernate3.jar 、 lib/required/*.jar 、
    日志: slf4j-log4j.jar 、log4j.jar、
    注解:lib/jpa/hibernate-jpa-2.0-api-1.0.1.Final.jar
    c3p0连接池jar包
    数据库驱动
    二级缓存: ehcache-1.5.0.jar、backport-util-concurrent.jar、common-logging
在src 配置hibernate.cfg.xml


结论: 在lib导入42个jar, web.xml配置struts2核心控制器,Spring监听器、 在src下
log4j.properties(日志)、struts.xml applicationContext.xml 、 hibernate.cfg.xml

------------------------------------------------------------------ 分析完 ------------------------------------------------------------------------------------------

 Struts2 与 Spring 框架的整合
方式一: Action由Spring创建管理
    步骤一(导入整合包): 导入 struts2-spring-plugin.jar
    步骤二(添加使用声明): 在struts.xml 添加 <constant name="struts.objectFactory" value="spring"></constant>
    步骤三(添加使用配置): 将Action的 配置到Spring容器,在struts.xml 通过 class通过伪类名 指向spring容器bean id  
    demo:    struts.xml
            <action name="addbook" class="addBookAction"></action>
        application.xml
            <bean id="addBookAction" class="cn.itcast.web.action.AddBookAction">
                <property name="bookService" ref="bookService"></property>
            </bean>

好处: Action作为Spring中一个Bean ,对Action很方便进行AOP 切面编程
注意问题 : Spring中Bean的默认scope 是 singleton ,需要手动将Action的Bean 配置scope="prototype"

方式二 : Action自动装配Service (Action由Struts2 框架自己管理 )
    步骤一(导入整合包): 导入 struts2-spring-plugin-2.3.7.jar
    步骤二(添加使用声明): 在struts.xml 添加 <constant name="struts.objectFactory" value="spring"></constant>
    步骤三(添加使用配置,struct版的): struts.xml 配置Action 完整类名(Action由Struts2自己管理) ,在Spring配置Service, service对象会根据名称自动装配到 Action中
    *  struts.objectFactory.spring.autoWire = name 默认Service安装名字对Action进行自动装配
        demo:public class AddBookAction extends ActionSupport implements ModelDriven<Book> {
            // 注入Service
            private BookService bookService;
            public void setBookService(BookService bookService) {
                this.bookService = bookService;
            }
    }
    
    applicationContext.xml
    <bean id="bookService" class="cn.itcast.service.impl.BookServiceImpl">
        <property name="bookDAO" ref="bookDAO"></property>
    </bean>
    
    * bean的id(bookService) 匹配 AddBookAction的 setBookService方法

注意问题: 自动装配,确保action中set方法名与 spring bean的id 匹配 (大小写问题)

 Spring和Hibernate
方式一: 零障碍整合 (直接在Spring中引入 hibernate的配置文件 )
    步骤一: BookDAO 继承 HibernateDaoSupport
    步骤二: 使用 LocalSessionFactoryBean 直接引用hibernate 配置文件
        <!-- 配置DAO  -->
        <bean id="bookDAO" class="cn.itcast.dao.impl.BookDAOImpl">
            <!-- 注入SessionFactory到 DAO -->
            <!-- HibernateDaoSupport 根据 SessionFactory 创建 HibernateTemplate 对象 -->
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!-- spring整合hibernate第一种方式 -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        </bean>
    步骤三: Spring 事务管理
        <!-- 事务管理器 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        
        <tx:annotation-driven transaction-manager="transactionManager"/>
        
        @Transactional
        public class BookServiceImpl implements BookService {
        }
    
方式二 :将hibernate所有配置 都写入Spring 配置文件,不需要单独hibernate配置文件了
    步骤一: 在applicationContext.xml 配置数据库连接池 c3p0
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <!-- 配置c3p0 连接池 -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"></property>
            <property name="jdbcUrl" value="${jdbc.url}"></property>
            <property name="user" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
        </bean>
    * 需要在src 编写单独 jdbc.properties
 
    步骤二: 在Spring配置sessionFactory
        <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <!-- 引用数据库连接池 -->
            <property name="dataSource" ref="dataSource"></property>
            <!-- 配置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.current_session_context_class">thread</prop>
                </props>
            </property>
            <!-- 引用hbm 映射文件 -->
                <property name="mappingDirectoryLocations">
                <list>
    <!--                 引用目录,加载目录下所有 hbm 文件 -->
                    <value>classpath:cn/itcast/domain</value>
                </list>
            </property>
        </bean>
    
    步骤三 : <!-- 事务管理器 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        
        <tx:annotation-driven transaction-manager="transactionManager"/>
        
        @Transactional
        public class BookServiceImpl implements BookService {
        }

-------------------------------------------------------------------------------ssh整合结束-----------------------------------------------------------------

posted on 2013-07-20 18:42  Glimis  阅读(634)  评论(0编辑  收藏  举报