一般的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的
分享到:
相关推荐
8. **异常处理**:当模板中的VTL语法错误或数据问题导致渲染失败时,Struts2提供了异常处理机制,可以通过配置决定如何显示错误信息。 通过以上知识点,开发者可以有效地利用Struts2和Velocity进行web应用的开发,...
8. **异常处理**:Struts2提供了全局异常处理机制,当Action执行发生异常时,可以定向到特定的错误页面。在Velocity模板中,也可以使用条件语句捕获并处理异常情况。 9. **国际化与本地化**:Struts2和Velocity都...
Struts2的核心功能包括动作调度、结果处理、异常处理和国际化支持。它的核心组件包括Action类、配置文件(struts.xml)、拦截器(Interceptor)和结果类型(Result)。Action类是业务逻辑的载体,用户请求会被映射到...
总的来说,Struts2的异常处理机制提供了灵活且强大的方式来管理和处理应用程序中的异常。开发者可以根据项目的具体需求,定制化异常处理流程,提升应用的健壮性和用户体验。通过合理配置struts.xml文件,结合自定义...
Struts2的异常处理更为优雅,它可以通过拦截器来捕获并处理异常,同时提供全局的异常处理策略,而在Struts1中,异常处理往往需要在每个Action中单独处理。 **7. 插件支持:** Struts2拥有丰富的插件系统,如JSON...
Struts2的核心是拦截器,这些拦截器可以实现如日志、验证、异常处理等通用功能。此外,Struts2还支持FreeMarker、JSP、 Velocity等多种视图技术,使得视图层的构建更加便捷。 接下来是Spring框架。Spring是一个全...
在ESHop中,Struts2将处理用户请求,控制应用程序流程,并与其它组件如Hibernate进行数据交互。 Hibernate是一个对象关系映射(ORM)框架,它允许开发者用面向对象的方式操作数据库,而无需关心底层SQL语句。在...
9. **异常处理**:Struts2提供了全局和局部的异常处理机制,可以统一处理应用中的异常情况,提高代码的可维护性和用户体验。 10. **国际化(i18n)**:Struts2支持多语言环境,通过资源包(Properties文件)来实现...
8. **异常处理**: Struts2提供了一套完善的异常处理机制,能够捕获并优雅地处理应用程序中的异常,提供友好的错误提示页面。 在"StrutsFramework"这个压缩包中,可能包含了以下内容:基础的Struts2项目结构,例如...
9. **异常处理**:Struts2提供了一套全面的异常处理机制,可以在全局范围内捕获和处理异常,避免因未捕获异常导致的应用崩溃。 10. **测试支持**:Struts2提供了JUnit集成,方便开发者进行单元测试和集成测试。 总...
Struts2提供了一种优雅的方式来处理应用程序中的异常。通过全局异常映射,开发者可以指定不同类型的异常对应不同的结果,使得错误页面的显示更加统一和规范。 九、国际化的支持 Struts2内置了对多语言的支持,可以...
- **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...
9. **异常处理**:Struts2提供了全局的异常处理机制,可以统一处理程序运行中的异常,避免了在每个Action中都进行异常捕获的繁琐工作。 为了正确使用这个"struts2的lib包",你需要将其解压并将其中的JAR文件添加到...
- 拦截器栈是Struts2处理请求的关键,通过组合不同的拦截器,可以实现复杂的功能,如登录检查、异常处理、性能监控等。 - 自定义拦截器可以通过继承`com.opensymphony.xwork2.interceptor.Interceptor`接口实现。 ...
9. **异常处理**:Struts2提供了一套完整的异常处理机制,允许开发者定义全局或Action级别的异常映射,以优雅地处理程序中的错误。 10. **国际化与本地化**:Struts2支持多语言环境,开发者可以通过资源包...
9. **异常处理**:Struts2允许全局或局部地定义异常处理策略,通过`<exception-mapping>`标签,可以指定不同类型的异常如何被处理。 10. **插件系统**:Struts2拥有丰富的插件库,如Ajax支持、JSON处理、Spring集成...
书中还会讲解Struts 2的异常处理机制,如何通过配置全局异常映射来捕获和处理程序运行时可能出现的异常,保证应用的健壮性。 8. **测试支持** Struts 2提供了JUnit集成,使得单元测试和集成测试变得更加便捷,有...
Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...
Struts1和Struts2是两个非常著名的Java Web框架,它们都由Apache软件基金会开发,用于构建MVC(Model-View-Controller)架构的应用程序。虽然它们在目标上相似,但在设计模式、功能特性和使用体验上存在显著差异。...
首先,Struts2的架构基于WebWork的核心,这意味着它采用了WebWork的拦截器(Interceptor)机制,这是Struts2处理请求和响应的关键部分。拦截器在Action执行前后执行,允许开发者添加额外的功能,如验证、日志记录或...