如何让DAO的异常显示到页面上?我这个只输出到tomcat后台,页面却显示DAO执行成功,该怎么改才能让异常输出到页面?

问题描述

如图。问题很初级,希望各位高手别见笑。用的webwork+spring+hibernate,我把其中几个关键文件的代码贴出来吧用户列表的jsp文件:userlist.jsp:<%@pagecontentType="text/html;charset=gb2312"%><%@taglibprefix="ww"uri="/webwork"%><jsp:includeflush="true"page="/head.jsp"></jsp:include><divalign="center"><ww:setname="pg"value="#request.pager"/><tablewidth="200"border="1"cellspacing="0"bordercolor="#666666"><tr><tdwidth="100"><divalign="center">用户名</div></td><tdwidth="100"><divalign="center">删除</div></td></tr><ww:iteratorvalue="#request['users']"id="user"><tr><td><divalign="center"><ww:propertyvalue="#user.username"/></div></td><td><divalign="center"><formaction="deluser.action"method=post><inputtype="hidden"name="userid"value="<ww:propertyvalue="#user.userid"/>"><inputtype="submit"value="删除用户"></form></div></td></tr></ww:iterator></table></div>

xwork.xml配置文件:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPExworkPUBLIC"-//OpenSymphonyGroup//XWork1.1.1//EN""http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"><xwork><includefile="webwork-default.xml"></include><packagename="user"extends="webwork-default"namespace="/user"><actionname="userlist"class="userController"method="userList"><resultname="success">/jsp/userlist.jsp</result><resultname="input"type="redirect">/login.jsp</result></action><actionname="deluser"class="userController"method="delUser"><resultname="success">/jsp/deluser_success.jsp</result><resultname="error">/index.jsp</result></action></package></xwork>

action的java文件packagecn.gth.test.view;importjava.util.List;importjava.util.Map;importcn.gth.test.domain.User;importcn.gth.test.service.IUserService;importcom.opensymphony.xwork.ActionContext;importcom.opensymphony.xwork.ActionSupport;@SuppressWarnings("serial")publicclassUserControllerextendsActionSupport{privateUseruser;privateIUserServiceuserServiceImp;privatelonguserid;publicUsergetUser(){returnuser;}publicvoidsetUser(Useruser){this.user=user;}/*publicIUserServicegetUserServiceImp(){returnuserServiceImp;}*/publicvoidsetUserServiceImp(IUserServiceuserServiceImp){this.userServiceImp=userServiceImp;}/*publiclonggetUserid(){returnuserid;}*/publicvoidsetUserid(longuserid){this.userid=userid;}@SuppressWarnings("unchecked")publicStringuserList()throwsException{try{Listusers=userServiceImp.getAllUser();Maprequ=(Map)ActionContext.getContext().get("request");requ.put("users",users);returnSUCCESS;}catch(Exceptione){e.printStackTrace();returnERROR;}}@SuppressWarnings("unchecked")publicStringdelUser()throwsException{try{Maprequ=(Map)ActionContext.getContext().get("request");requ.put("username",userServiceImp.getUser(userid).getUsername());userServiceImp.deluser(userid);returnSUCCESS;}catch(Exceptione){e.printStackTrace();returnERROR;}}}

实现了IUserService接口的UserServiceImp文件:packagecn.gth.test.service.imp;importjava.util.List;importcn.gth.test.dao.IUserDao;importcn.gth.test.domain.User;importcn.gth.test.service.IUserService;publicclassUserServiceImpimplementsIUserService{privateIUserDaouserDaoImp;/*publicUserDaoImpgetUserDaoImp(){returnuserDaoImp;}*/publicvoidsetUserDaoImp(IUserDaouserDao){this.userDaoImp=userDao;}publicListgetAllUser(){returnuserDaoImp.getAllUser();}publicUsergetUser(longuserid){returnuserDaoImp.getUser(userid);}publicvoiddeluser(longuserid){userDaoImp.deluser(userid);}}

实现了IUserDao接口的UserDaoImp文件:packagecn.gth.test.dao.imp;importjava.util.List;importorg.hibernate.Query;importorg.hibernate.Session;importorg.hibernate.Transaction;importcn.gth.test.common.DaoSession;importcn.gth.test.dao.IUserDao;importcn.gth.test.domain.User;publicclassUserDaoImpextendsDaoSessionimplementsIUserDao{publicListgetAllUser(){Sessionsession=this.getSession();try{Stringhql="fromUserorderbyusername";Queryquery=session.createQuery(hql);Listusers=query.list();returnusers;}catch(Exceptione){e.printStackTrace();returnnull;}finally{session.close();}}publicUsergetUser(longuserid){Sessionsession=this.getSession();try{Useruser=(User)session.get(User.class,userid);returnuser;}catch(Exceptione){e.printStackTrace();returnnull;}finally{session.close();}}publicvoiddeluser(longuserid){Sessionsession=this.getSession();Transactiontx=null;try{tx=session.beginTransaction();session.delete(getUser(userid));tx.commit();}catch(Exceptione){if(tx!=null){tx.rollback();}e.printStackTrace();}finally{session.close();}}}

如果想导入全部代码,可以下载这个文件,,考虑到文件体积太大,去掉了三个框架的lib包。请各位高手帮帮忙,谢谢!

解决方案

