一般的struts2异常处理流程分为
1.action抛出的异常
2.action返回error
针对这两种异常,我们通过message文件同一定义异常,在程序中返回异常编码,流程如下:
1.定义异常属性文件XXX.properties
shop.shopaction.error.editshopinfo = 店铺名称或域名已存在,修改失败!
shop.vendershopaction.exist.error=店铺不存在
shop.vendershopaction.banner.error=banner图片类型或大小错误
shop.vendershopaction.logo.error=logo图片类型或大小错误
shop.vendershopaction.venderorshop.error=商家或店铺已停用
2.定义struts.xml。 属性文件的引用、全局异常的定义
<constant name="struts.custom.i18n.resources" value="message/message"/>
<global-results>
<result name="exception">/WEB-INF/vm/error.vm</result>
<result name="error">/WEB-INF/vm/error.vm</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="exception"/>
</global-exception-mappings>
3.定义velocity.properties
tools.view.servlet.layout.directory=/WEB-INF/vm/layout/
tools.view.servlet.error.template=/WEB-INF/vm/error.vm
tools.view.servlet.layout.default.template=default.vm
velocimacro.library=/WEB-INF/vm/macro.vm
input.encoding=gbk
output.encoding=gbk
runtime.log.logsystem.class=org.springframework.ui.velocity.CommonsLoggingLogSystem
4.编写error.vm
#* @vtlvariable name="exception" type="java.lang.Exception" *#
#* @vtlvariable name="result" type="com.jd.common.web.result.Result" *#
#if($exception)
#if($!exception.class.simpleName=="NoSuchMethodException")
$!response.setStatus(404)
404! 您请求的内容不存在
#else
出错了: $exception.message
#end
#elseif($result)
#if($result.resultCode)
#showSimpleError()
#else
系统错误
#end
#end
5.编写macro.vm(引用的showSimpleError() 方法)
#* @vtlvariable name="module" type="com.jd.common.web.url.JdUrl" *#
#* @vtlvariable name="page" type="com.jd.common.util.base.PaginatedArrayList" *#
#macro(showSimpleError)
#if(!$!actionErrors.empty)
#foreach($str in $actionErrors)
$!str
#break
#end
#end
#end
6.
a.action中抛出异常时,struts捕获异常,跳入error.vm中,显示相应内容
b.action返回error时:
String text = getText("shop.shopaction.error.editshopinfo");//店铺名称或域名已存在,修改失败!
addActionError(text);
最后在页面显示处调用宏方法
#showSimpleError()
至此,struts2整合velocity的异常处理流程就结束了,关键还是在于对于异常的定义,以及程序中异常处理的方法,每个团队都有自己的一套流程,在此就不再讨论!下面有个例子,感兴趣的可以下载试试,jar包主要就是struts2,和velocity的
分享到:
相关推荐
一、准备工作及实例 3 1.解压struts-2.1.6-all.zip 3 2.六个基本包 3 3.初识struts2配置文件 4 ... 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图来看: 60
2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 2.5.1 部署描述文件和Struts配置文件 27 2.5.2 动作...
2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 2.5.1 部署描述文件和Struts配置文件 27 2.5.2 动作类 28 ...
5.2.1struts2的工作流程 84 5.2.2struts2的简单应用 85 5.3struts2基础 87 5.3.1action详解 88 5.3.2结果与视图 91 5.3.3struts.xml的配置 94 5.4值栈与ognl表达式 100 5.5struts2的标签库 103 5.5.1控制...
16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接...
16.2协同使用spring和webwork2/struts2 16.3集成spring和tapestry 16.3.1集成spring和tapestry3 16.3.2集成spring和tapestry4 16.4协同使用spring和jsf 16.4.1解析jsf管理的属性 16.4.2解析springbean 16.4.3...
2. 深入 STRUTS架构..................................................................................37 2.1. 随便谈谈......................................................................................
16.2 协同使用Spring和WebWork 2/Struts 2 16.3 集成Spring和Tapestry 16.3.1 集成Spring和Tapestry 3 16.3.2 集成Spring和Tapestry 4 16.4 协同使用Spring和JSF 16.4.1 解析JSF管理的属性 16.4.2 解析Spring...
2. 深入STRUTS 架构..................................................................................37 2.1. 随便谈谈.......................................................................................
8.6 处理异常 8.7 小结 第9章 其他视图技术 9.1 使用Velocity模板 9.1.1 定义Velocity视图 9.1.2 配置Velocity引擎 9.1.3 解析Velocity视图 9.1.4 格式化日期和数字 9.1.5 暴露...
☆ Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持:ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap(ModelAndView) 13.11.3. 对视图的...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持:ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap(ModelAndView) 13.11.3. 对视图的...
• JDBC抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理, 大大减少了程序员的编码量. 再次利用JDBC时,你无需再写出另一个'终止'(finally) 模块. 并且面向JDBC的异常与Spring通用数据...
0.4版本已经项目中使用,未见异常.在此向大家开放源程序.以便与大家共同学习.希望能提出宝贵意见.