Struts 2异常处理 Struts2主题和模板 Struts 2 注解 Struts 提供了一种更简单的方式来处理未捕获的异常,并将用户重定向到专用的错误页面。您可以轻松配置Struts以针对不同的例外设置不同的错误页面。 通过使用“异常”拦截器,Struts使异常处理变得容易。“异常”拦截器作为默认堆栈的一部分包含在内,因此您不必额外做任何事情来配置它。它现成可供您使用。 让我们看一个简单的Hello World示例,并在HelloWorldAction.java文件中进行一些修改。在这里,我们故意在我们的 HelloWorldAction 操作代码中引入了NullPointer异常。 package com.CodingDict.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 的内容如下 - <%@ page contentType = "text/html; charset = UTF-8" %> <%@ taglib prefix = "s" uri = "/struts-tags" %> <html> <head> <title>Hello World</title> </head> <body> Hello World, <s:property value = "name"/> </body> </html> 以下是 index.jsp 的内容 - <%@ page language = "java" contentType = "text/html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World From Struts2</h1> <form action = "hello"> <label for = "name">Please enter your name</label><br/> <input type = "text" name = "name"/> <input type = "submit" value = "Say Hello"/> </form> </body> </html> 你的 struts.xml 应该看起来像 - <?xml version = "1.0" Encoding = "UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name = "struts.devMode" value = "true" /> <package name = "helloworld" extends = "struts-default"> <action name = "hello" class = "com.CodingDict.struts2.HelloWorldAction" method = "execute"> <result name = "success">/HelloWorld.jsp</result> </action> </package> </struts> 现在右键单击项目名称,然后单击 导出 > WAR文件创建一个 WAR 文件。然后将这个WAR部署到Tomcat的webapps目录中。最后,启动Tomcat服务器并尝试访问URL http:// localhost:8080 / HelloWorldStruts2 / index.jsp 。这将产生以下屏幕 - 输入一个值“Struts2”并提交页面。你应该看到以下页面 - 如上例所示,默认的异常拦截器在处理异常方面做得很好。 现在让我们为我们的例外创建一个专用的错误页面。使用以下内容创建一个名为 Error.jsp 的文件- <%@ page language = "java" contentType = "text/html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> <%@ taglib prefix = "s" uri = "/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> </head> <body> This is my custom error page </body> </html> 现在,让我们配置Struts以在发生异常时使用此错误页面。让我们按照以下方式修改 struts.xml : <?xml version = "1.0" Encoding = "UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name = "struts.devMode" value = "true" /> <package name = "helloworld" extends = "struts-default"> <action name = "hello" class = "com.CodingDict.struts2.HelloWorldAction" method = "execute"> <exception-mapping exception = "java.lang.NullPointerException" result = "error" /> <result name = "success">/HelloWorld.jsp</result> <result name = "error">/Error.jsp</result> </action> </package> </struts> 如上例所示,现在我们已经配置Struts使用专用的Error.jsp来处理NullPointerException。如果您现在重新运行该程序,您现在将看到以下输出 除此之外,Struts2框架还带有一个“日志记录”拦截器来记录异常。通过启用记录器记录未捕获的异常,我们可以轻松查看堆栈跟踪并找出出错的地方 全局异常映射 我们已经看到我们如何处理特定于行动的异常。我们可以在全球设置一个适用于所有操作的异常。例如,要捕获相同的NullPointerException异常,我们可以在<package...>标记内添加 <global-exception-mappings ...>标记,并将<result ...>标记添加到<action..>内。标签在struts.xml文件中如下 <?xml version = "1.0" Encoding = "UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name = "struts.devMode" value = "true" /> <package name = "helloworld" extends = "struts-default"> <global-exception-mappings> <exception-mapping exception = "java.lang.NullPointerException" result = "error" /> </global-exception-mappings> <action name = "hello" class = "com.CodingDict.struts2.HelloWorldAction" method = "execute"> <result name = "success">/HelloWorld.jsp</result> <result name = "error">/Error.jsp</result> </action> </package> </struts> Struts2主题和模板 Struts 2 注解