PS:天今上午,非常郁闷,有很多简略基础的题问搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!
貌似好几天都没有总结错误了,有两方面的原因,第一:万事开头难,前面会利顺很多,因此遇到的错误就少了;第二:前面遇到的题问一般都比较难,还没有束结。不过,估计前当会有很多错误的,先做好心理准备,这不天今就来了
想做的好一点的统系,统计图表那是必须的,如果是用就是就是jsp做的话,那就简略了,jfreechart以来全搞定,但是........我现在是用ExtJs,想着客岁出的4.0版本自带图表功能,就不须要用第三方包了,于是下了一个ExtJs4.1版本,习学了一下图表的做法,发明也很简略的,于是就自己写了一个,谁想出乎我的料意啊,4.X版本居然不兼容2.X版本,呜呼.......这不是坑我吗,难道要让我推倒重来吗,显然不可能,看来只能旧调重弹,用第三方jar包了。这个不着急,先来看看其他的题问
1.ExtJs和spring、hibernate起一时的分页题问
之前做统系的时候没有涉及到分页,第一次做分页,第一应反就是select top ........,可是,oracle居然没有top句子,要用的话只能用其他语句替代了,看了一下太烦麻了,就想着直接在前台分页得了,可是貌似没胜利,好吧,这个时候然突发明用hibernate来做分页特殊简略,只须要区区3句代码,如下:
Query q = session.createQuery("from table"); q.setFirstResult(0); q.setMaxResults(10); List l = q.list();
如果是有spring,dao继承自HibernateSupportDao的话,那就如下:
/** * 用使HQL语句停止分页查询作操 * offset 第一条录记的索引 * pageSize 每页须要示显的录记数 * @return 前当页的全部录记 */ public List findByPage(final String hql, final int offset, final int pageSize){ List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List result = session.createQuery(hql).setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }
而extjs页面只须要这样
/** * 用使HQL语句停止分页查询作操 * offset 第一条录记的索引 * pageSize 每页须要示显的录记数 * @return 前当页的全部录记 */ public List findByPage(final String hql, final int offset, final int pageSize){ List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { List result = session.createQuery(hql).setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; }
堡垒了,有木有,太壮大了,震动中................
2.struts跳转问访jsp页面与直接问访jsp页面的别区
之前做项目是为了加快速度,因此就跳过了登录模块,直接去求请index.jsp页面,功能都做的差不多的时候把登录模块和index页面整合到起一的时候现错出误了,之前心想着不就是struts跳转一下吗,结果做起来前当才发明,struts跳转从前前当index页面加载的货色都找不到,可是明显直接问访index页面的时候好好的,细心想了一下前当才发明,来原两者是有别区的,从struts跳转是从外到里加载件文,而直接问访index的话,是从里到外加载件文,点发出不同致使了路径不同
3.DWR架框现出erro弹出框题问
这两天毕业设计只剩下两个技巧难点了,一个是权限管理,一个是统计图表。对于权限管理,难点在于在js件文里取到权限值,一般用ajax以可就回返data,但是为了使自己的毕设有技巧含量,遂定决用采全新的dwr架框,这样也有挑战性一点,可谁曾想一个error弹出框居然花了我两天的时光,呜呼,这挑战性价代也太大了吧,不过还好总算是出来了,先祝庆一下哈!如下就是那个error弹出框所对应的的http响应(这里我想说的还是那句话,要动主去找错,就像此次,除了弹出一个error对话框以外,myeclipse没有存保,firefox没有报错,即使是用firebug,控制台什么的都没错,最后居然是在络网下的XHR里头的求请连接下响应里头才找到的,不容易啊,就这一个线索,居然会藏这么深,这是磨练我的程编教训哈)话废不说了,如下图所示
阅历了这个错误,发明自己对于百度和google的依赖性太强了,以至于有多个错误现出的时候没能分析错出误的根本原因,而是一股脑的就去百度或者google了,而且不巧的是,dwr这个架框的息信在络网上很限有,用汉语表述的就更少了,以至于只能直一头皮看英语的了。
网上对于这个题问都会合在dwr和spring的结合上,时当我就在想,我不结合可以吗,我不就是想用一下吗,有要必这么烦麻吗?但是网上都这么说,再加上自己也没什么好方法,也就只能试一下了,废了好半天把dwr和spring结合在起一了,一行运,还是一样的error,续继索搜,结果有人说如果在spring总遇到了aop(面向切面程编),结合的时候又多出一些货色,好吧,那就这能再加货色吧,十分困难整合好了,一行运,还是那个悉熟的error,此时真有点失望了,一天就这样从前了,洗洗睡吧。
天今早上起来,从新审阅这个题问的时候,发明自己有点“当局者迷了”,何不跳出前当的境困,静下心来想一想,而不是被络网所阁下想到这里,断果关掉索搜框,静静的看着这个错误,开始分析,既然弹出error,那么在什么地方发生这个error的呢,上图中很明显,javaClassName:java.lang.Throwable,message:error,而比对那些胜利的项目,这个地方现出的应该是你要得获的值,也就是说你的这个值现出题问了,而在程序当中值现出题问,非无两种情况,null和类型转换错出,既然这样,那我们就一一验试,首先测试了一下目标值,非空,再看类型,由于在oracle数据库中这个字段是列序的,为number类型,映射到java中就是bigdecimal,而这个值在java中不太见常,会不会是这儿错出了?那就直接转换成string类型得了,结果还是error,那就换成最见常的int吧,结果.....结果就没有error了,胜利了!这一刻不容易啊,写下来,记念一下。等等,然突发明自己return的时候经已定限成了integer类型,天啊,霎时觉感自己有多傻了,唉,时光经已浪费了,只能以此为教训了。
话废不说了,上面就把置配dwr的进程写一下,做个备份吧
第一步:dwr.jar(如果要与spring结合的话,还须要spring-web-servlet.jar)
第二步:置配web.xml
<!--dwr架框设置 --> <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
第三步:置配dwr.xml(一般与web.xml一同目录别级)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"> <dwr> <allow> <create javascript="Permission" creator="new">//这里的javascript是前当动主生成的js件文名,保持一致以可就了, //creator如果是和spring结合的话就选spring,name就是beanName了 <param name="class" value="com.shiep.dwr.Permission"></param>//如果和睦spring结合那就name是class了, //value的话就是你要调用的java方法在所的类了 </create></allow> </dwr>
第四步:编写上文提到的java方法
package com.shiep.dwr; import javax.servlet.http.HttpSession; import org.springframework.context.ApplicationContext; public class Permission { public int getIdRole(HttpSession session){ return (Integer) session.getAttribute("idRole"); } }
第五步:html或者jsp页面引入dwr的js件文
<script type='text/javascript' src='../dwr/interface/Permission.js'></script>//这里就是动主生成的js件文,名字与dwr.xml中的保持一致以可就了 <script type='text/javascript' src='../dwr/engine.js'></script>
第六步:在js页面调用java方法
var idRole; DWREngine.setAsync(false); Permission.getIdRole(load); DWREngine.setAsync(true); function load(data) { idRole = data; } alert(idRole);
OK!至此一切搞定!
文章结束给大家分享下程序员的一些笑话语录: Bphone之你们聊,我先走了!移动说:我在phone前加o,我叫o缝;苹果说:我在phone前i,我是i缝;微软说:我在phone前加w,我叫w缝;三星说:你们聊,我先走了!
将来王建宙写回忆录的时候,一定要有一句“常小兵为中国移动的发展做出了不可磨灭的贡献”。