`
sanshi
  • 浏览: 83532 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

struts+spring+hibernate

    博客分类:
  • java
阅读更多

     网上关于这个题目的文章多如牛毛,我把我学到的一点皮毛总结一下,以供以后查看,下面是一个完整的小例子,有点罗嗦:

     我用的开发工具是myeclipse,首先新建一个web project  sshTest, 然后添加strurs框架,我用的是struts1.2,所以验证文件validator-rules.xml要用1.2的,不然验证可能不起作用,可以参考我以前写的关于验证的文章。建立一个登录页面login.jsp,当然你如果需要验证的话,你的Form就要选择org.apache.struts.validator.ValidatorForm。

       接着增加Spring框架,在弹出的对话框中,选择1,2,3和最后一个选项,因为这个例子只用到了这四个类库,然后选择copy 到/WebRoot/WEB-INF/lib,点击下一步,把applicationContext.xml放到sshTest下的/WebRoot/WEB-INF下,这个一定要这样做,不然在下面增加hibernate时就找不到applicationContext.xml了,因为在这个project里applicationContext.xml代替了Hibernate.cfg.xml.

    第三步就是增加hibernate框架,选中给出的三个类库,并选择copy 到/WebRoot/WEB-INF/lib,点击下一步,选择第二个选项Spring configuration files,点击下一步,选择第二个选择,Existing Sping configuration file.并填写SessionFactoryID:sessionFactory,点击下一步,填写数据源,第一项beanId: datasource, 点击下一步,去掉create sessionfaction class前的对号,即不选择创建,到此完成了hibernate的添加。

    下面是具体代码的编写,在struts-config.xml里要写个插件,  (plug-in className="org.springframework.web.struts.ContextLoaderPlugIn")
    (set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /)
  (/plug-in)

    
这样struts和spring整合到一起,并把前面属性中的type属性改成type="org.springframework.web.struts.DelegatingActionProxy",即struts中的请求有这个代理类接收。在applicationContext.xml里新建个bean,//(bean name="/login" class="com.guorui.struts.action.LoginAction" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default")
     接着我们在数据库连接中找到需要的表,点击右键产生mapping映射,在弹出的对话框里要选择springDAO.它把hibernate里的session封装了。

     在LoginAction中要用到springDAO, 在这个例子中是UserDAO,代码如下:

public class LoginAction extends Action {

    private  UsersDAO  dao;
   
 public UsersDAO getDao() {
  return dao;
 }

 public void setDao(UsersDAO dao) {
  this.dao = dao;
 }

 public ActionForward execute(
  ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response) {
  LoginForm loginForm = (LoginForm) form;
  String name=loginForm.getName();
   String psd=loginForm.getPassword();
  Users users=new Users();
  users.setName(name);
  users.setPassword(psd);
  dao.save(users);
  
  return null;
 }

}

 此时在修改applicationContext.xml中的代码如下:下加入属性 
   (bean name="/login" class="com.guorui.struts.action.LoginAction" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default")
    (property name="dao")
     (ref bean="UsersDAO"/)
    (/property)
 (/bean)

是把映射文件Users.hbm.xml中的第一行代码中 table后的属性删掉,不然的话找不到数据库

 

分享到:
评论
1 楼 biqing0427 2008-03-13  
写的不错,支持原创,

不过建议作者 将标题修改下:spring not sprint , 呵呵

相关推荐

Global site tag (gtag.js) - Google Analytics