Struts2拦截器实现异常处理
- Java代码
- //action层执行数据添加操作
- public String save(){
- try{
- //调用service的save方法
- service.save(obj);
- }catch(Exception e){
- throw new RuntimeException("添加数据时发生错误!",e);
- }
- return "success";
- }
复制代码
- <interceptors>
- <!-- 声明拦截器 -->
- <interceptor name="errorInterceptor" class="cn.itcast.elec.util.ErrorInterceptor" />
- <!-- 配置拦截器栈 -->
- <interceptor-stack name="myErrorInterceptor">
- <interceptor-ref name="defaultStack" />
- <interceptor-ref name="errorInterceptor" />
- </interceptor-stack>
- </interceptors>
- <!-- 覆盖底层的拦截器栈 对包中的所有action都有效 -->
- <default-interceptor-ref name="myErrorInterceptor"/>
- <global-results>
- <result name="errorMsg">/errorMsg.jsp</result>
- </global-results>
- <global-exception-mappings>
- <exception-mapping result="errorMsg" exception="java.lang.Exception"></exception-mapping>
- </global-exception-mappings>
复制代码
然后在异常拦截器对异常进行处理,看下面的代码:
拦截器的Java代码
- public class ErrorInterceptor implements Interceptor {
- public void init() {
- }
- public String intercept(ActionInvocation actioninvocation) {
- String result = null; // Action的返回值
- try {
- // 运行被拦截的Action,期间如果发生异常会被catch住
- result = actioninvocation.invoke();
- return result;
- } catch (Exception e) {
- /**
- * 处理异常
- */
- String errorMsg = "出现错误信息,请查看日志!";
- //通过instanceof判断到底是什么异常类型
- if (e instanceof RuntimeException) {
- //未知的运行时异常
- RuntimeException re = (RuntimeException) e;
- //re.printStackTrace();
- errorMsg = re.getMessage().trim();
- }
- //把自定义错误信息
- HttpServletRequest request = (HttpServletRequest) actioninvocation
- .getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
- /**
- * 发送错误消息到页面
- */
- request.setAttribute("errorMsg", errorMsg);
- /**
- * log4j记录日志
- */
- Log log = LogFactory
- .getLog(actioninvocation.getAction().getClass());
- log.error(errorMsg, e);
- return "errorMsg";
- }// ...end of catch
- }
- public void destroy() {
- }
- }
复制代码
最后在errorMsg.JSP页面显示具体的错误消息即可:
- <body>
- <s:if test="%{#request.errorMsg==null}">
- <p>对不起,系统发生了未知的错误,请查看日志</p>
- </s:if>
- <s:else>
- <p>${requestScope.errorMsg}</p>
- </s:else>
- </body>
复制代码
Struts2配置文件代码
- <global-results>
- <result name="errorMsg">/errorMsg.jsp</result>
- </global-results>
- <global-exception-mappings>
- <exception-mapping result="errorMsg" exception="java.lang.Exception"></exception-mapping>
- </global-exception-mappings>
复制代码
上面这是一个很简单的异常拦截器,大家可以使用自定义异常,那样会更灵活一些。
Struts2拦截器实现异常处理相关推荐
- Struts2拦截器实现异常处理机制
http://bbs.itcast.cn/thread-10364-1-1.html Struts2拦截器实现异常处理机制 在j2ee项目中,系统内部难免会出现一些异常,如果把异常放任不管直接打印 ...
- Struts2 拦截器(Interceptor )原理和配置
Struts2 拦截器 拦截器在概念上与servlet过滤器或JDK代理类相同.拦截器允许横切功能,把action以及框架分开实现.你可以使用拦截器实现以下操作: 在调用action之前提供预处理逻辑 ...
- Struts2拦截器的使用
如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了str ...
- SpringMVC拦截器与异常处理
SpringMVC拦截器与异常处理 参考文章: (1)SpringMVC拦截器与异常处理 (2)https://www.cnblogs.com/luckgood/p/9724057.html 备忘一下 ...
- SpringMVC——自定义拦截器、异常处理以及父子容器配置
SpringMVC--自定义拦截器.异常处理以及父子容器配置 参考文章: (1)SpringMVC--自定义拦截器.异常处理以及父子容器配置 (2)https://www.cnblogs.com/so ...
- Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
参考:http://blog.csdn.net/coolcoffee168/article/details/7963251 在配置struts2 拦截器属性excludeMethods.include ...
- Struts2 拦截器 及如何获得 servlet 请求对象 以及Struts 基本配置 Session 超时设置...
在拦截器中可以三种实现 一:继承 AbstractInterceptor 类 二:继承 MethodFilterInterceptor类 三:实现 Interceptor 接口 在实现Intercep ...
- 基于struts2拦截器实现用户操作日志记录
2019独角兽企业重金招聘Python工程师标准>>> 这里基于struts2的拦截器来实现. 使用struts2拦截器拦截所有或者指定的请求,对用户操作过程中的:操作用户,操作时间 ...
- 从struts2拦截器到自定义拦截器
http://www.cnblogs.com/withyou/p/3170440.html 拦截器可谓struts2的核心了,最基本的bean的注入就是通过默认的拦截器实现的,一般在struts2.x ...
- SpringMVC自定义拦截器与异常处理(自定义异常)
SpringMVC自定义拦截器与异常处理 拦截器概念 拦截器代码演示 创建maven工程 pom.xml <?xml version="1.0" encoding=" ...
最新文章
- MySQL中REGEXP正则查询同一个字段模糊搜索
- 《Elasticsearch 权威指南》阅读笔记
- go预防CSRF攻击
- python——logging模块
- 事件捕获(capture)和冒泡事件(Bubble)
- 均值文件转matlab,LMD局域均值分解的matlab程序及示例代码
- C++编程语言中整型转换为字符串类型的方法
- 汇编语言编写Hello World
- Ubuntu 安装微信,网页版无法登陆
- [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode 解决方法
- 计算机专硕日语考研学校排名,日语考研院校排名(日语专硕学校排名)
- 小米node2红外_小米监控open-falcon-0.2安装部署详细配置
- 228句最常用英文口语短句(转)
- 墙面有几种装修方法_墙面装修有哪几种常见方法?
- java什么时候触发gc_什么时候触发 GC
- Git冲突:Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.
- -webkit-tap-highlight-color
- Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
- c位边上还有什么位_章泽天聚会站边位,被称太委屈,看清C位的万宝宝后就明白了...
- XXL-JOB配置迁移到Nacos Could not resolve placeholder ‘xxl.job.accessToken’ in value “${xxl.job.accessToke
热门文章
- AHCI驱动问题导致Windows 10卡死的解决办法
- 【广东大学生网络攻防大赛-WriteUp(非官方)】Crypto | crypto-xor2
- 静态HTML网页设计作品 DIV布局 HTML5+CSS大作业——个人网页(6页) 网页制作期末大作业成品
- win7 win8 64位系统上装CAD2008挂燕秀外挂的办法
- 弘辽科技:掌握淘宝直通车的工作原理很有必要!其核心是什么?
- R语言将两个矩阵数据进行相乘
- vue可拖拽悬浮按钮组件
- 2023年东南大学机械工程考研考情与难度、参考书上岸前辈备考经验
- 搜索引擎为什么不收录原创文章
- 如何隐藏电脑下方工具栏个别图标_小编教你电脑如何隐藏任务栏图标