📜  Struts 2-异常处理

📅  最后修改于: 2020-11-11 05:03:54             🧑  作者: Mango


Struts提供了一种处理未捕获的异常并将用户重定向到专用错误页面的简便方法。您可以轻松地将Struts配置为针对不同的异常具有不同的错误页面。

Struts通过使用“异常”拦截器使异常处理变得容易。 “ exception”拦截器是默认堆栈的一部分,因此您无需执行任何其他操作即可配置它。它是开箱即用的,可供您使用。

让我们看一个简单的Hello World示例,其中对HelloWorldAction.java文件进行了一些修改。在这里,我们在HelloWorldAction操作代码中故意引入了NullPointer异常。

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class HelloWorldAction extends ActionSupport{
   private String name;

   public String execute(){
      String x = null;
      x = x.substring(0);
      return SUCCESS;
   }
   
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

让我们保持HelloWorld.jsp的内容如下:

Hello World
   
   
   
      Hello World, 
   

以下是index.jsp的内容-

Hello World
   
   
   
      

Hello World From Struts2


您的struts.xml应该看起来像-




   
   
     
      
         /HelloWorld.jsp
      

   

现在,右键单击项目名称,然后单击导出> WAR文件以创建War文件。然后,将此WAR部署在Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕-

你好世界输入

输入值“ Struts2”并提交页面。您应该看到以下页面-

异常输出

如上面的示例所示,默认的异常拦截器在处理异常方面做得很好。

现在让我们为异常创建一个专用的错误页面。创建一个名为Error.jsp的文件,其内容如下:


   
   
   
      This is my custom error page
   

现在让我们将Struts配置为在出现异常的情况下使用此错误页面。让我们如下修改struts.xml-




   
   
   
      
         
         /HelloWorld.jsp
         /Error.jsp
      

   

如上面的示例所示,现在我们已将Struts配置为对NullPointerException使用专用的Error.jsp。如果您现在重新运行程序,现在将看到以下输出-

你好世界输出

除此之外,Struts2框架还带有一个“日志记录”拦截器来记录异常。通过使记录器能够记录未捕获的异常,我们可以轻松查看堆栈跟踪并找出出了什么问题

全局异常映射

我们已经看到了如何处理特定于动作的异常。我们可以全局设置一个例外,该例外将应用于所有操作。例如,要捕获相同的NullPointerException异常,我们可以在标记内添加 …>标记,并且其标记应添加在标记在struts.xml文件中,如下所示-




   
   
      
         
      

      
         /HelloWorld.jsp
         /Error.jsp