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

问题描述

Struts2与Hibernate整合时无法读取数据库中的数据 2C
小弟最近学习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""null2 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""null120);                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 sqlString[] paramint pageint 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(iparam[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()方法中的数据总是空的,后台没有报错。

解决方案

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

解决方案二:
private List result; 你为啥是私有的集合呢

没有报错的原因,是你没有在execute方法上面加异常抛出啊

解决方案三:
应该是你视图层有问题吧,你把视图层的代码贴出来看看

解决方案四:
我自己在Debug后发现根源问题在ShowStuAction调用hibernateUtil的QueryByPage方法时,query.list()语句没有取到数据,为啥就取不到尼

解决方案五:
你直接在execute方法里输出试试看看有没有

解决方案六:
Configuration con=new Configuration().configure();
改成
Configuration con=new Configuration().configure(“hibernamte.cfg.xml文件路径,从classpath开始用/隔开”);

解决方案七:

时间: 2024-10-28 18:16:08

struts 2-Struts2与Hibernate整合时无法读取数据库中的数据的相关文章

struts2实现用户登录 并能查询数据库中的数据显示出来 按条件查询

问题描述 struts2实现用户登录 并能查询数据库中的数据显示出来 按条件查询 struts2实现用户登录 并能查询数据库中的数据显示出来 按条件查询,多张表按条件查询 我要例子 主要的功能是显示数据库的内容 请看清要求!!! 解决方案 用 户 解决方案二: HIBERNATE中的ORG关联 解决方案三: 先搭个框架,再实现 解决方案四: 可以参考马士兵的struts2 视频,讲解的非常详细,如果需要给以给你 解决方案五: http://blog.csdn.net/lisq037/articl

struts2 spring hibernate整合后报错

问题描述 struts2 spring hibernate整合后报错 在eclipse里面run on server之后,可以正确显示界面,但当填写表单点击按钮后出现了这个报错 Struts Problem Report Struts has detected an unhandled exception: Messages: 1.org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; 2.Method

hibernate分页算法-hibernate分页时查询出了15条数据,一页显示10条,其余5条不显示

问题描述 hibernate分页时查询出了15条数据,一页显示10条,其余5条不显示 query.setFirstResult((pageNo-1)*10); query.setMaxResults(10); 在使用这个分页算法的时候我用模糊查询一共查处了15条数据,第一页显示了10,但为什么其余5条显示不出来 if("down".equals(flag)) { pageNo=(Integer)session.get("pageNo"); System.out.pr

hibernate查出的值与数据库中不一致的问题

问题描述 页面上有个值是用person.getAccount()取的,当手动在数据库改了那一列的话,然后再在页面上查一下显示的还是以前的值??怎么解决 解决方案 解决方案二:ie缓存问题吧,你重启下试试,还不行就把服务器中的项目部署时生成的项目文件删除,tomcat在work目录下找其他服务器上网上找解决方案三:应该是缓存问题吧试试调整一下工程里面的hibernate缓存机制解决方案四:缓存没有及时更新解决方案五:引用1楼ak47zhoujun123的回复: ie缓存问题吧,你重启下试试,还不行

sqlite删除数据库中的数据时偶尔会出现错误

问题描述 sqlite删除数据库中的数据时偶尔会出现错误 java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed. 求助,connection pool 是啥啊,求大神指教. 解决方案 如果确定不是连接被关闭,那还有可能就是多线程访问sqlite,sqlite数据库是单线程操作的,那么当N多个Thread同时调用的时候,可能报这错误.这也就

mysql-再往数据库中添加数据时,起初可以添加进去,之后不知道是把电脑关了还是怎么老报错,而且添加不进去了

问题描述 再往数据库中添加数据时,起初可以添加进去,之后不知道是把电脑关了还是怎么老报错,而且添加不进去了 Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if

java-当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码?

问题描述 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? 当用JDBC向数据库中插入数据或从数据库中提取数据时,为何有时中文字符会显示为乱码? 怎么才能解决问题,跟jdbc driver Manager的设置有关系吗? 解决方案 数据库字符集 与 页面编码 都使得 是 uft-8?得统一 解决方案二: 建议编码格式采用UTF-8的格式 解决方案三: 在使用数据的每一个节点上,其编码方式必须要一致否则就会出现乱码.特别是使用MySQL时,客户端,连接器.数据库

如何在servlet里面设置extjs分页时拿到数据库查询出来数据总数?

问题描述 如何在servlet里面设置extjs分页时拿到数据库查询出来数据总数?最好能给个代码参考下,谢谢

代码-java单元测试时jar读取项目中properties

问题描述 java单元测试时jar读取项目中properties 我的项目中引用同事的jar,这个jar中读取了我项目中的properties,我的properties里的value是从pom中获取的,这时问题出现了 jar只能读取properties中pom还没有注入时的value,也就是${value}形式.但我项目中自身的获取properties的代码可以成功获取pom注入后的value.这是什么问题?两个现象的区别就是一个是从jar中获取,一个是本地程序获取. 解决方案 肯定是jar中读