Spring2.5.3+Hibernate3.2+Struts2.0.11整合

http://www.blogjava.net/bulktree/archive/2008/04/18/194021.html

只有Struts2基础(初学Hibernate/Spring第三天就想着整合),有些地方不是很懂,看了网上大部分的例子、blog,百分百 的MyEclipse插件,本人不太习惯使用MyEclipse,主要是Eclipse使用的时间比较长,使用MyEclipse6.0.1时(第一次 用)比如你要输入.getHibernateTemplate()时,输入点时就有提示,但是当我输入点后面的字母出错时,只能返回到输入点之前才按点 “.”可以提示,按ALT+/也不会出现,是不是我不知道快捷键,或是其它的方式,总之我在Eclipse中输入一半错误时按ALT+/可以又出来提示, 虽然不是特依赖提示功能,但是用起来还是不爽,毕竟每天都在使用它,哪位要是知道的话烦请告诉一声 bulktree@126.com

仅仅看了两天的官方文档就写了这个整合的新闻发布系统,感觉蛮好的,是个好的开始 come on!


以下是一个新闻发布系统的登录模块:(两天看文档,一夜写成的,不是很完善,仅仅实现基本的增删查改功能,主要是整合练习)


首先配置三个框架,有人说要是使用MyEclipse自动生成会有顺序Spring->Hibernate->Struts,太依赖工具不是本人的习惯,这些是后话。
开发工具Eclipse J2EE Developer Tomcat6.0.13 Mysql 6.0
新建Dynamic Web Project

拷贝工程所需的jar包到WEB-INF/lib下

数据库创建脚本

  1. DROPTABLE context;  
  2.   
  3. CREATETABLE context  
  4.   
  5. (  
  6.   
  7.     id VARCHAR(32) NOTNULLPRIMARYKEY,  
  8.   
  9.     title VARCHAR(100),  
  10.   
  11.     times DATETIME,  
  12.   
  13.     content VARCHAR(500),  
  14.   
  15.     author VARCHAR(50),  
  16.   
  17.     click INT,  
  18.   
  19.     typeVARCHAR(50)  
  20.   
  21. );  
  22.   
  23. DROPTABLEuser;  
  24.   
  25. CREATETABLEuser  
  26.   
  27. (  
  28.   
  29.     uid VARCHAR(50) NOTNULLPRIMARYKEY,  
  30.   
  31.     uname VARCHAR(50),  
  32.   
  33.     password VARCHAR(50) NOTNULL  
  34.   
  35. );  


