橙色闪光 2015-08-26 06:21 采纳率: 25%
浏览 2122
已结题

Struts2与Hibernate整合时无法读取数据库中的数据

小弟最近学习SSH框架,遇到一个问题,同时使用Struts2和Hibernate3.6时,Action中调用hibernateUtil的方法无法获取数据,而在测试类的main()方法里却能成功调用,小弟百思不得其解,恳请各位大神指点。

关键源代码如下:

业务逻辑ShowStuAction:

 public class ShowStuAction extends ActionSupport {

    private int page ;
    private  List<Student> result;

    public static void main(String args[]){
        List<Student> result = HibernateUtil.queryByPage("select stu from Student as stu",null,2, 20);
        System.out.println(result.size());
        for(Student s: result){
            System.out.println("学号" + s.getStu_no());
            System.out.println("姓名: " + s.getStu_name());
        }
    }

    public String execute(){

        result = HibernateUtil.queryByPage("select stu from Student as stu",null,1,20);
                if(result.isEmpty()){
                    System.out.println("Result is Empty");
                }
                return "success";
        }

hibernateUtil类关键代码:

 public class HibernateUtil {

        private static SessionFactory sessionFactory;

        /**
         * @return 获取会话工厂
         */
        public static SessionFactory getSessionFactory()
        {
            //读取Hibernate的配置文件  hibernamte.cfg.xml文件
            Configuration con=new Configuration().configure();
            SessionFactory sessionFactory=con.buildSessionFactory();
            return sessionFactory;
        }

        /**
         * @return 获取会话对象
         */
        public static Session getSession()
        {
            return getSessionFactory().openSession();
        }

                 /**
         * @param <T>
         * @param sql
         * @param param
         * @param page
         * @param size
         * @return 实现分页查询
         */
        @SuppressWarnings("unchecked")
        public static <T> List<T> queryByPage(String sql,String[] param,int page,int size)
        {
            System.out.println("QueryByPage");
            List<T> list=new ArrayList<T>();
            Session session=null;
            try
            {
                session=getSession();
                Query query=session.createQuery(sql);
                if(param!=null)
                {
                    for(int i=0;i<param.length;i++)
                    {
                        query.setString(i,param[i]);
                    }
                }
                //筛选条数
                query.setFirstResult((page - 1) * size);
                query.setMaxResults(size);
                list=query.list();
                for(Object t : query.list()){
                    System.out.println("nima");
                    System.out.println(t.toString());
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
                if(session!=null)
                {
                    session.close();
                }
            }

            return list;
        }

hibernate3.6配置文件

 <hibernate-configuration>
    <session-factory>
        <property name="connection.driver">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/whu</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.cache.use_second_level_cache" >false</property>

        <mapping resource="pojo/Student.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Struts2 配置文件

 <struts>
    <constant name="struts.configuration.xml.reload" value="true" />
    <constant name="struts.devMode" value="true" />
    <package name="stu" extends="struts-default">
        <action name="showStu" class="action.ShowStuAction" method="execute">
            <result name="success" >/content/show-stu-success.jsp</result>
        </action>
    </package>

</struts>

运行时,ShowStuAction中的main()方法可以成功地获取数据,而execute()方法中的数据总是空的,后台没有报错。

  • 写回答

7条回答

  • corncob 2015-08-26 06:32
    关注

    没有初始化集合,最好初始化一下,有get、set方法吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