Java

如果一个页面中用了两个以上displaytag,需要注意的分页问题

我在页面上用了两个displayTag。 第一个的记录比较多。当在浏览器转到第二页时,出现下面这个异常: java.lang.IndexOutOfBoundsException: fromIndex = -10 而第二个的记录数为0 分析:displayTag翻页时,页面上所有的displayTag元素都要翻一页            现在第二个displayTag记录数为零,根本不支持翻页操作,所以出现异常 不过,如果第二个记录数不为0,而为1(仍不足够分页)。这时如果第一个翻页,第二个也会跟着翻,不会出现异常,只不过什么也不显示 最终解决办法:     对页面中的每个表格,先判断它的记录是否为0,如果为0则不使用displayTag

Spring中获得Hibernate Session的方法

HibernateDaoSupport这个类有一个方法叫做 getHibernateTemplate(), 你如果经常使用这个方法,就不会对HibernateDaoSupport类陌生了 HibernateDaoSupport有一个方法叫做getSession(),正是这个方法可以获得Session

修改Tomcat的运行内存 & JSP中查看当前的内存使用状况

在catalina.bat中加上红色那行 set _EXECJAVA=%_RUNJAVA% set MAINCLASS=org.apache.catalina.startup.Bootstrap set ACTION=start set SECURITY_POLICY_FILE= set DEBUG_OPTS= set JPDA= set JAVA_OPTS= -Xms512M -Xmx1024M ===JSP中查看当前的内存使用状况= Runtime lRuntime = Runtime.getRuntime(); out.println("*** BEGIN MEMORY STATISTICS ***"); out.println("Free  Memory: "+lRuntime.freeMemory()/1024/1024+"M"); out.println("Max   Memory: "+lRuntime.maxMemory()/1024/1024+"M"); out.println("Total Memory: "+lRuntime.totalMemory()/1024/1024+"M"); out.println("Available Processors : "+lRuntime.availableProcessors()+""); out.println("*** END MEMORY STATISTICS ***");

读取控制台输入的代码

BufferedReader consoleInput = new BufferedReader( new InputStreamReader(System.in)); System.out.print("输入XX的ID:"); if(consoleInput.readLine().equals("")){ return; }else{ …… }

部分hibernate笔记

CGLIB要求被代理有类有一个无参的构造函数,所以用HIBERNATE定义BO时一定要有一个无参的构造函数 hibernate3的merge可以解决 一个session中有多个ID相同的对象 的问题 如果业务方法被transaction manager包住,那么,执行业务如在逻辑上发现不能进行CRUD操作,应该主动抛出异常,以使事务回滚  如果要做一个线程不停地扫描数据库,不要让这个线程成为bean本身,而要让它查找bean 否则的话,如果线程代表的bean被改变了,线程也不会意识到这个变化。 hql的where子句中判断xx 是否为null 的写法是,  xx is(not) null 关于many-to-one属性值为CGLIB代理对象的问题 1.看清楚关键值,对症下药: hibernate, many-to-one,enhancerBycglib, no session 2.是否将many-to-one 设置成lazy="true",如果是,请略过第3步 3.是否使用的是hibernate3,并且没有设置lazy属性? 4.是否在逻辑层管理session,但是在web层使用数据对象? 5.改成lazy=’false’..end. 6.是否将many-to-one 设置成lazy="falze",现象依旧? 7.检查数据库内的外键字段,因为可能没有体现many-to-one的外键了,而依据主动方引用的主键是不存在的.. 8.建立外键. 9.依然没有解决…去下个hibernate_ref 仔细看看,你需要补充知识了 10.问题解决. hibernate3连class本身的lazy都默认为proxy,所以最好将hibernate-mapping的default-lazy置为false hibernate映射中的cascade与数据库的外键cascade完全不一样: 设A引用B,设置cascade="delete",是指当删除A时,hibernate自动为你删除B, 而在关系数据库中,为A对B的引用关系设置“级联删除”,是指当删除B时,数据库自动为你删除A

pager-taglib 中 页码的算法

如 int totalCount =  记录总数; int itemCountForPage =  每页记录数; 那么 int pageCount= totalCount / itemCountForPage + (totalCount % itemCountForPage == 0 ? 0 : 1); // 页数 int offset =  (pageCount- 1) * itemCountForPage ;  //在URL里作为参数pager.offset的值

csvJdbc的基本用法

http://csvjdbc.sourceforge.net 如果第一列用作表头,而在sql里又直接且“select * ”,则表头的任意两列都不能重名 connection的可选属性 http://octopus.objectweb.org/doc/3.2-2/extras/Csvjdbc_readme.html 其中,最重要的是 props.put("suppressHeaders","true"); // first line contains data 也就是说,如果suppressHeaders为true,则CVS无列名,第一行就是数据;;否则,CSV第一行是表头,数据从第二行开始。这个选项的默认值是false,也就是说默认数据从第二行开始 还有几个属性: separator Used to specify a different column separator (Default is ‘,’). fileExtension Used to specify a different file extension (Default is ".csv") charset Used to specify a different than default charset encoding of input file (default is same VM default …

csvJdbc的基本用法 Read More »