在web.xml中配置Struts2和Spring

  1. <filter>  
  2.   
  3.        <filter-name>Struts2</filter-name>  
  4.   
  5.        <filter-class>  
  6.   
  7.            org.apache.struts2.dispatcher.FilterDispatcher  
  8.   
  9.        </filter-class>  
  10.   
  11.     </filter>  
  12.   
  13.     <filter>  
  14.   
  15.        <filter-name>encodingFilter</filter-name>  
  16.   
  17.        <filter-class>  
  18.   
  19.            org.springframework.web.filter.CharacterEncodingFilter  
  20.   
  21.        </filter-class>  
  22.   
  23.        <init-param>  
  24.   
  25.            <param-name>encodingFilter</param-name>  
  26.   
  27.            <param-value>UTF-8</param-value>  
  28.   
  29.        </init-param>  
  30.   
  31.     </filter>  
  32.   
  33.     <filter-mapping>  
  34.   
  35.        <filter-name>Struts2</filter-name>  
  36.   
  37.        <url-pattern>/*</url-pattern>  
  38.   
  39.     </filter-mapping>  
  40.   
  41.     <listener>  
  42.   
  43.        <listener-class>  
  44.   
  45.            org.springframework.web.context.ContextLoaderListener  
  46.   
  47.        </listener-class>  
  48.   
  49.     </listener>  


项目中我使用的是Tomcat数据源配置如下,如果你不使用Tomcat数据源也可以在下面的配置文件中配置:

  1. <Context docBase="news-SSH2" path="/news-SSH2" reloadable="true" source="org.eclipse.jst.jee.server:news-SSH2">  
  2.   
  3.               <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/news" password="1234" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/news?autoReconnect=true" username="root"/>  
  4.   
  5.            </Context>  


也在在配置applicationContext.xml文件中配置数据源

  1. <!-- 定义数据源Bean,使用C3P0数据源实现 -->  
  2.   
  3.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">  
  4.   
  5.        <!-- 指定连接数据库的驱动 -->  
  6.   
  7.        <property name="driverClass" value="com.mysql.jdbc.Driver"/>  
  8.   
  9.        <!-- 指定连接数据库的URL -->  
  10.   
  11.        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/news"/>  
  12.   
  13.        <!-- 指定连接数据库的用户名 -->  
  14.   
  15.        <property name="user" value="root"/>  
  16.   
  17.        <!-- 指定连接数据库的密码 -->  
  18.   
  19.        <property name="password" value="1234"/>  
  20.   
  21.        <!-- 指定连接数据库连接池的最大连接数 -->  
  22.   
  23.        <property name="maxPoolSize" value="20"/>  
  24.   
  25.        <!-- 指定连接数据库连接池的最小连接数 -->  
  26.   
  27.        <property name="minPoolSize" value="1"/>  
  28.   
  29.        <!-- 指定连接数据库连接池的初始化连接数 -->  
  30.   
  31.        <property name="initialPoolSize" value="1"/>  
  32.   
  33.        <!-- 指定连接数据库连接池的连接的最大空闲时间 -->  
  34.   
  35.        <property name="maxIdleTime" value="20"/>  
  36.   
  37.    </bean>  


在applicationContext.xml中配置sessionFactory

  1. <bean id="dataSource"  
  2.   
  3.         class="org.springframework.jndi.JndiObjectFactoryBean">  
  4.   
  5.        <property name="jndiName" value="java:comp/env/jdbc/news"></property>  
  6.   
  7.     </bean>  
  8.   
  9.     <!-- 管理Hibernate -->  
  10.   
  11.     <bean id="sessionFactory"  
  12.   
  13.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  14.   
  15.        <property name="dataSource" ref="dataSource"></property>  
  16.   
  17.        <property name="mappingResources">  
  18.   
  19.            <list>  
  20.   
  21.               <value>org/bulktree/ssh2/news/vo/User.hbm.xml</value>  
  22.   
  23.               <value>org/bulktree/ssh2/news/vo/News.hbm.xml</value>  
  24.   
  25.            </list>  
  26.   
  27.        </property>  
  28.   
  29.        <property name="hibernateProperties">  
  30.   
  31.            <value>  
  32.   
  33.               hibernate.dialect=org.hibernate.dialect.MySQLDialect  
  34.   
  35.            </value>  
  36.   
  37.        </property>  
  38.   
  39.     </bean>  



3. 开始编码:
我们必须明确Spring框架的体系结构,新建以下几个包

User.java

  1. package org.bulktree.ssh2.news.vo;  
  2.   
  3. publicclass User {  
  4.   
  5.     private String uid;  
  6.   
  7.     private String uname;  
  8.   
  9.     private String password;  
  10.   
  11.     public String getUid() {  
  12.   
  13.        returnuid;  
  14.   
  15.     }  
  16.   
  17.     Getter/setter’’’’’’’’’’’  
  18.   
  19.     publicvoid setPassword(String password) {  
  20.   
  21.        this.password = password;  
  22.   
  23.     }  
  24.   
  25. }  


在User类同包下即org.bulktree.ssh2.news.vo新建User.hbm.xml文件

  1. <?xml version="1.0"?>  
  2.   
  3. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.   
  5.                                    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  6.   
  7. <hibernate-mapping package="org.bulktree.ssh2.news.vo">  
  8.   
  9.  <class name="User" table="user">  
  10.   
  11.  <id column="uid" name="uid" type="string">  
  12.   
  13.    <generator class="assigned"/>  
  14.   
  15.  </id>  
  16.   
  17.  <property column="uname" name="uname" type="string"/>  
  18.   
  19.  <property column="password" name="password" type="string"/>  
  20.   
  21.  </class>  
  22.   
  23. </hibernate-mapping>  


新建UserDao.java接口

  1. package org.bulktree.ssh2.news.dao;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.bulktree.ssh2.news.vo.User;  
  6.   
  7. publicinterface UserDao {  
  8.   
  9.     /** 
  10.  
  11.      *增加一个用户 
  12.  
  13.      *@throwsException 
  14.  
  15.      */  
  16.   
  17.     publicvoid addUser(User user) throws Exception;  
  18.   
  19.     /** 
  20.  
  21.      *根据uid/password查询User 
  22.  
  23.      *@paramuid 
  24.  
  25.      *@parampassword 
  26.  
  27.      *@return 
  28.  
  29.      *@throwsException 
  30.  
  31.      */  
  32.   
  33.     public User queryByUidAndPassword(String uid, String password) throws Exception;  
  34.   
  35.     /** 
  36.  
  37.      *删除用户 
  38.  
  39.      *@paramuid 
  40.  
  41.      *@throwsException 
  42.  
  43.      */  
  44.   
  45.     publicvoid delete(String uid) throws Exception;  
  46.   
  47.     /** 
  48.  
  49.      *查询全部用户 
  50.  
  51.      *@returnList 
  52.  
  53.      *@throwsException 
  54.  
  55.      */  
  56.   
  57.     public List<User> queryAll() throws Exception;  
  58.   
  59. }  




