既然选择 就去深入 时间不多 努力就好
无所谓技术 追求高质量 My QQ:370650640
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2011年7月19日

对于取值Session里面的集合问题
 今天做权限  想取得用户里面的角色  由于我做的是多对多  所以不能按照多对一的点get去获得     所以在循环的时候报错     由于没有配置opensessionviewfilter  所以页面不会自动去加载集合里面的数据  所以我们需要配置Opensessionviewfilter来加载集合里面的数据 从而做到我们所需要的功能   下面是Opensessionviewfilter的配置  记住放在Struts2的前面
<filter>
        
<filter-name>openSessionInView</filter-name>
        
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    
</filter>
    
<filter-mapping>
        
<filter-name>openSessionInView</filter-name>
        
<url-pattern>/*</url-pattern>
    
</filter-mapping>

再此感谢ninja的帮忙   大家可以去了解Session的特性和懒加载!
posted @ 2011-09-06 18:21 China_dam 阅读(403) | 评论 (0) | 编辑 收藏
 
SSH批量Checkbox修改
     摘要:   阅读全文
posted @ 2011-08-23 16:04 China_dam 阅读(1000) | 评论 (0) | 编辑 收藏
 
S2SH分页 留有给有需要的!!
daoimp:
 1 /**
 2      * @用户数据分页 pageNo 当前页数 pageSize 每页行数
 3      */
 4     public List<Users> getUsersFenye(final int pageNo, final int pageSize)
 5             throws Exception {
 6         List<Users> list = (List<Users>) this.getHibernateTemplate()
 7                 .executeFind(new HibernateCallback() {
 8                     public Object doInHibernate(Session session)
 9                             throws HibernateException, SQLException {
10                         return session
11                                 .createQuery(
12                                         "from Users users where usid != 1 order by usid asc")
13                                 .setFirstResult(pageNo * (pageSize))
14                                 .setMaxResults(pageSize).list();
15                     }
16                 });
17         return list;
18     }



Action:
 1 public String getList() {
 2         List<Users> list = null;
 3         int pageNo = request.getParameter("pageNo") == null ? 0 : Integer
 4                 .parseInt(request.getParameter("pageNo"));// 当前页数
 5         int pageSize = 5;// 每页显示的行数
 6         int rows = 0;// 总共的行数
 7         try {
 8             rows = usersDao.selectUsers().size();
 9             // 通过查询所有 再点它的size
10             int pages = rows % pageSize == 0 ? rows / pageSize : rows
11                     / pageSize + 1;// 查询出总共的页数
12             // 进行判断 当前的页数小于一 就让它显示首页
13             if (pageNo < 0) {
14                 pageNo = 0;
15                 // 当前页数大于尾页 显示尾页
16             } else if (pageNo > pages - 1) {
17                 pageNo = pages - 1;
18             }
19             list = usersDao.getUsersFenye(pageNo, pageSize);
20             request.setAttribute("uList", list);
21             request.setAttribute("pageNo", pageNo);
22             request.setAttribute("pages", pages);
23         } catch (Exception e) {
24             e.printStackTrace();
25         }
26         return "selectUAll";
27     }


还算简单 没有什么复杂的代码 希望能帮到大家!!
posted @ 2011-08-09 15:32 China_dam 阅读(389) | 评论 (0) | 编辑 收藏
 
