博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2:异常处理
阅读量:5761 次
发布时间:2019-06-18

本文共 3503 字,大约阅读时间需要 11 分钟。

Struts2框架提供了自己的异常处理机制,只需要在struts.xml文件中配置异常处理即可,而不需要在Action方法中来捕捉异常。

传统方法

public String execute() throws Exception {    try{        //...                return SUCCESS;    }catch(SQLException ex) {  // SQL异常,返回ERROR        ex.printStackTrace();        return ERROR;    }catch(InvalidInputException ex) { // Invalid异常,返回ERROR        ex.printStackTrace();        return ERROR;    }catch(exception1 ex) {  // 自定义异常        ex.printStackTrace();        return "result1";    }}

Struts2方法

Strut2框架在struts.xml文件中配置异常通常有两种方式:全局异常配置和局部异常配置。分别通过<global-exception-mappings../>标签和<exception-mapping../>标签来配置。

下面模拟一个用户登录的场景,根据不同的输入,抛出不同的异常,然后将由struts2处理。

1. 创建登录页面(login.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%>
异常测试页面

2. 创建三个异常显示页面

loginException.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%>
自定义异常SecurityException

Exception.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%>
全局定义异常Excepition

SQLException.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%>
全局定义异常SQLException

3. 创建Action类

package com.clzhang.struts2.demo10;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {    private static final long serialVersionUID = 1L;        private String name;    private String age;    private String tel;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }    public String getTel() {        return tel;    }    public void setTel(String tel) {        this.tel = tel;    }    @Override    public String execute() throws Exception {        if (!getName().equals("admin")) {            throw new SecurityException("用户名错误,应该为admin!");        } else if (!getAge().equals("18")) {            throw new Exception("年龄错误,应该为18岁!");        } else if (!getTel().equals("13800138000")) {            throw new java.sql.SQLException();        } else {            return SUCCESS;        }    }}

4. 创建自定义异常类

package com.clzhang.struts2.demo10;public class SecurityException extends Exception {    private static final long serialVersionUID = 1L;        public SecurityException() {        super();    }    private String message;    public SecurityException(String message) {        this.message = message;    }    public String getMessage() {        return message;    }}

5. 修改struts.xml

加入如下代码:

/struts2/demo10/Exception.jsp
/struts2/demo10/SQLException.jsp
/struts2/demo10/loginException.jsp
/struts2/demo10/success.jsp

6. 启动Tomcat,测试

打开IE,输入地址:

结果如下:

直接提交(用户名不为admin),则抛出SecurityException,转到loginException.jsp;

输入用户名admin,再次提交,则抛出Exception,转到Exception.jsp;

输入用户名admin,年龄18,再次提交,则抛出SQLException,转到SQLException.jsp;

最后,输全三个输入(admin/18/13800138000),再次提交,转到成功页面!

转载地址:http://xtlkx.baihongyu.com/

你可能感兴趣的文章
微信小程序开发 -- 点击右上角实现转发功能
查看>>
[转载]ASP.NET MVC Music Store教程(1):概述和新项目
查看>>
js函数大全
查看>>
Mongodb启动命令mongod参数说明
查看>>
TCP&UDP压力测试工具
查看>>
oracle 导入数据
查看>>
Android 最简单的自定义Dialog之一
查看>>
磨刀不误砍柴 - 配置适合工作学习的桌面环境
查看>>
redux v3.7.2源码解读与学习之 applyMiddleware
查看>>
【React】为什么我不再使用setState?
查看>>
Git原理与高级使用(3)
查看>>
从JDK源码看Writer
查看>>
Express 结合 Webpack 实现HMRwi
查看>>
基于protobuf的RPC实现
查看>>
我的友情链接
查看>>
HAProxy负载均衡原理及企业级实例部署haproxy集群
查看>>
开源中国动弹客户端实践(三)
查看>>
Win 8创造颠覆性体验:预览版关键更新
查看>>
vim在多文件中复制粘贴内容
查看>>
Android ContentObserver
查看>>