UserDaoImpl.java接口实现类

  1. package org.bulktree.ssh2.news.dao.impl;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.bulktree.ssh2.news.dao.UserDao;  
  6.   
  7. import org.bulktree.ssh2.news.vo.User;  
  8.   
  9. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  10.   
  11. /** 
  12.  
  13.  * 继承HibernateDaoSuppor类实现getHibernateTemplate() 
  14.  
  15.  * 
  16.  
  17.  * @author bulktree 
  18.  
  19.  * 
  20.  
  21.  */  
  22.   
  23. public class UserDaoImpl extends HibernateDaoSupport implements UserDao {  
  24.   
  25.     @Override  
  26.   
  27.     public void addUser(User user) throws Exception {  
  28.   
  29.        this.getHibernateTemplate().save(user);  
  30.   
  31.     }  
  32.   
  33.     @Override  
  34.   
  35.     public void delete(String uid) throws Exception {  
  36.   
  37.        // TODO Auto-generated method stub  
  38.   
  39.     }  
  40.   
  41.     @Override  
  42.   
  43.     public List<User> queryAll() throws Exception {  
  44.   
  45.        // TODO Auto-generated method stub  
  46.   
  47.        return null;  
  48.   
  49.     }  
  50.   
  51.     @Override  
  52.   
  53.     public User queryByUidAndPassword(String uid, String password)  
  54.   
  55.            throws Exception {  
  56.   
  57.        String hql = "FROM User as u WHERE u.uid=? and u.password=?";  
  58.   
  59.        String[] str = new String[] { uid, password };  
  60.   
  61.        List<User> users = this.getHibernateTemplate().find(hql, str);  
  62.   
  63.        if (users != null && users.size() >= 1) {  
  64.   
  65.            return users.get(0);  
  66.   
  67.        } else {  
  68.   
  69.            return null;  
  70.   
  71.        }  
  72.   
  73.     }  
  74.   
  75. }  


Service层,新建一UserService.java接口

  1. package org.bulktree.ssh2.news.service;  
  2.   
  3. publicinterface UserService {  
  4.   
  5.     /** 
  6.  
  7.      *添加一个用户 
  8.  
  9.      *@paramuid 
  10.  
  11.      *@paramuname 
  12.  
  13.      *@parampassword 
  14.  
  15.      *@return新增用户的uid 
  16.  
  17.      *@throwsException 
  18.  
  19.      */  
  20.   
  21.     public String addUser(String uid, String uname, String password) throws Exception;  
  22.   
  23.     /** 
  24.  
  25.      *验证登录 
  26.  
  27.      *@paramuid 
  28.  
  29.      *@parampassword 
  30.  
  31.      *@returnuid 
  32.  
  33.      *@throwsException 
  34.  
  35.      */  
  36.   
  37.     public String isLogin(String uid, String password) throws Exception;  
  38.   
  39. }  


