📜  Struts 2异常处理-异常拦截器

📅  最后修改于: 2021-01-11 06:21:55             🧑  作者: Mango

Struts 2异常处理-异常拦截器

在我们的Web应用程序中,随时可能会发生异常。

为了克服这个问题,Struts 2提供了一种全局异常处理机制,可以在其中向用户显示全局结果。

Struts 2自动记录未捕获的异常,并将用户重定向到错误处理程序页面。

了解异常拦截器的内部工作

如果发生异常,则将其包装在ExceptionHolder中并推入valuestack中,以便我们可以轻松地从结果中访问异常对象。

建议将此拦截器设置为第一个拦截器,以便它可以处理所有异常,无论该异常是否被其他拦截器抛出。

异常拦截器的参数

为异常拦截器定义了3个参数。所有都是可选的。

Parameter Description
logEnabled specifies log should be enabled or not. You can pass true or false.
logLevel specifies the log level. It may be trace, debug, info, warn, error, fatal. Default log level is debug.
logCategory specifies the log category eg. com.mycompany.app. The default is com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor..

Struts 2中的异常处理示例

对于异常处理,我们在struts.xml文件中指定global-result和global-exception-mappings。







globalresult.jsp







welcome.jsp
error.jsp



    

程序包的global-results子元素指定此程序包的global-result。

global-result的result子元素指定将作为视图呈现给用户的结果页面。

程序包的global-exception-mappings子元素为该程序包的所有操作指定异常映射。

global-exception-mapping的exception-mapping子元素为给定的异常类型映射给定的结果。在此示例中,我们使用的Exception是许多异常类(例如IOException,ArithmeticException等)的父类。这意味着如果发生任何异常,将调用指定的结果。

注意,因为我们在global-exception-mappings中使用global result,所以必须在global-exception-mappings之前指定global-results。

显示异常

我们可以通过打印exception或exceptionStack在浏览器上显示异常。

异常对象显示异常名称,而exceptionStack显示异常详细信息。

Exception Name:

Exception Details:

异常处理的完整示例

完成此示例所需的其他资源如下:

  • 输入页面(index.jsp)
  • 动作类(Login.java)
  • 查看组件(globalresult.jsp,welcome.jsp和error.jsp)

1)创建index.jsp作为输入

该jsp页面使用struts UI标记创建表单。它从用户那里接收名称和密码。

<%@ taglib uri="/struts-tags" prefix="s" %>






2)创建动作类

该操作类包含两个字段名称和密码,以及一个执行方法。在这里,如果密码匹配strut,我们将抛出异常自我。

这是一个虚拟的示例,如果您在execute方法中注释提到的行,则不会发生异常。

package com;
public class Login {
private String name,password;
//getters and setters

public String execute(){
    if(password.equals("struts")){
        int a=12/0;//If you comment this, exception will not occur
        return "success";
    }else
        return "error";
}
}

3)创建视图组件

有三个视图组件globalresult.jsp显示异常消息,welcome.jsp显示带有用户名的欢迎消息,而error.jsp显示错误消息。

<%@ taglib uri="/struts-tags" prefix="s" %>

Sorry an exception occured!

Exception Name:

Exception Details:

<%@ taglib uri="/struts-tags" prefix="s" %>
Welcome, 
Sorry username or password error!