搭建的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的获取方法
以上是个人的基础理解,如有错误,望大家多多指出,谢谢阅读