现在的位置: 首页 > 综合 > 正文

struts+Spring+Hibernate整合(2)

2013年11月14日 ⁄ 综合 ⁄ 共 7846字 ⁄ 字号 评论关闭

 

我们以把三个框架都导进来了,接上来我把JAR包给出来,如下图:

 

大家把多余的jar文件删除(在WEB-INF/lib下)。然后我们开始创建实体类和映射文件,我们找到“DB Browser”选项卡,如下

 

在我们前面建的数据库连接"mysql"上右键--Open connection...开始连接数据库。如下图:

 

点击那个小三角找到我们要找的库“test”,然后在库中找到我们要创建映射的表,我这里是user表,表中字段有三个,id
intege他是主键,username varchar(45) 用户名,password varchar(45)密码。

然后我们在要创建映射的表上点右键,选择“Hibernate Reverse Engineering...”弹出对话框,如下图:

按照上图配置:先选择映射文件要存放的路径(点java package
后面的那个“Browser”按钮,选择MySSH项目下的一个包,我建的包叫:com.zgh.hibernate.vo,大家也可在上图中看一下我的目录结构),然后按图钩选即可,说明上面图片中有。最后点“Next”进入下一步,如图:

在上图中选择主键生成方式,按图选择即可。点“Finish”完成。

生成两个文件在com.zgh.hibernate.vo中,如下图(包括我项目的路径情况,大家可参考):

这样实体类和其映射文件就创建完成了。我们要修改一个User.hbm.xml文件,把catalog="test"删除,否则Hibernate生成的SQL会出错。下面给出User.hbm.xml的代码,如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse 
- Hibernate Tools
-->
<hibernate-mapping>
    
<class name="com.zgh.hibernate.vo.User" table="user">
        
<id name="id" type="java.lang.Integer">
            
<column name="id" />
            
<generator class="increment" />
        
</id>
        
<property name="username" type="java.lang.String">
            
<column name="username" length="45" not-null="true" />
        
</property>
        
<property name="password" type="java.lang.String">
            
<column name="password" length="45" not-null="true" />
        
</property>
    
</class>
</hibernate-mapping>

User.java代码:

 

/** *//**
 * 
@author zhu国辉
 
*/

package com.zgh.hibernate.vo;



/** *//**
 * User generated by MyEclipse - Hibernate Tools
 
*/

public class User  implements java.io.Serializable ...{


    
// Fields    

     
private Integer id;
     
private String username;
     
private String password;


    
// Constructors

    
/** *//** default constructor */
    
public User() ...{
    }


    
    
/** *//** full constructor */
    
public User(String username, String password) ...{
        
this.username = username;
        
this.password = password;
    }


   
    
// Property accessors

    
public Integer getId() ...{
        
return this.id;
    }

    
    
public void setId(Integer id) ...{
        
this.id = id;
    }


    
public String getUsername() ...{
        
return this.username;
    }

    
    
public void setUsername(String username) ...{
        
this.username = username;
    }


    
public String getPassword() ...{
        
return this.password;
    }

    
    
public void setPassword(String password) ...{
        
this.password = password;
    }

   








}

接下来我们创建Dao层,我们在com.zgh.spring.dao中创建一个接口和一类实现类:

IUserLoginDao.java代码:

 

/** *//**
 * 
@author zhu国辉
 
*/

package com.zgh.spring.dao;

import java.util.List;

public interface IUserLoginDao ...{
    List getUser(String username,String password);

}

UserLoginDao.java代码:

 

/** *//**
 * 
@author zhu国辉
 
*/

package com.zgh.spring.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/** *//**
 * 记住一定要引入org.springframework.orm.(hibernate3).support.HibernateDaoSupport
 * 也就是此类的父类.
 * 
@author zhu国辉
 *
 
*/

public class UserLoginDao extends HibernateDaoSupport implements IUserLoginDao ...{

    
public List getUser(String username, String password) ...{
        List users
=getHibernateTemplate().find("from User u where username=? and password=?",new Object[]...{username,password});
        
return users;
    }


}

以上是Dao层,通过Spring提供的Hibernate模板,实现持久层的操作。比单用Hibernate代码少多了,不用开启和关闭事务和session。

接下来是service层,我们会把事务添加到这层里,这一层一般会把Action中Form的数据转换成实体类给Dao层用,但本例只做登陆,没有体现出来。

我们在com.zgh.spring.service包中创建一个接口和一个实现类。IUserLoginService.java接口代码:

 

/** *//**
 * 
@author zhu国辉
 
*/

package com.zgh.spring.service;

import java.util.List;

public interface IUserLoginService ...{
    List getUser(String username,String password);

}

