`
gigi_112
  • 浏览: 113080 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 velocity 异常处理流程

阅读更多

一般的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的

分享到:
评论

相关推荐

    Struts2入门教程(全新完整版)

    一、准备工作及实例 3 1.解压struts-2.1.6-all.zip 3 2.六个基本包 3 3.初识struts2配置文件 4 ... 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图来看: 60

    深入浅出Struts2(附源码)

    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 动作...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    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 ...

    Java Web程序设计教程

    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控制...

    Spring in Action(第二版 中文高清版).part2

    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...

    spring4.3.2参考文档(英文)

    Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接...

    Spring in Action(第2版)中文版

    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...

    Struts in Action中文版

    2. 深入 STRUTS架构..................................................................................37 2.1. 随便谈谈......................................................................................

    Spring in Action(第二版 中文高清版).part1

    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...

    struts in Action

    2. 深入STRUTS 架构..................................................................................37 2.1. 随便谈谈.......................................................................................

    spring in action英文版

     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面试题

    ☆ Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭...

    Spring中文帮助文档

    13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持:ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap(ModelAndView) 13.11.3. 对视图的...

    Spring API

    13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持:ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap(ModelAndView) 13.11.3. 对视图的...

    Spring Framework 5.3.6

    • JDBC抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理, 大大减少了程序员的编码量. 再次利用JDBC时,你无需再写出另一个'终止'(finally) 模块. 并且面向JDBC的异常与Spring通用数据...

    LMVC 0.4源程序及0.4可用包

    0.4版本已经项目中使用,未见异常.在此向大家开放源程序.以便与大家共同学习.希望能提出宝贵意见.

Global site tag (gtag.js) - Google Analytics