名词解释 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整合结束-----------------------------------------------------------------