- 浏览: 26676 次
- 性别:
- 来自: 广州
文章分类
ssh(struts、spring、hibernate)模式就是把三个框架合理地结合在一起,以发挥各自在不同位置上的作用,而如何把他们整合在一起就是关键。其实把他们整合在一起并不难,但不是任何时候都需要把他们整合来使用,这要看场合,我们应该合理的使用,合适就好。但不管怎么说它都是一种不错的模式,用MyEclipse工具会很方便地把它们整合在一起。下面简单说一下过程:
1.先加struts包和配置文件(可以手动添加,也可以在myeclipse的myeclipse菜单里面把struts的环境添加上去,后面的spring会用到struts的配置文件。
2.添加spring,可以像添加struts一样把spring的环境添加上去,不过一定要添加spring的web包。可以把spring的配置文件和struts的配置文件一起放在WEN-INF目录下。
3.添加Hibernate,添加Hibernate的时候对待Hibernate的配置文件我们有两种处理方式:一:按往常一样新建一个配置文件,把它放在src目录下(一般情况);二:无需新建配置文件,而是把Hibernate的配置信息加入到spring的配置文件里面,这种方式需要建立一个dataSource数据库连接。进行ssh整合一般使用第二种方式。
4.把三个框架都添加上去之后,就需要把他们联系起来,下面以一个登录的例子说明他们是怎样配合工作的:
1)、首先从前台发送一个登录的请求,【如下】:
2)、请求被struts截获,转到struts的配置文件寻找相对应的action【如下】,这时发现找到的是一个代理action,这个代理action就会找到用<plug-in>标签注册的spring插件,从而找到spring的配置文件。
3)、在spring的配置文件中寻找跟path属性的名称相同的action,【如下】。在action调用了userService类,userService又调用了userDAO。在userDAO中我们需要做用户的登录验证。
前面说过,Hibernate的配置信息是添加在spring的配置文件里的,在上面的userDAO中引用的sessionFactory就需要用到这些信息【如下】。
userDAO的验证方法【如下】:在这个类中继承了一个HibernateDaoSupport类,继承后在配置文件中就可以添加一个sessionFactory属性,用于获取HibernateSessionFactory。
4)、找到action后处理用户的登录,【如下】。 userService调用了getUserByParam方法,而在getUserByParam方法中又调用了userDAO的checkUser方法。验证通过后转到成功页面,否则转到失败页面。
这就是一个简单的流程,当然还有一些细节的东西需要我们去摸索。在这过程中,三个框架都发挥了各自的作用,如果在一些比较复杂的应用里面这是很方便的。这种模式使一个系统变得灵活、易于扩展和维护,所以得到了比较广泛的应用。
1.先加struts包和配置文件(可以手动添加,也可以在myeclipse的myeclipse菜单里面把struts的环境添加上去,后面的spring会用到struts的配置文件。
2.添加spring,可以像添加struts一样把spring的环境添加上去,不过一定要添加spring的web包。可以把spring的配置文件和struts的配置文件一起放在WEN-INF目录下。
3.添加Hibernate,添加Hibernate的时候对待Hibernate的配置文件我们有两种处理方式:一:按往常一样新建一个配置文件,把它放在src目录下(一般情况);二:无需新建配置文件,而是把Hibernate的配置信息加入到spring的配置文件里面,这种方式需要建立一个dataSource数据库连接。进行ssh整合一般使用第二种方式。
4.把三个框架都添加上去之后,就需要把他们联系起来,下面以一个登录的例子说明他们是怎样配合工作的:
1)、首先从前台发送一个登录的请求,【如下】:
<body> <form action="loginAction.do" method="post"> <table border="1"> <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="2" align="center"> <input type="submit" value="login"/> <input type="reset" value="reset"/> </td> </tr> </table> </form> </body>
2)、请求被struts截获,转到struts的配置文件寻找相对应的action【如下】,这时发现找到的是一个代理action,这个代理action就会找到用<plug-in>标签注册的spring插件,从而找到spring的配置文件。
<action-mappings> <!-- login action --> <action name="loginActionForm" path="/loginAction" scope="request" type="org.springframework.web.struts.DelegatingActionProxy"> <forward name="success" path="/success.jsp"></forward> <forward name="failed" path="/failed.jsp" redirect="true"></forward> </action> </action-mappings> <message-resources parameter="com.yourcompany.struts.ApplicationResources" /> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in>
3)、在spring的配置文件中寻找跟path属性的名称相同的action,【如下】。在action调用了userService类,userService又调用了userDAO。在userDAO中我们需要做用户的登录验证。
<!-- 依赖注入action --> <bean name="/loginAction" class="com.dc.action.LoginAction"> <property name="userService" ref="userService"></property> </bean> <!-- 依赖注入UserDAO --> <bean id="userDAO" class="com.dc.dao.UserDAOImpl"> <property name="sessionFactory" ref="SessionFactory"></property> </bean> <!-- 依赖注入UserService --> <bean id="userService" class="com.dc.dao.UserServiceImpl"> <property name="dao" ref="userDAO"></property> </bean>
前面说过,Hibernate的配置信息是添加在spring的配置文件里的,在上面的userDAO中引用的sessionFactory就需要用到这些信息【如下】。
<!-- 配置连接数据库和事物管理参数 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"> </property> <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"> </property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <bean id="SessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"></ref> </property> <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> </props> </property> <property name="mappingResources"> <list> <value>com/dc/pojo/User.hbm.xml</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 u.name=? and password=?"; List userList = this.getHibernateTemplate().find(sql.toString(), new Object[]{name, password}); return userList.size() == 0 ? null : (User) userList.get(0); } }
4)、找到action后处理用户的登录,【如下】。 userService调用了getUserByParam方法,而在getUserByParam方法中又调用了userDAO的checkUser方法。验证通过后转到成功页面,否则转到失败页面。
//用户登录验证 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginActionForm laf = (LoginActionForm) form; String name = laf.getName(); String password = laf.getPassword(); User user=userService.getUserByParam(name, password); if(user!=null){ HttpSession session=request.getSession(); session.setAttribute("user", user); return mapping.findForward("success"); } return mapping.findForward("failed"); }
这就是一个简单的流程,当然还有一些细节的东西需要我们去摸索。在这过程中,三个框架都发挥了各自的作用,如果在一些比较复杂的应用里面这是很方便的。这种模式使一个系统变得灵活、易于扩展和维护,所以得到了比较广泛的应用。
发表评论
-
Hibernate工具类
2010-01-22 11:06 1602工具也就是可以重复使用的东西,而这里的hibernate ... -
jQuery插件
2009-12-24 16:16 708收集了一些jQuery插件,希望大家能用的上!~~ -
jsp技巧
2009-12-24 16:01 741一些JSP页面技巧,还有点用!~~ -
asp.net后台跳转到新窗口
2009-12-24 15:50 2420Response.Write("javascript ... -
JDBC数据库连接池的实现
2009-08-13 23:14 1991虽然很多厂商都实现了数据库连接池(如:apache),但要想比 ... -
使用Hibernate框架开发程序的一般思路
2009-08-13 22:58 1043Hibernate是ORM框 ... -
Java结合反射和单例的工厂模式
2009-08-13 22:54 7478所谓的工厂模式是通过向这个工厂提供一些“原材料 ... -
struts基本思想
2009-08-13 22:44 2170struts概念:struts实质就是MVC模式的体现;因为它 ... -
一些J2EE技术概念
2009-08-13 22:42 1020J2EE技术 1) Servlet: ... -
Hibernate中事物的生命状态
2009-08-13 22:40 893Hibernate事物的生命周期分为三个状态,即瞬时态、持久态 ... -
Java的动态代理
2009-08-13 22:38 716代理有很多种表现形式,在Java中可以使用代理将代码 ... -
IOC模式
2009-08-13 22:28 852IOC(inversion of control)意为控 ...
相关推荐
ssh整合的讲解ssh整合的讲解ssh整合的讲解ssh整合的讲解
ssh整合所需要的jar包,ssh整合所需要的jar包,ssh整合所需要的jar包,
SSH整合详细步骤&SSH整合详细步骤SSH整合详细步骤&SSH整合详细步骤
这个是我自己写的关于SSH整合的例子。包含对数据库的增删改查,包含搭建SSH框架的jar包 。以及详细的步骤。
ssh 整合jar包。
SSH整合完整的jar包
ssh整合所需jar包,SSH(Struts+Spring+Hibernate)是目前十分流行的搭配组合框架
SSH整合的例子 带SQL语句 很全的一个例子. 增加AOP事务处理
简单易懂的ssh整合,适合初学者简单易懂的ssh整合,适合初学者简单易懂的ssh整合,适合初学者
SSH整合开发的一个实例,项目中有两张表(学生表与班级表)它们的关系是一对多的关系,项目中的action包是应用的表示层(Struts2)dao包是应用的数据访问层(Hibernate)domain是对应的两个类,由对象来生成关系,...
SSH整合原理以及步骤详解 SSH整合原理以及步骤详解
一个简单的ssh整合实例(数据库sqlseriver,工具netbeans)
struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页struts spring hibernate 登陆 SSH整合分页功能 SSH整合分页
ssh整合原理图,清晰的了解struts2,hibernate,spring框架的原理及作用
ssh整合时的配置ssh整合时的配置(经典详细)
SSH 整合原代码 包括2种方式:注解&xml;配置 (已测试, 原创) 包含所需的lib
SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例SSH整合实例
ssh struts+spring+hibernate整合所属所有架包,版本不冲突。下载可用
JavaWeb中的Jar包整合,并配置了Struts的配置文件,hibernate的配置文件,Spring的配置文件。(配置文件是空的,但是有配置文件的头)
ssh中所有需要的jar都包括。不重复不冲突,以及各个jar均通过检测。