- 浏览: 83764 次
- 性别:
- 来自: 广州
最新评论
-
nanjiwubing123:
头像是java之父。
AJAX中文乱码解决 -
nanjiwubing123:
不错 ,解决了问题。
AJAX中文乱码解决 -
nao000:
感谢您的帖子带给的帮助。
上传文件类型验证工具类 -
KevinGarnett:
这里为什么用\\: 而不是用\: 是因为:是非标准转义字符, ...
jQuery 特殊字符应该使用转义 -
gongmingwind:
写的非常好,多谢多谢
Struts1x项目开发中的统一异常处理
在项目开发中如果能使用统一异常处理的话,则不但可以简化开发过程,而且还更容易团队的开发与合作,事半功倍。以下通过使用struts1X 结合实现一个项目的统一异常处理解决方案的例子:
第一步:
配置好Struts整合web。
第二步:
编写统一异常类:SystemException.java
编写统一异常处理类:SystemExceptionHandler.java
第三步:
编写struts配置文件:
1、在src目录下新建文件名为:MessageResources.properties 资源文件,内容如下:
errors.detail={0}
2、struts-config.xml配置文件信息如下:
第四步:编写业务逻辑:UserManager.java UserManagerImple.java
UserManagerImpl.java
第五步:异常页面 exception.jsp
第六步:编写自己的Action进行测试。在Action中出自定义的异常时,struts会自动根据你的配置跳转到异常界面,显示异常信息。(其中有不完整的,需自己补充)
第一步:
配置好Struts整合web。
第二步:
编写统一异常类:SystemException.java
package com.changtu.oa.managers; /** * 统一异常类 * 用于存储异常信息,供抛出 * @author Mike */ public class SystemException extends RuntimeException { //异常代码 private String key; private Object[] values; // 构造器重载 public SystemException() { super(); } public SystemException(String message, Throwable throwable) { super(message, throwable); } public SystemException(String message) { super(message); } public SystemException(Throwable throwable) { super(throwable); } public SystemException(String message,String key){ super(message); this.key = key; } public SystemException(String message,String key,Object value){ super(message); this.key = key; this.values = new Object[]{value}; } public SystemException(String message,String key,Object[] values){ super(message); this.key = key; this.values = values; } public String getKey() { return key; } public Object[] getValues() { return values; } }
编写统一异常处理类:SystemExceptionHandler.java
package com.changtu.oa.web; … import com.changtu.oa.managers.SystemException; /** * 统一异常处理类 * @author Mike */ public class SystemExceptionHandler extends ExceptionHandler { private static Log logger = LogFactory.getLog(SystemExceptionHandler.class); /** * 处理SystemException异常 */ @Override public ActionForward execute( Exception ex, ExceptionConfig ae, ActionMapping mapping, ActionForm formInstance, HttpServletRequest request, HttpServletResponse response) throws ServletException { ActionForward forward = null; if(ae.getPath() != null){ forward = new ActionForward(ae.getPath()); }else{ forward = mapping.getInputForward(); } logger.debug("出现异常", ex); // 在控制台显示的异常信息 ex.printStackTrace(); // 如果抛出的异常是自定义的统一异常 if(ex instanceof SystemException){ SystemException se = (SystemException)ex; //取出key值 String key = se.getKey(); // 储存异常信息...... ActionMessage error = null; if( key == null){ error = new ActionMessage(ae.getKey(),se.getMessage()); }else{ if(se.getValues() != null){ error = new ActionMessage(key,se.getValues()); }else{ error = new ActionMessage(key); } } this.storeException(request, key, error, forward, ae.getScope()); return forward; } return super.execute(ex, ae, mapping, formInstance, request, response); } }
第三步:
编写struts配置文件:
1、在src目录下新建文件名为:MessageResources.properties 资源文件,内容如下:
errors.detail={0}
2、struts-config.xml配置文件信息如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <!-- 统一异常处理 --> <global-exceptions > <exception key="errors.detail" type="java.lang.Exception" path="/common/exception.jsp" scope="request" handler="com.changtu.oa.web.SystemExceptionHandler" ></exception> </global-exceptions> <action-mappings> </action-mappings> <!-- 加载国际化资源文件 --> <message-resources parameter="MessageResources" /> </struts-config>
第四步:编写业务逻辑:UserManager.java UserManagerImple.java
UserManagerImpl.java
package com.changtu.oa.managers.impl; //... public class UserManagerImpl implements UserManager { // 登陆 public User login(String username, String password) { /** * 因为设置了User的auto-import="false",所以,在这里使用 * HQL查询的时候,必须使用全路径的类名 */ User user = (User)getSession().createQuery( "select u from com.changtu.oa.model.User u where u.username = ?") .setParameter(0, username) .uniqueResult(); if(user == null){ throw new SystemException("没有这个用户"); } if(!user.getPassword().equals(password)){ throw new SystemException("密码错误!"); } return user; } }
第五步:异常页面 exception.jsp
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@include file="/common/common.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <html:errors/> </body> </html>
第六步:编写自己的Action进行测试。在Action中出自定义的异常时,struts会自动根据你的配置跳转到异常界面,显示异常信息。(其中有不完整的,需自己补充)
发表评论
-
Java Thread Tech
2015-03-16 00:11 537user thread / daemon threadja ... -
Java Thread Tech
2015-03-16 00:10 0user thread / daemon threadjava ... -
移动支付-微信支付,中国银行支付交互图
2015-03-07 11:30 700以下是自己在做移动支付服务端时,画的支付交互时序图 ... -
OSCache页面缓存应用
2010-02-22 19:29 0OSCache页面缓存应用 -
上传文件类型验证工具类
2010-02-01 16:46 24381、定义合法文件类型的配置文件 allowuploadfil ... -
Tomcat访问地址映射配置
2010-01-08 09:42 4817实现的结果如: http://localhost: ... -
Compass对搜索关键字实现高亮显示
2010-01-07 08:49 1827例如搜"广东",实现后输出结果如 ... -
OSCache 缓存框架使用,方便应用到java开发的网站中
2010-01-05 08:51 2366OSCache标记库由OpenSymphony设计,它是 ... -
assert 是什么?
2010-01-04 00:04 1514assertion(断言)在软件开发中是一种常用的 ... -
struts2+spring+hibernate整合的一些配置文件,方便查找使用
2010-01-01 14:19 2706web.xml <?xml version=&quo ... -
struts2+spring+hibernate+compass 实现全文检索
2009-12-31 09:12 4146Compass是一流的开放源码JAVA搜索引擎框架,对 ... -
java序列化是什么,如何实现java序列化?
2009-12-30 08:50 1230序列化就是一种用来处理对象流的机制,所谓对象流也就 ... -
J2EE中一些常用的名词
2009-12-29 08:58 856web容器:给处于其中的应用程序组件(JSP,SERVLET) ... -
数据连接池的工作机制
2009-12-28 10:01 1282J2EE服务器启动时会建立一定数量的池连接,并一直 ... -
使用jspSmartUpload轻松实现上传和下载
2009-11-05 09:06 1133jspSmartUpload是由www.jspsm ... -
Struts2与Struts1的对比(推荐)
2009-11-03 22:24 7351、Action 类: Struts1要 ... -
定好项目规范的重要性
2009-11-02 23:28 1062近几个月都在忙于一个项目,由于需求的不明确,开始做的时 ... -
优秀java开源论坛 JForum,轻松搭建自己的论坛
2009-09-30 11:49 1478JForum 是一个功能强大 ,易于管理的论坛。它的 ... -
FreeMarker中文学习笔记
2009-09-24 17:09 714FreeMarker中文学习笔记。 -
多条件搜索的抽象实现
2009-09-24 17:02 0ColumnFields ColumnField
相关推荐
从网上搜索的一段关于struts1.x自定义异常处理的方法。
Struts1.x常用的开发包,需要学习struts1.x朋友可以下载
java Struts 1.x 框架 Web 开发 java Struts 1.x 框架 Web 开发
一个整个项目的所有代码和截图!内容非常详细,很适合struts2初学者学习哦~
项目中出现的异常通常要用一个友好的异常页面来显示,通过对struts2.xml的配置能拦截全局异常,只要出现异常就会转向异常页面。
Struts2异常处理机制
Struts2.x 项目实战 Struts2.x 项目实战 Struts2.x 项目实战
struts1小项目
NULL 博文链接:https://wjt276.iteye.com/blog/690323
Struts2项目开发经验总结 word版 Struts2项目开发经验总结 word版
功能: ...1. 创建web项目 2. 项目添加Struts2类包支持 3. 设置核心控制器(配置web.xml) 4. 创建业务逻辑控制器(Action) 5. 创建视图页面 6. 创建struts.xml配置Action 7. 部署和运行struts2项目
struts1.x apps 所有最新的Struts1.x项目应用 struts1.x apps 所有最新的Struts1.x项目应用 欢迎大家下载。。。
struts的小项目,用ibatis连接的Oracle数据库。增删改查的基本功能都有!
Struts开发技巧Struts开发技巧Struts开发技巧Struts开发技巧Struts开发技巧Struts开发技巧Struts开发技巧Struts开发技巧
struts1和struts2项目
这本册子不是大公司、大名气作者所著,却是本人从事Struts2项目开发二多年来的一些经验分享,因此书中的语言也不是很规范,都是我自己口语化写的,也希望大家不要太挑刺,水平有限,仅供大家参考,那些经验或许对你...
这个是是用struts开发的项目,内有完整的代码,包括数据库。
这是Struts1.x+Spring+Hibernate开发实例,只要配置一下数据库就可以运行
struts开发入门与项目实践光盘源码 里面有几个struts项目案例
struts1环境开发需要的加包,本压缩包包含了lib和apps两个文件,apps下的示例项目可以用winrar直接解压