欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-17 14:36:43
...

在传统的异常处理方式中,开发者一般需要编写大量的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>

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