SSH整合
一:hibernate
1. 添加hibernate jar包
a) hibernate3.jar
b) sqljdbc.jar
c) hibernate-3.2/lib/*所有jar包
2. 添加hibernate配置文件
a) etc/hibernate.cfg.xml
b) etc/log4j.properties
c) 映射文件()
i. hibernate-3.2/eg/org/hibernate/auction/User.hbm.xml
d) 将实体映射文件添加至主配置文件hibernate.cfg.xml中(<mapping resource="pojo/Product.hbm.xml"/>)
二:spring
3. 添加spring jar包
a) 1个spring-framework-2.0/dist/spring.jar
b) 2个spring-framework-2.0/lib/aspectj/aspectjrt.jar和aspectjweaver.jar
c) 3个
i. spring-framework-2.0/lib/jakarta-commons/commons-pool.jar
ii. spring-framework-2.0/lib/jakarta-commons/commons-logging.jar
iii. spring-framework-2.0/lib/jakarta-commons/commons-dbcp.jar
iv. spring-framework-2.0/lib/log4j/log4j-1.2.14.jar
4. 添加spring主配置文件
a) spring-framework-2.0/samples/jpetstore/annotation/WEB-INF/applicationContext.xml到src下
b) 加spring提示文件
i. 在myeclipse工具栏window-preperences/输入xml
有个XML Catalog–Add –选uri
三个:spring-aop-2.0.xsd面向方面编程
spring-tx-2.0.xsd通知注册
spring-beans-2.0.xsd基本
5. 搭建三层架构
a) 先搭建dao层
i. 接口dao
ii. 实现 dao.impl 继承HibernateDaoSupport实现接口定义的接口
b) 搭建biz层
i. 接口biz
ii. 实现biz.impl
1. 依赖IProductDao并提供set方法
2. 实现定义的接口
6. 编辑spring主配置文件建立依赖关系(普通和数据源二选一)
a) 普通hibernate支持
<!-- 通过Hibernate的主配置文件来创建sessionFactory
<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
-->
<beanid="proDao"class="dao.impl.ProductDaoImpl">
<propertyname="sessionFactory"ref="sessionFactory"></property>
</bean>
<beanid="proBiz"class="biz.impl.ProductBizImpl">
<propertyname="proDao"ref="proDao"></property>
</bean>
注释:注入spring对hibernate的封装模板类,bizbean注入 dao bean,dao bean注入 sessionFactory
代码中获得spring 对 hibernate的封装模板super.getHibernateTemplate().save(product);
测试例子
publicvoid testSaveProduct()
{
BeanFactoryfactory=new ClassPathXmlApplicationContext("classpath*:applicationContext.xml");
IProductBiz productBiz = (IProductBiz)factory.getBean("productBiz");
Product product =new Product();
product.setPname("aaa");
product.setPprice(new Double(45.56));
productBiz.addProduct(product);
}
b) 数据源jndi配置
<beanid="myds"class="org.apache.commons.dbcp.BasicDataSource">
<propertyname="driverClassName">
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</property>
<propertyname="url">
<value>jdbc:sqlserver://localhost:1433;databaseName=db_ssh</value>
</property>
<propertyname="username">
<value>sa</value>
</property>
<propertyname="password">
<value></value>
</property>
</bean>
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propertyname="dataSource"ref="myds"></property>
<propertyname="hibernateProperties">
<props>
<propkey="hibernate.show_sql">true</prop>
<propkey="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<propkey="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<propertyname="mappingResources">
<list>
<value>pojo/Product.hbm.xml</value>
</list>
</property>
</bean>
到此 spring 和hibernate整合完毕
三:struts
1. 添加jar包struts-1.2.9-bin/lib/*.jar
2. 添加配置文件
a) struts-1.2.9-bin/webapps/struts-blank/struts-blank/WEB-INF/struts-config.xml
3. 添加web.forms和web.actions两个组件
a) web.forms继承actionform
b) web.actions继承Action或 dispatchAction里面有依赖业务逻辑的
private IProductBizproductBiz=null;
public voidsetProductBiz(IProductBiz productBiz) {
this.productBiz = productBiz;
i. }
4. 添加页面
5. 配置主文件struts-config.xml
a) action-mappings里action的type类型必须为代理类org.springframework.web.struts.DelegatingActionProxy
b) 如果是dispatchAction则必须配parameter=”command”
6. 将真实的Action配置在applicationContext.xml中
<beanname="/productAction"class="web.actions.ProductAction">
<propertyname="productBiz"ref="productBiz"></property>
</bean>
7.在web.xml里配置拦截器
<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>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
8.配置监听器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
或者
配置插件
<plug-inclassName="org.springframework.web.struts.ContextLoaderPlugIn">
<set-propertyproperty="contextConfigLocation" value="classpath*:applicationContext.xml"/>
</plug-in>
总结:
1. 页面:页面里action表示访问哪个Action类,前面不加/
例子:
<formaction="productAction.do?command=addProduct"method="post">
产品名称:<inputtype="text"name="product.pname"><br/>
产品价格:<inputtype="text"name="product.pprice"><br/>
<inputtype="submit"value="提交">
</form>
2.struts配置文件中:
<form-beans>
<form-beanname="productForm"type="web.forms.ProductForm">
</form-bean>
</form-beans>
<action-mappings>
<actionpath="/productAction"name="productForm"type="org.springframework.web.struts.DelegatingActionProxy"parameter="command">
<forwardname="success"path="/ok.jsp"></forward>
<forwardname="error"path="/error.jsp"></forward>
</action>
</action-mappings>
action标签里
path 指的是:访问该action的url路径,前面必须加 /。name 指的是:该action所用到的actionform,没有表单则不配。
type 指的是:spring对该action用封装的代理类。
parameter 指的是:分发式action的要执行哪个方法的参数。
spring配置文件里
<beanname="/productAction"class="web.actions.ProductAction">
<propertyname="productBiz"ref="productBiz"></property>
</bean>
解说:在spring里配置action必须用name属性,值指的是:struts配置文件中该action的path属性,前面必须加 /。