struts2异常处理

Struts2中的异常处理有两种形式:一种是局部异常处理,一种是全局异常处理

在struts.xml中的package下有两个这样的标签:<global-exception-mappings>和<global-results>,前者指定异常处理的类,后者是异常处理结果,通常指定一个显示异常信息的页面。

而在action中,也有类似全局的异常处理,<exception-mapping>和<result>。

全局的异常处理可以被该包下所有的action使用,而局部异常处理只能被一个action使用。

若在某一个action中抛出了异常,那么struts会现先在本action查找是否有处理该异常的局部异常处理类,即<exception-mapping>,若没有,才会去找是否有全局的异常处理类,即<global-exception-mappings>

异常处理的结果的执行流程也是如此,先局部后全局,即使异常处理类是全局的,struts也会先去局部找是否有对应的异常处理结果,若没有,再去找全局的。

示例:以登录的例子,演示一下,异常处理的使用


登录页面,包含两个信息:姓名和密码

Login.jsp:

<form action="/struts2/test/login3" method="post">
    	姓名:<input type="text" name="username"/><br/>
    	密码:<input type="password" name="password"/><br/>
    	<input type="submit" value="提交"/>
</form>


然后再建立异常处理类,这里对姓名和密码,分别建立两个异常处理类:

UsernameException类

package com.suo.exception;

public class UsernameException extends Exception {
	private String message;
	
	public UsernameException(String message)
	{
		super(message);
		this.message=message;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
}

PasswordException类:

package com.suo.exception;

public class PasswordException extends Exception
{
	private String message;
	
	public PasswordException(String message)
	{
		super(message);
		this.message=message;
	}


	public String getMessage() {
		return message;
	}


	public void setMessage(String message) {
		this.message = message;
	}
}


配置struts.xml文件:
 <package name="test" namespace="/test" extends="struts-default">
	 
	 	<global-results>
	 		<result name="usernameInvalid">/WEB-INF/result/usernameInvalid.jsp</result>
	 	</global-results>
	 	
	 	<global-exception-mappings>
	 		<exception-mapping result="usernameInvalid" exception="com.suo.exception.UsernameException"></exception-mapping>
	 	</global-exception-mappings>
	 	
	 	<action name="login" class="com.suo.actions.LoginAction" method="execute">
	 		<exception-mapping result="passwordInvalid" exception="com.suo.exception.PasswordException"></exception-mapping>
	 		<result name="passwordInvalid">/WEB-INF/result/passwordInvalid.jsp</result>
	 		<result name="success">/WEB-INF/result/LoginResult.jsp</result>
	 	</action>
</package>


在LoginAction中捕获异常,并跳转到相应的页面:
public String execute() throws Exception
	{
		if(!"suo".equals(username))
		{
			throw new UsernameException("username invalid !");
		}
		
		if(!"piao".equals(password))
		{
			throw new PasswordException("password invalid !");
		}
		return SUCCESS;
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值