struts2开发10--struts2异常处理机制

在传统的异常处理方式中,开发者一般需要编写大量的try-catch块来处理异常,而在struts2中,提供了一种声明式的异常处理方式,通过配置拦截器来实现异常处理。下面以要求的年龄不能为空和只能为数字来说明struts2中的异常处理,当用户输入的年龄为空或者不为数字时,则拦截异常,并在页面中提示用户异常信息,具体步骤如下

第一步:创建ExceptionTestAction,其代码如下:

package cn.test.action;

import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionSupport;

public class ExceptionTestAction extends ActionSupport{
 private String age;

 public String execute() throws Exception
 {
  Pattern pattern=Pattern.compile("[0-9]*");
  if(!pattern.matcher(age).matches())
  {
   throw new Exception("年龄必须为数字");
  }
  
  if(age.length()==0)
  {
   throw new Exception("年龄不能为空");
 }
  return "success";
 }
 public String getAge() {
  return age;
 }

 public void setAge(String age) {
  this.age = age;
 }
}
第二步,创建输入页面ExceptionTest.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib  prefix="s" uri="/struts-tags" %>

<font color="red"><s:property value="exception.message"/></font><!--显示异常信息-->
<s:form action="Exception.action">
<s:textfield name="age" label="年龄"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>

第三步,创建成功Esuccess.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s"  uri="/struts-tags" %>
<s:property value="age"/>

第四步,配置struts.xml文件

<action name="Exception" class="cn.test.action.ExceptionTestAction" method="execute">

                              <!--配置局部异常映射-->

                 <!--exception用来指定出现异常的类型-->

                <!--result用来指定struts2返回给用户的视图-->
        <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
        <result name="error">/WEB-INF/jsp/ExceptionTest.jsp</result>
        <result name="success">/WEB-INF/jsp/Esuccess.jsp</result>
        </action>

完成,部署项目,如果在年龄的输入框中不输入数字,则会在页面上显示“年龄必须为数字”,如果不输入,则会显示“年龄不能为空”。

猜你喜欢

转载自673390302.iteye.com/blog/2293786