UserLoginService.java代码:

 

/** *//**
 * 
@author zhu国辉
 
*/

package com.zgh.spring.service;

import java.util.List;
import com.zgh.spring.dao.IUserLoginDao;;

public class UserLoginService implements IUserLoginService ...{
    
private IUserLoginDao userLoginDao;
    
    
public void setUserLoginDao(IUserLoginDao userLoginDao) ...{
        
this.userLoginDao = userLoginDao;
    }


    
public List getUser(String username, String password) ...{
        
        
return userLoginDao.getUser(username, password);
    }


}

接下来我们开始写Struts的程序,下一页吧,太多了。

下面我们开始创建Struts的程序,我们在WEB-INF下双击打开struts-config.xml文件,在视图中的空白处右键--New--"Form,Action
and JSP":

弹出一对话框,如下图:

此步是创建Form,在User
case中输入user,在下面添加Form的属性(点"Add"按钮添加),然后我们我们选择“JSP”选项卡,如下图:

按图中配置即可,创建的jsp文件会出现在WebRoot/jsp文件夹中(应该在WebRoot下创建个jsp文件夹),

然后点击"Next"进入下一步,如下图:

此步是创建Action,在上面输入Path,因为是登陆,这里我们输入"/login",然后确定Type中是com.zgh.struts.action.LoginAction然后点击“Forwards”选项卡,如下图:

按图中的步骤一步一步输入(或选择),先点击“Add”
(第2步)在弹出框中的“Name”中输入“success”(第4步),然后点"Browser"按钮(第5步),选择一个登陆成的的页面(第6步,这个页面应该先建好,后面会给出代码),然后点OK(第7步),然后点"Add"按钮(第8步),然后点“Close”关闭(第9步),然后点"Finish"完成(第10步)。完成。在struts-config.xml中生成视图如下:

以下是struts-config.xml的代码,如下:

 

<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  
<data-sources />
  
<form-beans >
    
<form-bean name="userForm" type="com.zgh.struts.form.UserForm" />

  
</form-beans>

  
<global-exceptions />
  
<global-forwards />
赛尔号 提亚斯技能 赛尔号 提亚斯技能表_如何购买笔记本电脑 - lianhuangyoqo49 - lianhuangyoqo49的博客  
<action-mappings >
   
<!-- 把type="com.zgh.struts.action.LoginAction" 改成:type="org.springframework.web.struts.DelegatingActionProxy"  -->
   
<!-- 这样才能合Spring整合,把控制权交给Spring -->
    
<action
      
attribute="userForm"
      input
="/jsp/login.jsp"
      name
="userForm"
      path
="/login"
      scope
="request"
     
      type
="org.springframework.web.struts.DelegatingActionProxy">
      
<forward name="success" path="/jsp/loginSuccess.jsp" />
    
</action>

  
</action-mappings>

  
<message-resources parameter="com.zgh.struts.ApplicationResources" />
  
<!-- 添加Spring的插件 -->
 
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
      
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
  
</plug-in>
  
</struts-config>

注意下上面的action元素的type属性,这是与Spring整合的一种方法,还有后面的plug-in是必须的,而且一定要写到最后,Struts的配置文件必须按先后顺序。

下面是LoginAction.java代码:

 

/**//*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 
*/

/** *//**
 * 
@author zhu国辉
 
*/

package com.zgh.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.zgh.spring.service.IUserLoginService;
import com.zgh.struts.form.UserForm;

/** *//** 
 * MyEclipse Struts
 * Creation date: 01-07-2008
 * 
 * XDoclet definition:
 * @struts.action path="/login" name="userForm" input="/jsp/login.jsp" scope="request" validate="true"
 * @struts.action-forward name="success" path="/jsp/loginSuccess.jsp"
 
*/

public class LoginAction extends Action ...{
    
/**//*
     * Generated Methods
     
*/


    
private IUserLoginService userLoginService;
    
    
public void setUserLoginService(IUserLoginService userLoginService) ...{
        
this.userLoginService = userLoginService;
    }


    
/** *//** 
     * Method execute
     * 
@param mapping
     * 
@param form
     * 
@param request
     * 
@param response
     * 
@return ActionForward
     
*/

    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
...{
        UserForm userForm 
= (UserForm) form;// TODO Auto-generated method stub
        List users=userLoginService.getUser(userForm.getUsername(), userForm.getPassword());
        
if(users!=null && users.size()>0)...{
            
return mapping.findForward("success");
        }

        
return mapping.getInputForward();
    }

}

下面是login.jsp的代码:

 

<%...@ page language="java"%>
<%...@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
<%...@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
 

抱歉!评论已关闭.