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-mapping和result
先放上刚刚解决方案的代码
<package namespace="...">
<global-results>
<result name="notFound" type="redirect">notFound</result>
</global-results>
<action name="download" class="xxxx">
<exception-mapping result="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的声明式异常处理的更多相关文章
- Struts2学习---拦截器+struts的工作流程+struts声明式异常处理
这一节我们来看看拦截器,在讲这个之前我是准备先看struts的声明式异常处理的,但是我发现这个声明式异常处理就是由拦截器实现的,所以就将拦截器的内容放到了前面. 这一节的内容是这样的: 拦截器的介绍 ...
- Struts2学习第八课 声明式异常处理
异常处理:exception-mapping元素 exception-mapping元素:配置当前的action的声明式异常处理 exception-mapping元素有两个属性: --excepti ...
- 6.声明式异常处理、I18N
声明式异常处理 1.在Action 中进行异常映射 <exception-mapping result="error" exception="java.sql.SQ ...
- Struts2的声明式异常处理
在struts2应用程序中你还在使用try catch语句来捕获异常么?如果是这样的,那你OUT啦!struts2支持声明式异常处理,可以再Action中直接抛出异常而交给struts2来 处理,当然 ...
- 学习Struts框架系列(三):声明式异常处理
在Struts1.X的版本中加入了对异常的处理Exception Handler,有了它我们可以不使用try/catch捕获异常,一旦出现了我们已经定义的异常,那么就会转到相应的页面,并且携带异常信息 ...
- Strut2_声明式异常处理
Service 往外抛异常 public List<Category> list() throws SQLException{ Connection conn = DB.createCon ...
- Struts2声明式异常处理
通过配置.xml文件的方式处理异常信息: 注意:配置.xml文件的同时还要抛出异常 标签:<exception-mapping></exception-mapping>和< ...
- [原创]java WEB学习笔记60:Struts2学习之路--Actioin-声明式异常处理
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts(十二):异常处理:exception-mapping元素
配置当前action的声明异常处理 1.exception-mapping元素中有2个属性 exception:指定需要捕获的异常类型 result:指定一个响应结果,该结果将在捕获到异常时被执行.即 ...
随机推荐
- How To Install Proxmox Nested on VMware ESXi (Full Support OpenVZ & KVM)
https://imanudin.net/2015/03/04/how-to-install-proxmox-nested-on-vmware-esxi-full-support-openvz-kvm ...
- 监控Linux系统性能的工具--nmon(一)
今天看到一资料上写着,nmon可以对linux系统进行性能监控,随手在自己的阿里云上敲了一下这个命令,提示'command not find' 一脸懵~,然后探索了一下如何安装这个工具以及如何更好的查 ...
- spring mvc Error instantiating class ** with invalid types () or values (). Cause: java.lang.NoSuchMethodException:
一般引起这种问题的原因是 bean和mapper里面的字段未对应上,或者 bean里面没有默认的构造函数引起的.我今天是后面的一个,自己写了带参数的构造函数引起的这个问题...
- bootstrap与Select2使用小结
这个select2组件的功能确实很强大,可以将图片放入到select里面随着文字一起显示. 组件的下载地址以及API说明地址: 1.Select2使用示例地址:https://select2.gith ...
- SQL中Group By的使用
1.概述 2.原始表 3.简单Group By 4.Group By 和 Order By 5.Group By中Select指定的字段限制 6.Group By All 7.Group By与聚合函 ...
- Jetty Maven Plugin配置
官方文档:http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html#maven-config-https 1 ...
- UGUI 之Scroll Rect 坑
由于UGUI没有提供类似Scroll View类似的控件,但提供了ScrollRect主机.可以自定义Scroll View 同时提供了Mask组件来遮罩超出Scroll Rect对象的范围, 之所以 ...
- Autocomplete 自动补全(Webform实战篇)
开篇语 因为项目中需要用到一个自动补全的功能,功能描述: 需求一:新增收件人的时候,自动下拉显示出数据库中所有的收件人信息(显示的信息包括:姓名-收件地址-联系方式) 需求二:选中一个值得时候,分别赋 ...
- CSS list-style属性控制ul标签样式
试一试 <style type="text/css" media="all"> ul { list-style-type: disc; } ul#c ...
- Lua 学习笔记(八)错误(error)
Lua所遇到的任何未预期条件都会引发一个错误.因此在发生错误时不能简单的崩溃或着退出,而是结束当前程序块并返回应用程序.当错误引发时进行恰当的处理是最合适的,然而这个阶段伴随着错误的捕获.错误的处理. ...