Struts2配置异常错误处理(十六)下

简介: Struts2配置异常错误处理(十六)

三.二 配置异常处理


三.二.一 需要用 ExceptionMappingInterceptor


配置异常捕捉捕捉,需要用 ExceptionMappingInterceptor


  <interceptor name="exception" 
class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>


已经配置在基本的拦截器栈里面了


 <!-- Basic stack -->
<interceptor-stack name="basicStack">
    <interceptor-ref name="exception"/>
    <interceptor-ref name="servletConfig"/>
    <interceptor-ref name="prepare"/>
    <interceptor-ref name="checkbox"/>
    <interceptor-ref name="datetime"/>
    <interceptor-ref name="multiselect"/>
    <interceptor-ref name="actionMappingParams"/>
    <interceptor-ref name="params"/>
    <interceptor-ref name="conversionError"/>
    <interceptor-ref name="deprecation"/>
</interceptor-stack>


不需要单独配置拦截器了


三.二.二 配置节点 <exception-mapping >


配置时,需要用到 <exception-mapping> </exception-mapping> 这个节点。


里面有两个属性,一个是 exception, 指明异常类型,是全限定名称,一个是 result, 返回视图。 其中这个result 返回视图,可以是全局result,也可以是局部result.


可以配置全局的异常处理,作为 <global-exception-mapping > 放在package 元素下,


也可以配置局部的异常处理,放在 action 元素下。


三.二.三 创建Action


修改方法 execException, 通过 throws 向外抛出


public String execException() throws Exception{
    if("两个蝴蝶飞".equals(comment)){
      throw new MyException("不能输入这个名字");
    }
    try{
      int c=(Integer.parseInt(comment))/0;
    }catch(NumberFormatException e){  
      //数字转换异常
      throw new NumberFormatException();
    }catch(NullPointerException e){ 
      //空指针异常
      throw new NullPointerException();
    }catch(ArithmeticException e){
      //算术异常
      throw new ArithmeticException();
    }catch(Exception e){
      throw new Exception();
    }
    return "exceptionshow";
  }


三.二.四 配置 struts.xml 文件


<package name="exception" extends="struts-default" namespace="/">
    <!-- 配置全局的result -->
    <global-results>
      <result name="number">/WEB-INF/exception/number.jsp</result>
      <result name="arithmetic">/WEB-INF/exception/arithmetic.jsp</result>
      <result name="npe">/WEB-INF/exception/npe.jsp</result>
      <result name="exception">/WEB-INF/exception/exception.jsp</result>
    </global-results>
    <!-- 配置全局的异常映射 -->
    <global-exception-mappings>
      <exception-mapping result="number" exception="java.lang.NumberFormatException"></exception-mapping>
      <exception-mapping result="npe" exception="java.lang.NullPointerException"></exception-mapping>
      <exception-mapping result="arithmetic" exception="java.lang.ArithmeticException"></exception-mapping>
      <exception-mapping result="exception" exception="java.lang.Exception"></exception-mapping>
    </global-exception-mappings>
    <action name="Exception_*" class="com.yjl.web.action.ExceptionAction" method="{1}">
      <result name="toMyException">/WEB-INF/content/myexception.jsp</result>
      <result name="exceptionshow">/WEB-INF/content/exceptionshow.jsp</result>
      <!-- 配置异常跳转页面 -->
      <result name="number">/WEB-INF/exception/number2.jsp</result>
      <result name="myException">/WEB-INF/exception/myexception.jsp</result>
      <!-- 配置局部的异常映射 -->
      <exception-mapping result="number" exception="java.lang.NumberFormatException"></exception-mapping>
      <exception-mapping result="myException" exception="com.yjl.exception.MyException"></exception-mapping>
    </action>
</package>


三.二.五 编写 jsp 页面


20200420102810423.png


三.二.五.一 编写 /content/number.jsp


<body>
全局number
</body>


三.二.五.二 编写 /content/arithmetic.jsp


<body>
算术异常
</body>


三.二.五.三 编写 /content/npe.jsp


<body>
空指向异常界面
</body>


三.二.五.四 编写 /content/exception.jsp


<body>
其他非常见性异常界面
</body>


三.二.五.五 编写 /content/number2.jsp


<body>
局部number2
</body>


三.二.五.六 编写 /content/myexception.jsp


<body>
自定义异常
</body>


三.二.六 重启服务器,测试运行


输入路径: http://localhost:8080/Struts_Exception/Exception_toException


当输入两个蝴蝶飞时, 会显示自定义异常


2020042010282893.png


2020042010283376.png


当输入非数字,如字母 abc时, 全局和局部都 配置了,以局部为准


20200420102846626.png


20200420102851343.png


当输入正常数字,如 207 时


20200420102856263.png


20200420102900159.png


异常信息处理正确,跳转正确


三.二.七 显示错误信息


如将自定义异常信息给改变了: 重新编写 /content/myexception.jsp 页面


<body>
<!-- 输出异常信息 -->
<s:property value="exception.message"/> <br/>
<!-- 输出信息栈 -->
<s:property value="exceptionStack"/>
</body>


重启服务器,重新输入 两个蝴蝶飞, 就会显示错误信息了


20200420102905389.png


本章节代码链接为:


链接:https://pan.baidu.com/s/1uWATk85QCp7dT5kieG-ksQ 
提取码:3hmb 


谢谢您的观看!!!

相关文章
|
2月前
|
JSON 前端开发 Java
【十八】springboot实现自定义全局异常处理
【十八】springboot实现自定义全局异常处理
37 1
【十八】springboot实现自定义全局异常处理
|
前端开发 Java 应用服务中间件
Struts2配置异常错误处理(十六)上
Struts2配置异常错误处理(十六)
296 0
Struts2配置异常错误处理(十六)上
|
前端开发 Java
Struts2实现类型转换器(十五)下
Struts2实现类型转换器(十五)
Struts2实现类型转换器(十五)下
|
前端开发 API
Struts2实现类型转换器(十五)上
Struts2实现类型转换器(十五)
200 0
Struts2实现类型转换器(十五)上
|
前端开发 Java 数据库连接
SpringMVC的数据验证和JSR 303国际化显示(十一)中
SpringMVC的数据验证和JSR 303国际化显示(十一)中
182 0
SpringMVC的数据验证和JSR 303国际化显示(十一)中
|
前端开发 Java 数据库连接
SpringMVC的数据验证和JSR 303国际化显示(十一)下
SpringMVC的数据验证和JSR 303国际化显示(十一)下
284 0
SpringMVC的数据验证和JSR 303国际化显示(十一)下
|
前端开发 JavaScript Java
SpringMVC的数据验证和JSR 303国际化显示(十一)上
SpringMVC的数据验证和JSR 303国际化显示(十一)上
192 0
SpringMVC的数据验证和JSR 303国际化显示(十一)上
|
Java
springboot全局异常处理中文乱码
springboot全局异常处理中文乱码
590 0
|
JSON 前端开发 Java
springboot 全局异常拦截器,友好异常提示
springboot 全局异常拦截器,友好异常提示
388 0
springboot 全局异常拦截器,友好异常提示
|
网络安全
SSH框架整合遇到的错误——Struts2.5 action跳转出现错误
错误信息如图: 刚开始以为是struts2的配置问题,就换了一下action的值,改成了login1之后才发现错误。 表单提交的跳转信息: Struts2.xml中的配置 UserAction.java中的配置   action的跳转方法不能有参数,手误写了参数,导致action找不到login1方法。
1362 0