Struts2 異常處理
Struts提供了一個更簡單的方式來處理未捕獲的異常,並將用戶重定向到一個專門的錯誤頁面。您可以輕鬆地Struts配置到不同的異常有不同的錯誤頁面。
Struts的異常處理所使用的「exception」攔截容易。「exception」攔截器作爲默認的棧的一部分,所以不必做任何額外的配置。它可爲準備使用的盒。讓我們看到了一個簡單的Hello World示例進行一些修改在HelloWorldAction.java文件。在這裏,我們特意推出了一個空指針異常在我們HelloWorldAction動作代碼。
package com.yiibai.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" %>
以下是內容index.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%>
Hello World From Struts2
<form action="hello"> <label for="name">Please enter your name<input type="text" name="name"/> <input type="submit" value="Say Hello"/>
struts.xml 應該像這樣:
現在右擊項目名稱,並單擊Export > WAR File創建一個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"%>
Let us now configure Struts to use this this error page in case of an exception. Let us modify thestruts.xml as follows:
在上面的例子所示,現在我們已經配置 Struts使用專用error.jsp的NullPointerException異常。如果現在重新運行該程序,現在看到下面的輸出:
此外,Struts2 框架自帶的「日誌」攔截記錄異常。使記錄器記錄的未捕獲異常,我們可以很容易地看堆棧跟蹤和工作出了什麼錯誤。
全局異常映射:
我們已經看到了我們可以處理特定的異常行動。我們可以設置一個例外,全局將適用於所有的行動。例如,要捕獲 NullPointerException異常,我們可以添加<global-exception-mappings...>標籤裏面<package...>標籤和其<result...>標籤應加在<行動.. >標記在struts.xml文件如下: