搭建SSH框架的基本流程和各个类的作用

搭建的ssh框架中各个文件的作用:
ssh流程如下:SSH(Struts2+Hibernate+Spring)

一、Search.java类 
给对应数据库中的table的各个字段提供set和get方法
   
二、Search.hbm.xml中给Search类映射(对应Search类)

<class name="com.ht.vo.Search" table="search">
     <!--主键的映射  -->
    <id name="seid">
    <generator class="sequence">
     <param name="sequence">seq_search</param>
    </generator>
    </id>
    
    <!-- 其他字段,配置字段表示自己维护 -->
    <property name="scity"></property>
    <property name="gcity"></property>

  </class>

 注:1、name为vo类的包名类名,table是数据库中的表格表名
        2、seq_search 是oracle数据库中创建的序列名

三、apploicationContext.xml中(存的是各种bean)(对应Search.hbm.xml和联系Action)

1、连接数据库(id="dSource")

2、读取到Search.hbm.xml的映射,对应到dSource,从而可以实现对数据库的表的操作
       <property name="mappingResources">
           <list>
             <value>com/ht/vo/mapping/Search.hbm.xml</value>  <!-- 如果那里有很多vo,就都要加上这个映射 -->             
           </list>    
       </property> 


3、注入service:(使得在Action使用这个bean对应到来就可以连接到Impl)

       <bean id="searchService" class="com.ht.service.impl.SearchServiceImpl">  
         <property name="sessionFactory">
           <ref local="sFactory"/>
         </property>
       </bean>

注:1、id自定义,class写自己建的包名类名
    2、设置的id(searchService)在Action中使用: ISearchService is=(ISearchService) getBean("searchService");


四、CommonUtils.java类(就是SpringBeans类)(对应applicationContext.xml)

获取spring中注入的bean的方法(就是从applicationContext.xml中获取,)


五、Action.java类(对应CommonUtils.java和applicationContext.xml)

1、继承CommonUtils,从而可以使用或联系到这些配置好的底层

2、 联系Service和Impl这两个类写的一些方法,然后就可以在Action中is.Service里面的某某方法

    ISearchService is=(ISearchService) getBean("searchService");

	//测试
	public String testlist(){
		System.out.println("进入到testlist的Action");
		List li=is.testlist(); //这里的testlist()为Service接口方法
		System.out.println("List大小为"+li.size());
		for (int i = 0; i < li.size(); i++) {
			System.out.println(li.get(i));			
		}	
		return "totest";
	}


六、struts.xml (对应Action.java)

<struts>
    <constant name="struts.devMode" value="true"></constant>
    <package name="client" extends="struts-default">
        <action name="search" class="com.ht.action.SearchAction" method="testlist">
            <result name="totest">/test.jsp</result>
        
        </action>
    </package>
</struts>

注:1、前面constant、package name两行等基本是固定的

    2、acton name="search" 是在页面访问中search!testlist.action这个路径访问(testlist是action里面的方法名,根据不同的方法名访问        各个方法)

    3、class为action的路径(包名类名)
    4、method为设置默认访问的方法
    5、result name 是对应到action中这个testlist方法中的return返回值,中间写要返回的jsp页面
   

测试是否可用:运行Tomcat,页面执行search!testlist.action测试

---------------------------------------------------------------------------------------------------------------------------------------------

以下是底层的几个方法:

七、Service.java(接口类)(对应ServiceImpl.java)
   
    1、写一些方法,供Impl对应


八、ServiceImpl (对应Action,继承Hibernate_Dao类,实现Servcie接口)

    1、继承Hibernate_Dao 类中的所有方法
    2、实现Service接口的所有方法
    
    3、写SQL操作语句
    4、return(返回) Hibernate_Dao的方法

九、Hibernate_Dao.java类

 public boolean executeSQL(String sql) {// SQL增删改
        Session session = null;
        Transaction tran = null;
        try {
            session = getSessionFactory().openSession();
            tran = session.beginTransaction();
            SQLQuery query = session.createSQLQuery(sql);
            query.executeUpdate();
            tran.commit();
            return true;
        } catch (HibernateException e) {
            if (tran != null) {
                tran.rollback();
            }
            e.printStackTrace();
            return false;
        } finally {
            if (session != null) {
                session.close();
            }
        }
    }

注:这只是Dao中自己添加的其中一个可以实现增删改的方法,我们可以写多个方法,供Impl中调用

十、Hibernate_Util.java类(继承CommonUtils,联系applicationContext得到bean(sFactory))

 private static SessionFactory sessionf = null;
    //session工厂的创建方法
    public static SessionFactory getSessionFactory() {
        if (sessionf == null) {
            //如果hibernate配置文件在文件夹中 那么需要指定文件夹和文件名称
            sessionf = (SessionFactory)getBean("sFactory");
        }
        return sessionf;
    }
    
    //session的获取方法
    public static Session getSession(){
        return getSessionFactory().openSession();
    }

注:1、继承CommonUtils类
    2、写session工厂的创建方法
    3、写session的获取方法

以上是个人的基础理解,如有错误,望大家多多指出,谢谢阅读
 

猜你喜欢

转载自blog.csdn.net/zhang1409399037/article/details/86007533