ssh(strutsspringhibernate)模式就是把三个框架合理地结合在一起以发挥各自在不同位置上的作用而如何把他们整合在一起就是关键其实把他们整合在一起并不难但不是任何时候都需要把他们整合来使用这要看场合我们应该合理的使用合适就好但不管怎么说它都是一种不错的模式用MyEclipse工具会很方便地把它们整合在一起下面简单说一下过程
MyEclipse整合SSH过程概述
先加struts包和配置文件可以手动添加也可以在myeclipse的myeclipse菜单里面把struts的环境添加上去后面的spring会用到struts的配置文件
添加spring可以像添加struts一样把spring的环境添加上去不过一定要添加spring的web包可以把spring的配置文件和struts的配置文件一起放在WENINF目录下
添加Hibernate添加Hibernate的时候对待Hibernate的配置文件我们有两种处理方式一按往常一样新建一个配置文件把它放在src目录下(一般情况)二无需新建配置文件而是把Hibernate的配置信息加入到spring的配置文件里面这种方式需要建立一个dataSource数据库连接进行ssh整合一般使用第二种方式
把三个框架都添加上去之后就需要把他们联系起来下面以一个登录的例子说明他们是怎样配合工作的
MyEclipse整合SSH登陆范例
)首先从前台发送一个登录的请求「如下」
< body>
< form action=loginActiondo method=post>
< table border=>
< tr>< td>name:< /td>
< td>< input type=text name=name/>< /td>< /tr>
< tr>< td>password:< /td>
< td>< input type=password name=password/>< /td>< /tr>
< tr>< td colspan= align=center>
< input type=submit value=login/>
< input type=reset value=reset/>
< /td>
< /tr>
< /table>
< /form>
< /body>
)请求被struts截获转到struts的配置文件寻找相对应的action「如下」这时发现找到的是一个代理action这个代理action就会找到用< plugin>标签注册的spring插件从而找到spring的配置文件
< actionmappings>
< ! login action >
< action name=loginActionForm path=/loginAction
scope=request
type=orgspringframeworkwebstrutsDelegatingActionProxy>
< forward name=success path=/successjsp>< /forward>
< forward name=failed path=/failedjsp redirect=true>< /forward>
< /action>
< /actionmappings>
< messageresources
parameter=comyourcompanystrutsApplicationResources />
< plugin
className=orgspringframeworkwebstrutsContextLoaderPlugIn>
< setproperty property=contextConfigLocation
value=/WEBINF/applicationContextxml />
< /plugin>
)在spring的配置文件中寻找跟path属性的名称相同的action「如下」在action调用了userService类userService又调用了userDAO在userDAO中我们需要做用户的登录验证
< ! 依赖注入action >
< bean name=/loginAction class=comdcactionLoginAction>
< property name=userService ref=userService>< /property>
< /bean>
< ! 依赖注入UserDAO >
< bean id=userDAO class=comdcdaoUserDAOImpl>
< property name=sessionFactory ref=SessionFactory>< /property>
< /bean>
< ! 依赖注入UserService >
< bean id=userService class=comdcdaoUserServiceImpl>
< property name=dao ref=userDAO>< /property>
< /bean>
前面说过Hibernate的配置信息是添加在spring的配置文件里的在上面的userDAO中引用的sessionFactory就需要用到这些信息「如下」
< ! 配置连接数据库和事物管理参数 >
< bean id=dataSource
class=monsdbcpBasicDataSource>
< property name=driverClassName
value=commysqljdbcDriver>
< /property>
< property name=url
value=jdbc:mysql://:/test>
< /property>
< property name=username value=root>< /property>
< property name=password value=root>< /property>
< /bean>
< bean id=SessionFactory
class=orgspringframeworkormhibernateLocalSessionFactoryBean>
< property name=dataSource>
< ref bean=dataSource>< /ref>
< /property>
< property name=hibernateProperties>
< props>
< prop key=hibernatedialect>
orghibernatedialectMySQLDialect
< /prop>
< prop key=hibernateshow_sql>true< /prop>
< prop key=hibernateformat_sql>true< /prop>
< /props>
< /property>
< property name=mappingResources>
< list>
< value>com/dc/pojo/Userhbmxml< /value>< /list>
< /property>
< /bean>
userDAO的验证方法「如下」在这个类中继承了一个HibernateDaoSupport类继承后在配置文件中就可以添加一个sessionFactory属性用于获取HibernateSessionFactory
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
public User checkUser(String name String password) {
String sql = from User u where uname=? and password=?;
List userList = thisgetHibernateTemplate()find(sqltoString()
new Object[]{name password});
return userListsize() == ? null : (User) userListget();
}
}
)找到action后处理用户的登录「如下」 userService调用了getUserByParam方法而在getUserByParam方法中又调用了userDAO的checkUser方法验证通过后转到成功页面否则转到失败页面
//用户登录验证
public ActionForward execute(ActionMapping mapping ActionForm form
HttpServletRequest request HttpServletResponse response) {
LoginActionForm laf = (LoginActionForm) form;
String name = lafgetName();
String password = lafgetPassword();
User user=userServicegetUserByParam(name password);
if(user!=null){
HttpSession session=requestgetSession();
sessionsetAttribute(user user);
return mappingfindForward(success);
}
return mappingfindForward(failed);
}
这就是一个简单的流程当然还有一些细节的东西需要我们去摸索在这过程中三个框架都发挥了各自的作用如果在一些比较复杂的应用里面这是很方便的这种模式使一个系统变得灵活易于扩展和维护所以得到了比较广泛的应用
以上就介绍了MyEclipse整合SSH的流程本文来自seekereye的博客《SSH整合》