代码重构阅读心得[转]
代码重构阅读心得[转]
  最近阅读Martin Flower的《重构》,对自己有许多启发,以前认为一些正确的观点现在看来也不那么正确了;同时发现对重构的理解只有在阅读了书之后更加彻底;在阅读《重构》之后我对其中几点有点感触:

 

  1. 在没有具体阅读《重构》之前,我认为重构就是将代码变的容易理解,容易维护,但在阅读了《重构》之后才发现重构不仅可以利用到重新构造已有的代码,也可以帮助我们在阅读代码的过程中增加我们的对代码理解的速度。其实我想每个学习编写代码的同行都在学习的过程中阅读过别人的代码,然后还有可能将别人的代码拿到计算机上编译运行来查看结果表现。实际上我认为这在某种意义上属于重构,只是重构的粒度有多大,或许你修改别人的代码一部分来查看修改的结果,从而帮助自己掌握软件中的更多特性,或者说让自己修改的代码表现出原来的功能。Martin Flower说的就是如此,我们如果没有得到别人完整的文档,那我们怎么样才能理解别人的代码来,好的办法就是我们一边阅读别人的代码,一边部分部分的修改他人的代码,然后测试每次修改的结果与以前的结果是否一样,如果一样,那么你的重构代码是正确,那么你肯定能够理解你自己写的代码吧(自己都不理解自己的代码就不要干了);别人的代码就这样在我们一部分一部分重构当中被我们理解了。

 

  2. 以前我们写代码的时候喜欢设计,设计的我们认为很详细了,然后开始将所有的功能模块都写完,接着再调试,在调试的过程中我们可能花费比写代码长的多的时间。是的,因为你在运行一个复杂的东西,当然不容易搞定了。Martin Flower认为我们调试的时间可以不用那么长,原因是我们不能在写完了一个复杂系统的时候再调试,我们可以先建立一个好的测试用例,在写这个测试用例的过程中我们更能对整个系统了解,也能够帮助我们写代码;然后我们一点点的写,写一部分测试一下,保证每次新写的代码都能正确运行,从而当代码写完了,系统调试也完毕了。这样的情况下可以认为我们没有在调试上花时间,我们把时间花在测试和编写代码上了。

 

  3. 以前认为代码当中注释越多越好。Martin Flower又一次给我们教训说,写注释是因为你的代码已经不能告诉代码阅读者他的真实意思了。是的,好的代码可以通过很多方式表达其自身的含义,例如变量的名称,函数的名称等;就如一个比较条件判断来说吧,我们有必要的情况下将这个即使很短的条件抽取一个方法,然后用方法名称来告诉读者判断的真实意义,如果这里直接使用条件判断就要让读者迷惑半天,当然这里的前提是给变量和函数起一个合适的名字,这是考验程序员真功夫的地方了。另外,这里说的不是说写注释不好,如我的目的是如果代码可以描述意义了,注释就不需要写了,这样就让你省了一件事情:保证代码和注释的同步,这不是更好。

 

  4. 在之前我也认为重构会花费很大代码,因为我们要理解代码,重新编写;但为了修改BUG,Martin Flower告诉我们重构是最快的。也许不相信,我也不相信,但他说的有道理,容易修改的BUG,当然早就被修改了,那么剩下的BUG就很难找了,主要因为代码中的逻辑不清楚,重构可以改变这种情况,让我们的代码有条有理,那么当然BUG就无处藏身了。

 

  5. 勇于接受变化。以前认为用户频繁的变化需求是不可理喻,实际上是我们自己不可理喻,他们花钱当然需要能提供高质量的服务;而Martin Flower认为不用怕改变,我们有重构工具,重构可以让我们代码任何时候都是清楚的,容易修改的,那么变化是件快乐的事情不再象以前那样艰难了。

 

  6. 重构与性能不是是对立的。重构让代码容易理解,而性能让代码变的难以理解,不过我们在开始的时候应该考虑怎么样让代码容易理解和维护,这样我们可以在后面适当的时候对代码的某部分进行轻松的性能改进工作。本人做性能改进工作有段时间了,想从庞大的杂乱无章的、不熟悉的代码中找出性能的bottleneck的确不是一件容易的事情,我需要的是理解代码,理解流程,那么如果一个结构很好的代码对于我来说就好对付多了。因此他们不是对立的,性能以重构为基础的。

  其实通过重构,最主要的目的是让我们的代码更清晰,更轻巧,更容易被维护,那么也就是我们有良好的代码,于是我们还惧怕什么,什么都可以轻松搞定。同样《重构》认为代码随时都是清晰的、轻巧的,一般你的代码不再具有以上特点,那么我们就需要使用重构了。

posted @ 2011-08-05 11:22 China_dam 阅读(883) | 评论 (0) | 编辑 收藏
 
SSH关于多表插入 只能插入一张关系表的问题
今天弄项目  有个表关联了两张其他表 从而做插入的时候要给两张关系表添加数据  但是在添加数据的时候 就发生了麻烦事  只能添加一张关系表 另外一张关系表 死活添加不进去   结果在检察映射文件的时候 发现了问题  给大家看看我的映射文件是怎么配置的吧 
<set name="customerses" table="CUANDPR" schema="SCOTT" >
            
<key>
                
<column name="PID" precision="22" scale="0" />
            
</key>
            
<many-to-many entity-name="com.kinrich.mediaStorage.dto.Customers">
                
<column name="CUID" precision="22" scale="0" />
            
</many-to-many>
        