接口实现类

  1. package org.bulktree.ssh2.news.service.impl;  
  2.   
  3. import org.bulktree.ssh2.news.dao.UserDao;  
  4.   
  5. import org.bulktree.ssh2.news.service.UserService;  
  6.   
  7. import org.bulktree.ssh2.news.vo.User;  
  8.   
  9. /** 
  10.  
  11.  * UserService实现类 
  12.  
  13.  * 
  14.  
  15.  * @author bulktree 
  16.  
  17.  * 
  18.  
  19.  */  
  20.   
  21. public class UserServiceImpl implements UserService {  
  22.   
  23.     private UserDao userDao;  
  24.   
  25.     public void setUserDao(UserDao userDao) {  
  26.   
  27.        this.userDao = userDao;  
  28.   
  29.     }  
  30.   
  31.     @Override  
  32.   
  33.     public String addUser(String uid, String uname, String password)  
  34.   
  35.            throws Exception {  
  36.   
  37.        User user = new User();  
  38.   
  39.        user.setUid(uid);  
  40.   
  41.        user.setUname(uname);  
  42.   
  43.        user.setPassword(password);  
  44.   
  45.        userDao.addUser(user);  
  46.   
  47.        return user.getUid();  
  48.   
  49.     }  
  50.   
  51.     @Override  
  52.   
  53.     public String isLogin(String uid, String password) throws Exception {  
  54.   
  55.        User user = userDao.queryByUidAndPassword(uid, password);  
  56.   
  57.        if(user != null) {  
  58.   
  59.            return user.getUname();  
  60.   
  61.        } else {  
  62.   
  63.            return null;  
  64.   
  65.        }  
  66.   
  67.     }  
  68.   
  69. }  


最后我们新建一Action,LoginAction.java

  1. package org.bulktree.ssh2.news.action;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import org.bulktree.ssh2.news.service.UserService;  
  6.   
  7. import org.bulktree.ssh2.news.vo.User;  
  8.   
  9. import com.opensymphony.xwork2.ActionContext;  
  10.   
  11. import com.opensymphony.xwork2.ActionSupport;  
  12.   
  13. /** 
  14.  
  15.  * 登录Action 
  16.  
  17.  * @author bulktree 
  18.  
  19.  * 
  20.  
  21.  */  
  22.   
  23. public class LoginAction extends ActionSupport {  
  24.   
  25.     private User user;  
  26.   
  27.     private UserService userService;  
  28.   
  29.     public User getUser() {  
  30.   
  31.        return user;  
  32.   
  33.     }  
  34.   
  35.     public void setUser(User user) {  
  36.   
  37.        this.user = user;  
  38.   
  39.     }  
  40.   
  41.     public UserService getUserService() {  
  42.   
  43.        return userService;  
  44.   
  45.     }  
  46.   
  47.     public void setUserService(UserService userService) {  
  48.   
  49.        this.userService = userService;  
  50.   
  51.     }  
  52.   
  53.     @Override  
  54.   
  55.     public String execute() throws Exception {  
  56.   
  57.        if (isInvalid(user.getUid())) {  
  58.   
  59.            this.addFieldError("uid""登录ID不能为空");  
  60.   
  61.            return INPUT;  
  62.   
  63.        }  
  64.   
  65.        if (isInvalid(user.getPassword())) {  
  66.   
  67.            this.addFieldError("password""密码项不能为空");  
  68.   
  69.            return INPUT;  
  70.   
  71.        }  
  72.   
  73.         
  74.   
  75.        String uname = userService.isLogin(user.getUid(), user.getPassword());  
  76.   
  77.        if (uname != null) {  
  78.   
  79.            Map session = ActionContext.getContext().getSession();  
  80.   
  81.            session.put("uname", uname);  
  82.   
  83.            session.put("uid", user.getUid());  
  84.   
  85.            return SUCCESS;  
  86.   
  87.        } else {  
  88.   
  89.            this.addFieldError("idorpassword""登录ID或密码错误");  
  90.   
  91.            return INPUT;  
  92.   
  93.        }  
  94.   
  95.     }  
  96.   
  97.     private boolean isInvalid(String value) {  
  98.   
  99.        return (value == null || value.length() == 0);  
  100.   
  101.     }  
  102.   
  103. }  


