Struts2异常处理的简单示例

1. 用于测试的Action类:

package com.huey.action;

import com.huey.exception.MyException;

/**
 * 
 * @version 2013-08-18
 * @author huey2672
 *
 */
public class HelloAction {
	
	private String name;
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
		
	public String hello() throws Exception {
		if (name.equals("")) {
			throw new MyException("Empty String");
		}
		name = name.toUpperCase();
		System.out.println("Hello, " + name + "~");
		return "success";
	}

}

2. Struts2的异常处理机制是在struts.xml文件中配置<exception-mapping .../>元素完成的,配置该元素需指定如下两个属性:

result:指定Action出现异常时,系统返回的逻辑视图;

exception:exception指定了该异常映射所设置的异常类型。

根据<exception-mapping .../>元素出现的位置不同,异常映射可分为局部与全局异常映射:

局部异常映射:将<exception-mapping .../>元素作为<action .../>元素的子元素配置;

全局异常映射:将<exception-mapping .../>元素作为<global-exception-mappings>元素的子元素配置。

全局异常映射对所有的Action都有效,但局部异常映射只对该异常映射所在的Action内有效。如果局部异常映射和全局异常映射配置了同一个异常类型,在该Action内局部异常映射会覆盖全局异常映射。

在struts.xml文件中配置Struts2的异常处理机制:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="hello" extends="struts-default">
		<!-- 定义全局结果映射 -->
		<global-results>
			<result name="error">error.jsp</result>
		</global-results>
		<!-- 定义全局异常映射 -->
		<global-exception-mappings>
			<!-- result指定Action出现异常时,系统返回的逻辑视图
				 exception指定了该异常映射所设置的异常类型 -->
			<!-- 当出现空指针异常时,返回逻辑视图error -->
			<exception-mapping result="error" exception="java.lang.NullPointerException"/>
		</global-exception-mappings>
		<action name="helloAction" class="com.huey.action.HelloAction" 
		method="hello">
			<!-- 定义局部异常映射 -->
			<!-- 当出现自定义的异常时,返回逻辑视图error -->
			<exception-mapping result="error" exception="com.huey.exception.MyException"/>
			<result name="success">hello.jsp</result>
		</action>
	</package>
</struts>

3. 编写示例中的视图资源,index.jsp、hello.jsp和error.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Index</title>
</head>
<body>
	<form action="helloAction" method="post">
		<input type="text" name="name" />
		  
		<input type="submit" value="Hello"/>
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello</title>
</head>
<body>
	Hello, <s:property value="name"/>~
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Error</title>
</head>
<body>
	<%-- 输出异常信息 --%>
	Exception: <s:property value="exception"/>
</body>
</html>

4. 测试:

在index.jsp页面中,输入框不填写任何字符串,直接提交表单,验证java.lang.NullPointerException的异常映射。

在浏览器中键入http://localhost:8080/ExceptionDemo/helloAction(ExceptionDemo是Web应用名),验证com.huey.exception.MyException的异常映射。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值