</set>
        
<set name="userses" table="PRANDUS" schema="SCOTT" inverse="true">
            
<key>
                
<column name="PID" precision="22" scale="0" />
            
</key>
            
<many-to-many entity-name="com.kinrich.mediaStorage.dto.Users">
                
<column name="USID" precision="22" scale="0" />
            
</many-to-many>
        
</set>
  应该细心的朋友发现了点什么吧    我做插入的时候  第一个Set能插入 第二个就插入不了  原因就在与 Hibernate在自动映射的时候 在第二个上面添加了inverse="true"   结果就造成了这个表的数据添加不进去。   至于inverse的效果  大家可以去了解下。
posted @ 2011-08-02 15:51 China_dam 阅读(785) | 评论 (0) | 编辑 收藏
 
SSH+ORACLE 怎么样把yyyy-MM-dd hh:mm:ss变成yyyy-MM-hh
直接在映射文件下面把getter方法改了  例如我这样
public Date getStarttime(){
        SimpleDateFormat s
=new SimpleDateFormat("yyyy-MM-dd");
        
return java.sql.Date.valueOf(s.format(this.starttime));
    }


在页面上面就不要再做改变了!
posted @ 2011-08-01 15:18 China_dam 阅读(385) | 评论 (0) | 编辑 收藏
 
org.hibernate.DuplicateMappingException错误
 1org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'contactDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.mediaStorage.dto.Menu.userses
 2 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
 3 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
 4 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1244)
 5 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1008)
 6 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:470)
 7 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
 8 at java.security.AccessController.doPrivileged(Native Method)
 9 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
10 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
11 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
12 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
13 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
14 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
15 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
16 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
17 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
18 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
19 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
20 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
21 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
22 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
23 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
24 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
25 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
26 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
27 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
28 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
29 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
30 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
31 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
32 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
33 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
34 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
35 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
36 at org.apache.catalina.core.StandardService.start(StandardService.java:516)
37 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
38 at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
39 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
40 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
41 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
42 at java.lang.reflect.Method.invoke(Unknown Source)
43 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
44 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
45Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.mediaStorage.dto.Menu.userses
46 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)
47 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
48 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
49 at java.security.AccessController.doPrivileged(Native Method)
50 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
51 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
52 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
53 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
54 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
55 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
56 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:269)
57  42 more
58Caused by: org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.mediaStorage.dto.Menu.userses
59 at org.hibernate.cfg.Mappings.addCollection(Mappings.java:124)
60 at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2066)
61 at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2041)
62 at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:359)
63 at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
64 at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
65 at org.hibernate.cfg.Configuration.add(Configuration.java:669)
66 at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:504)
67 at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:631)
68 at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
69 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
70 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
71  52 more
72


 org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.kinrich.mediaStorage.dto.Menu.userses
查资料发现这个错误是Menu里面的userses重复了  从Menu.java检查到Menu.hbm.xml 结果都没有发现错误,后面检查applicationContext.xml文件的mappingResources时发现我的有句value重复了  原来我是从那句开始是用的Ctrl+Alt往下复制的  后面做完没检查就出现了这个错误。  

下次选择用快捷键操作也要注意检查下是否正确。不然出了错误也就把快捷键省下的那点时间都浪费还有多。
posted @ 2011-07-19 13:40 China_dam 阅读(7171) | 评论 (0) | 编辑 收藏
 
随笔:9 文章:1 评论:0 引用:0
<2011年7月>
日一二三四五六
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • Android (rss)
  • Java基础 (rss)
  • SSH(7) (rss)

随笔档案

  • 2011年9月 (1)
  • 2011年8月 (5)
  • 2011年7月 (1)
  • 2011年5月 (3)

搜索

  •  

最新评论

阅读排行榜

  • 1. org.hibernate.DuplicateMappingException错误(7171)
  • 2. java.lang.NoClassDefFoundError: javax/el/ExpressionFactory错误(4782)
  • 3. readOnly错误(3015)
  • 4. SSH批量Checkbox修改(1000)
  • 5. 代码重构阅读心得[转] (883)

评论排行榜

  • 1. 对于取值Session里面的集合问题(0)
  • 2. SSH批量Checkbox修改(0)
  • 3. S2SH分页 留有给有需要的!!(0)
  • 4. 代码重构阅读心得[转] (0)
  • 5. SSH关于多表插入 只能插入一张关系表的问题(0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 China_dam