本帖主要目的是了解在开发的过程中,ssh框架应用开发步骤和注意环节,还有就是偶的小小心得,O(∩_∩)O哈哈~
一、 开发步骤
1.加入struts框架支持(注意命名)
2.加入spring框架支持
3.加入hibernate支持
4.在web.xml文件中加入初始化applicationContext.xml文件的servlet或监听器
5.在applicationContext.xml中创建sessionFactory
6.建立pojo和映射文件
7.建立dao
8.测试dao中的方法
9.建立use case
10.拦截action的创建工作
11.在action中编写字段,添加set方法
12.在spring中注入该字段
二,实例
一个简单显示所有信息的例子
1,2,3,略,简要说明:在加入Hibernate框架是,其中SessionFactory的创建交给Spring框架完成。
4、.在web.xml文件中加入初始化applicationContext.xml文件的servlet(红色部分)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
5在applicationContext.xml中创建sessionFactory
主要代码如下
<bean id = "sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
6、建立pojo和映射文件
利用hibernate生成,在MyEclispe中的database视图将建立的表格生成pijo文件,代码略
7、.建立dao
采用接口方法,
部分代码如下
Idao.java
package org.chkSystem.Hibernate.dao;
import java.util.List;
public interface IDao {
public <T> List<T> findExample(T t);
public <T> List<T> findExample(T t, int begin, int end);
public <T> T findBypk(T t,java.io.Serializable pk);
public <T> T findByReturnOne(T t);
}
ParentDao.java
package org.chkSystem.Hibernate.dao;
import java.io.Serializable;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class ParentDao extends HibernateDaoSupport implements IDao {
public <T> T findByReturnOne(T t) {
// TODO Auto-generated method stub
List list = this.getHibernateTemplate().findByExample(t, 0, 1);
return (T) (list!=null && list.size()>0? list.get(0):null);
}
public <T> T findBypk(T t, Serializable pk) {
// TODO Auto-generated method stub
return (T) this.getHibernateTemplate().get(t.getClass(), pk);
}
public <T> List<T> findExample(T t) {
// TODO Auto-generated method stub
return this.getHibernateTemplate().findByExample(t);
}
public <T> List<T> findExample(T t, int begin, int count) {
// TODO Auto-generated method stub
return this.getHibernateTemplate().findByExample(t, begin, count);
}
}
UsersDao.java
package org.chkSystem.Hibernate.dao;
public class UsersDao extends ParentDao {
}
采用接口和继承(一层继承关系)可以大大简化dao代码的书写量,并且做到了项目的健壮性
8.测试dao中的方法(略)
9、建立use case 在Structs框架的structs-config.xml文件中创建(略)
10、拦截action的创建工作
在structs-config.xml文件中拦截,加入代码如下
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
11、在action中编写字段,添加set方法
IDao usersdao;
public void setUsersdao(IDao usersdao) {
this.usersdao = usersdao;
}
采用注入dao的方法,增加模块间的松耦合,O(∩_∩)O哈哈~
12、在spring中注入该字段
<bean id ="UsersDao" class="org.chkSystem.Hibernate.dao.UsersDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean name="/show" class="org.chkSystem.struts.action.ShowAction">
<property name="usersdao">
<ref local="UsersDao"/>
</property>
</bean>
就ok完成了,再在tomcat中配置部署运行,就可以了,
不过要注意的是,我用的版本是MyEclispe5.5+Structs1.2+Spring2+Hibernate3.1版本需要解决包冲突问题,在tomcat文件中的webapps中找到自己的项目,删除包asm -2.2.3.jar就可以了