`
noble510520
  • 浏览: 56163 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts的声明式异常处理

阅读更多

情景

使用Struts封装的下载文件的功能

当下载文件找不到的时候,struts获取的InputStream为null

这个时候,就会报500错误

java.lang.IllegalArgumentException : Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check the tag specified for this action.  
       org.apache.struts2.dispatcher.StreamResult.doExecute(StreamResult.java:237)  
      .......

解决方案

因为getInputSteam是struts自己完成的,所以我们不能再用try-catch了

这时候就要用到声明式异常处理了

类似于web.xml中的error-page配置

声明式异常处理

声明式异常处理要用到两个标签exception-mappingresult

先放上刚刚解决方案的代码

<package namespace="...">

<global-results>
<resultname="notFound" type="redirect">notFound</result>
</global-results>

<action name="download" class="xxxx">

<exception-mappingresult="notFound" exception="java.lang.IllegalArgumentException"></exception-mapping>

....

</package>

当抛出异常,Struts就会检查struts.xml里面有没有配置exception-mapping,检查exception-mapping的class跟异常是否一样,如果一样就会找到exception-mapping的result,先检查当前action内的result是否有匹配的(如果是<global-exeception-mapping>就直接检查<global-results>),如果匹配上了,就执行result的内容,像正常的action返回result那样

在这里,就是返回了notFound的result,然后找到global-results里有一个叫做notFound的result,然后执行重定向notFound,notFound是一个action

注意,如果result返回了一个action,那么就要指定type="redirect"(默认的是dispatcher)

因为处理声明式异常的filter在接受action的后面,如果type是转发请求的话,不会经过ActionFilter的处理,结果会报404

error-page

在web.xml中,可以针对某个error代码(404、403、500。。。),去自定义错误页面

demo

<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>

这时候,用户乱输入地址,就会被自动跳转到index.html

 

查看原文:http://www.wewill.top/2016/06/02/struts%E7%9A%84%E5%A3%B0%E6%98%8E%E5%BC%8F%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/

 

分享到:
评论

相关推荐

    Struts 声明式异常处理和个性化异常处理

    声明式异常处理是Struts中的一种特性,允许我们在struts.xml配置文件中定义全局的异常映射,而不是在每个Action类中单独处理。这样可以实现异常处理的统一和标准化,减少代码重复,提高可维护性。声明式异常处理通常...

    struts2之声明式异常捕捉

    在Struts2中,声明式异常处理是其强大的特性之一,它允许开发者通过配置文件来定义不同类型的异常如何被处理,而不是在每个动作类中进行硬编码。这样可以提高代码的可读性和可维护性,同时也方便了异常处理策略的...

    Struts2声明式异常示例代码

    Struts2是一个强大的Java web开发框架,它提供了一种声明式异常处理机制,极大地简化了在应用程序中处理异常的方式。本示例代码旨在演示如何在Struts2中定义和使用声明式异常,以及如何访问异常属性。 声明式异常...

    Struts2中异常处理机制分析

    本文将深入探讨Struts2的异常处理机制,特别是声明式异常捕捉和异常映射。 首先,Struts2的异常处理机制允许开发者在不干扰Action执行逻辑的情况下,集中处理可能出现的异常。默认情况下,由于Action的`execute()`...

    Struts1和Struts2区别

    - **Struts2**:支持注解和XML方式的校验,可以实现声明式校验,减少了代码量并提高了可维护性。 7. 国际化和本地化: - **Struts1**:需要手动配置资源文件,处理相对复杂。 - **Struts2**:提供了一套更直观的...

    Spring延迟加载和声明式事务处理最终解决方案(修正版)

    Spring框架的延迟加载和声明式事务处理是两个关键特性,它们极大地简化了企业级应用的开发。延迟加载允许在需要时才加载关联的对象,而声明式事务处理则使得事务管理更加自动化,无需在代码中显式处理。 在Spring与...

    struts2的新闻管理系统

    7. **表单验证**:Struts2提供了强大的表单验证功能,可以在Action类中定义验证规则,或者使用XML配置文件进行声明式验证。 通过这个新闻管理系统,新手可以学习到如何使用Struts2搭建一个完整的web应用,包括控制...

    Struts2主要Lib

    9. **异常处理**:Struts2提供了一套全面的异常处理机制,通过配置`&lt;global-exception-mappings&gt;`标签,可以定义全局的异常处理策略。 在"struts2lib"这个压缩包中,可能包含的文件有`struts2-core.jar`(核心库)...

    Struts2.2.3所有jar包

    - **配置文件**: Struts2的配置文件(struts.xml)用于定义Action、结果、拦截器栈等,可以实现声明式编程。 **2. Struts2的架构** Struts2的架构基于过滤器(Filter)和Servlet容器。`...

    struts-2.0.11.1-all

    8. **异常处理**:Struts 2提供了一种声明式和编程式的异常处理机制。通过全局异常映射,可以统一处理特定类型的异常,提高代码的可读性和可维护性。 9. **国际化与本地化**:Struts 2支持多语言环境,开发者可以...

    Struts增删改查

    Struts可以通过编程式或声明式的方式来管理事务,确保数据的一致性。 8. **错误与异常处理**: Struts提供了错误和异常处理机制,当出现错误或异常时,可以跳转到特定的错误页面,或者显示错误消息。 9. **Struts...

    struts2需要导入的包

    这些核心库的引入,使得开发者可以充分利用Struts2的特性,如声明式异常处理、国际化支持、插件扩展性、以及强大的表单验证和数据绑定等功能。在实际开发中,还需要根据具体需求引入其他的库,如数据库连接池、JSON...

    struts 基本原理和添加数据库

    6. **异常处理**:Struts提供了全局异常处理机制,可以统一处理程序运行时的异常,避免因错误处理不当导致的系统崩溃。 **Struts与数据库交互** 1. **DAO(Data Access Object)**:Struts通常结合DAO模式来处理...

    struts2框架jar包

    8. **异常处理**:Struts2提供了全局和局部的异常处理机制,可以自定义错误页面和异常处理逻辑,确保应用程序的健壮性。 9. **国际化支持**:通过资源文件,Struts2可以轻松实现多语言支持,为不同地区的用户提供...

    struts2必要jar包

    7. **异常处理**:Struts2提供了一套完整的异常处理机制,可以通过配置文件定义不同类型的异常对应的结果,使得错误页面显示更友好。 8. **国际化(Internationalization, i18n)**:Struts2支持多语言,通过资源包...

    struts2.2.3.1帮助文档

    9. **异常处理**:Struts2提供了一套完整的异常处理机制,可以捕获和处理应用程序中的异常,同时提供友好的错误页面。 10. **主题和皮肤**:可以自定义Struts2的外观和样式,通过不同的主题和皮肤来改变用户界面。 ...

    Struts2 教学课件

    常见的拦截器有Params(参数校验)、Validation(表单验证)、Exception(异常处理)等。 5. **结果类型(Result Types)**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面)、stream(用于下载文件)和...

Global site tag (gtag.js) - Google Analytics