Struts2 异常处理

Struts2 异常处理机制

任何程序设计语言都是有异常处理机制,Struts2通过使用声明式异常机制处理异常。

在Struts2中主要有两种异常映射方式:

1:局部异常处理 (action)

2:全局异常处理 (package)

异常主要是通过Struts2的拦截器机制处理异常和异常处理机制来处理异常,

 

Struts2中大部分都是使用拦截器实现。interceptor


输出异常信息

使用Struts2的标签来输出异常信息:

﹤s:property value="exception.message"/﹥:输出异常对象本身。

﹤s:property value="exceptionStack"/﹥: 输出异常堆栈信息。

 

 

实例

  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
   struts2的声明式异常处理:
   
   <a href="/exep_holder.action">异常处理</a>
   
  </body>
</html>
   

 

struts.xml

	<package name="global-default" namespace="/" extends="struts-default">
		<!-- 全局异常处理 -->
		<global-results>
			<result name="error">/error.jsp</result>
		</global-results>
		<global-exception-mappings>
			<exception-mapping  result="error" exception="java.lang.ArithmeticException"></exception-mapping>
		</global-exception-mappings>
	</package>
	
	<package name="exeception_holder" namespace="/" extends="global-default">
		<action name="exep_holder" class="com.struts2.action.ExceptionHolderController" method="holder">
			<!--  局部异常处理  
			<result name="error">/error.jsp</result>
			<exception-mapping  result="error" exception="java.lang.ArithmeticException"></exception-mapping>
			 -->
		</action>
	</package>
 

  ExceptionHolderController.java

package com.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class ExceptionHolderController extends ActionSupport {
	
	public String holder() throws Exception {
		String str_error="";
		int i= 100/0;
		if(i>0) {
			str_error="错误显示";
		}
		else{
			str_error="正确显示";
		}
		this.addFieldError("error_message", str_error);
		return ERROR;
	}
}

 

error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'error.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	<s:property value="exception.message"/><br/>
 	<s:property value="exceptionStack"/><br/>
   	<s:property value="error_message"/><br/>
   	<s:debug></s:debug>
  </body>
</html>
 

 

你可能感兴趣的:(struts2)