下来就是login.jsp页面文件了

  1. <center>  
  2.   
  3.     <div style="color: red"><s:fielderror /><s:actionmessage /></div>  
  4.   
  5. <s:form action="login" method="post">  
  6.   
  7.     <s:textfield name="user.uid" label="UID" tooltip="ENTER YOUR UID" />  
  8.   
  9.     <s:password name="user.password" label="PASSWORD"  
  10.   
  11.        tooltip="ENTER YOUR PASSWORD" />  
  12.   
  13.     <s:submit></s:submit>  
  14.   
  15.      
  16.   
  17. </s:form>  
  18.   
  19. <s:a href="regist.jsp">REGIST NEW COUNT</s:a></center>  


下来就是applicationContext.xml文件的配置

  1. <bean id="userdao" class="org.bulktree.ssh2.news.dao.impl.UserDaoImpl">  
  2.   
  3.        <property name="sessionFactory">  
  4.   
  5.            <ref bean="sessionFactory"/>  
  6.   
  7.        </property>  
  8.   
  9.     </bean>  
  10.   
  11.      
  12.   
  13.     <!-- bean配置 -->  
  14.   
  15.     <bean id="newsdao" class="org.bulktree.ssh2.news.dao.impl.NewsDaoImpl">  
  16.   
  17.        <property name="sessionFactory">  
  18.   
  19.            <ref bean="sessionFactory"/>  
  20.   
  21.        </property>  
  22.   
  23.     </bean>  
  24.   
  25.     <bean id="loginAction" class="org.bulktree.ssh2.news.action.LoginAction">  
  26.   
  27.        <property name="userService">  
  28.   
  29.            <ref bean="userservice"/>  
  30.   
  31.        </property>  
  32.   
  33.     </bean>  
  34.   
  35.      
  36.   
  37.         </bean>  


·bean的id属性就是对应类class的实例

·property元素的name属性为bean的class属性对应类的属性名,

·ref为引用bean,引用的是bean的id

Struts.xml文件完整配置

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <!DOCTYPE struts PUBLIC  
  4.   
  5.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  6.   
  7.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  8.   
  9. <struts>  
  10.   
  11.     <constant name="struts.i18n.encoding" value="UTF-8" />  
  12.   
  13.     <package name="SSH2" extends="struts-default">  
  14.   
  15.        <action name="login" class="loginAction">  
  16.   
  17.            <result>/addNews.jsp</result>  
  18.   
  19.            <result name="input">/login.jsp</result>  
  20.   
  21.        </action>  
  22.   
  23.         
  24.   
  25.        <action name="regist" class="registAction">  
  26.   
  27.            <result>/login.jsp</result>  
  28.   
  29.            <result name="input">/regist.jsp</result>  
  30.   
  31.        </action>  
  32.   
  33.         
  34.   
  35.        <action name="listall" class="listallAction">  
  36.   
  37.            <result>/newsList.jsp</result>  
  38.   
  39.            <result name="input">/addNews.jsp</result>  
  40.   
  41.        </action>  
  42.   
  43.         
  44.   
  45.        <action name="notice" class="noticeAction">  
  46.   
  47.            <result type="redirect-action">listall</result>  
  48.   
  49.            <result name="input">/addNews.jsp</result>  
  50.   
  51.        </action>  
  52.   
  53.     </package>  
  54.   
  55.      
  56.   
  57. </struts>  


·form表单的action对应struts.xml文件中的action的name属性,由于Strust由Spring管理, struts.xml文件中的action元素class属性对应的是applicationContext.xml文件中bean元素id属性

最后贴上完整的applicationContext.xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.   
  5.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.   
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans <a target="_blank" href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</a>">  
  8.   
  9.     <!-- 使用JNDI数据源 -->  
  10.   
  11.     <bean id="dataSource"  
  12.   
  13.        class="org.springframework.jndi.JndiObjectFactoryBean">  
  14.   
  15.        <property name="jndiName" value="java:comp/env/jdbc/news"></property>  
  16.   
  17.     </bean>  
  18.   
  19.     <!-- 管理Hibernate -->  
  20.   
  21.     <bean id="sessionFactory"  
  22.   
  23.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  24.   
  25.        <property name="dataSource" ref="dataSource"></property>  
  26.   
  27.        <property name="mappingResources">  
  28.   
  29.            <list>  
  30.   
  31.               <value>org/bulktree/ssh2/news/vo/User.hbm.xml</value>  
  32.   
  33.               <value>org/bulktree/ssh2/news/vo/News.hbm.xml</value>  
  34.   
  35.            </list>  
  36.   
  37.        </property>  
  38.   
  39.        <property name="hibernateProperties">  
  40.   
  41.            <value>  
  42.   
  43.               hibernate.dialect=org.hibernate.dialect.MySQLDialect  
  44.   
  45.            </value>  
  46.   
  47.        </property>  
  48.   
  49.     </bean>  
  50.   
  51.      
  52.   
  53.     <bean id="userdao" class="org.bulktree.ssh2.news.dao.impl.UserDaoImpl">  
  54.   
  55.        <property name="sessionFactory">  
  56.   
  57.            <ref bean="sessionFactory"/>  
  58.   
  59.        </property>  
  60.   
  61.     </bean>  
  62.   
  63.      
  64.   
  65.     <!-- bean配置 -->  
  66.   
  67.     <bean id="newsdao" class="org.bulktree.ssh2.news.dao.impl.NewsDaoImpl">  
  68.   
  69.        <property name="sessionFactory">  
  70.   
  71.            <ref bean="sessionFactory"/>  
  72.   
  73.        </property>  
  74.   
  75.     </bean>  
  76.   
  77.     <bean id="userservice" class="org.bulktree.ssh2.news.service.impl.UserServiceImpl">  
  78.   
  79.        <property name="userDao">  
  80.   
  81.            <ref bean="userdao"/>  
  82.   
  83.        </property>  
  84.   
  85.     </bean>  
  86.   
  87.      
  88.   
  89.     <bean id="newservice" class="org.bulktree.ssh2.news.service.impl.NewsServiceImpl">  
  90.   
  91.        <property name="newsDao">  
  92.   
  93.            <ref bean="newsdao"/>  
  94.   
  95.        </property>  
  96.   
  97.     </bean>  
  98.   
  99.      
  100.   
  101.     <bean id="loginAction" class="org.bulktree.ssh2.news.action.LoginAction">  
  102.   
  103.        <property name="userService">  
  104.   
  105.            <ref bean="userservice"/>  
  106.   
  107.        </property>  
  108.   
  109.     </bean>  
  110.   
  111.      
  112.   
  113.     <bean id="registAction" class="org.bulktree.ssh2.news.action.RegistAction">  
  114.   
  115.        <property name="userService">  
  116.   
  117.            <ref bean="userservice"/>  
  118.   
  119.        </property>  
  120.   
  121.     </bean>  
  122.   
  123.     <bean id="noticeAction" class="org.bulktree.ssh2.news.action.NoticeNewsAction">  
  124.   
  125.        <property name="newsService">  
  126.   
  127.            <ref bean="newservice"/>  
  128.   
  129.        </property>  
  130.   
  131.     </bean>  
  132.   
  133.      
  134.   
  135.     <bean id="listallAction" class="org.bulktree.ssh2.news.action.QueryAllNews">  
  136.   
  137.        <property name="newsDao">  
  138.   
  139.            <ref bean="newsdao"/>  
  140.   
  141.        </property>  
  142.   
  143.     </bean>  
  144.   
  145. </beans>  


·applicationContext.xml文件默认加载路径classpath下,也就是WEB-INF下

·整个工程没有用到hibernate.cfg.xml文件,Spring管理了hibernate,这个文件不起什么作用了,但是最好还是加上

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  4.   
  5.                                          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  6.   
  7. <hibernate-configuration>  
  8.   
  9.  <session-factory>  
  10.   
  11.  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.   
  13.  <mapping class="com.bulktree.ssh2.vo.User"  
  14.   
  15.    package="com.bulktree.ssh2.vo" resource="com/bulktree/ssh2/vo/User.hbm.xml"/>  
  16.   
  17.  </session-factory>  
  18.   
  19. </hibernate-configuration> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值