解决方案二:
不让用户看到异常是我们开发人员应该做的你为什么要把异常显示在页面呢如果想让异常显示在页面的话你就用个变量把异常存起来返回到页面就得了或者再做个if判断如果存放异常的变量有值就只显示异常信息而不显示转发的页面信息
解决方案三:
你用trycatch将程序包起来,发生异常了,进入catch块,在里面把异常信息装入变量传到页面,在页面显示出来
解决方案四:
up
解决方案五:
最简单的办法,Dao层的异常throw给managermanager的异常throw给actionaction的异常也throw出来,我就不信页面上看不到哇哈哈
解决方案六:
就是把代码里的trycatch全部去掉,方法里都加上个throwsException就OK了
解决方案七:
引用5楼yejingtao703的回复:

就是把代码里的trycatch全部去掉,方法里都加上个throwsException就OK了

这样确实是把异常输出到页面了,不过有两个大问题:1、多次发生异常后,程序会停止响应,怀疑是因为操作数据库的session关闭语句不能被执行所致2、页面上显示的异常是没有经过处理的异常,我想要的是经过处理后的可控异常
解决方案八:
异常时我们开发人员看的,你该不会让用户去读一堆错误语句吧?在开发方面,我们要提高用户体验度的没有那个用户愿意去读一堆异常语句的

时间: 2024-08-02 13:26:28

如何让DAO的异常显示到页面上?我这个只输出到tomcat后台,页面却显示DAO执行成功,该怎么改才能让异常输出到页面?的相关文章

怎么用hibernate把mysql中的blob型取出来显示在页面上?

问题描述 Queryquery=session.createQuery("fromLipinasawherea.bianhao="+bianhao);list=query.list();执行完这句我应该已经将数据库中的图片数据得到了吧?if(list==null){System.out.println("ok");}for(inti=0;i<list.size();i++){Lipinlipin=(Lipin)list.get(i);lipin.getPict

数据库-checkbox回显,显示在页面上。

问题描述 checkbox回显,显示在页面上. 问题1: 这是一个多选框,我选择上图多选框的值以后,进行保存,存到数据库.数据库中格式如下图.这些字段中间用逗号隔开了,上图最后面有一个修改操作,点击修改,进入下面页面,其他值都能显示,可是多选的显示不了.修改页面问题:如何让修改页面上的多选框被选中. 解决方案 用js勾选 <input type=""checkbox"" name=""cb"" value="&

asp中如何将多个查询结果显示在一个页面上

问题描述 asp中如何将多个查询结果显示在一个页面上 asp中如何将多个查询结果显示在一个页面上,并且能点击一下按钮就让这些显示消失 解决方案 多个table显示多个结果就是了.要想全部消失,用jquery,$("table").hide();//所有table隐藏

mvc4-后台数据以表格形式显示在页面上,每一行都有按钮,但是只有第一行有响应

问题描述 后台数据以表格形式显示在页面上,每一行都有按钮,但是只有第一行有响应 表格的每一行都有一个编辑按钮,后台已经写好了update函数,前台也写好了传参函数,但是每次运行只有第一行有响应.是不是因为我的数据是在数据库中获得的? 下面是我的传参函数 后台的函数没有问题. 调试时第一行有保存按钮有响应,其他行没有.

js image-JS 通过FileSystemObject 读取本地图片,怎么显示在页面上,或者转为Base64

问题描述 JS 通过FileSystemObject 读取本地图片,怎么显示在页面上,或者转为Base64 JS 通过FileSystemObject 读取本地图片,怎么显示在页面上,或者转为Base64 var fso = new ActiveXObject("Scripting.FileSystemObject"); var f = fso.GetFile(filePath); filePath为图片路径(c:/1.jpg) 如何将f文件显示在界面上 或者 转为 Image 或者转

jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???

问题描述 jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???  写道 解决方案 上面的链接搞乱了,看这个:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data&s[]=json#json_data解决方案二:你的后台返回的相应数据格式不对啊,jqgrid有要求的:看=json#json_data]官方文档这里

怎么把mysql中的图片查出来然后转换显示在页面上!

问题描述 我的实体类:publicListfindByBianhao(Stringbianhao){Transactiontx=null;Listlist=null;try{session=hib.openSession();tx=(Transaction)session.beginTransaction();Queryquery=session.createQuery("fromLipinasawherea.bianhao="+bianhao);list=query.list();i

java读取word文档并显示在页面上

问题描述 java读取word文档并显示在页面上 我是一名java菜鸟,现在f盘有一word文档,我想用java读取(在action中写读取方法)并显示在jsp页面上,请问该如何处理? 解决方案 新手的话不建议你这样试,如果练习jar包的功能,可以练习读取.修改.追加等.如果必须这样,可以网上查查在html中嵌入一段代码可以利用office组件在html中显示word文档.网上如:百度文库,都不是这样做的,是第过软件把doc,xls等文件生成.flv通过flash播放器在页面上显示的.

在一个SSH WEB项目中,如何读取swf格式的文件,并显示到页面上

问题描述 怎样读取swf格式的文件,并在页面上显示呢?求指点! 问题补充:谢谢了.可以 解决方案 <div id="flashcontent_3A12D147BCCF"><embed type="application/x-shockwave-flash" src="http://d1.sina.com.cn/201105/04/303397_950-90.swf" width="950" height=&q