首页 > 其他分享 >struts2异常处理

struts2异常处理

时间:2023-08-27 11:01:58浏览次数:38  
标签:String 处理 struts2 action message 异常 public


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>







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;
	}




标签:String,处理,struts2,action,message,异常,public
From: https://blog.51cto.com/u_5173797/7251473

相关文章

  • SpringBoot - 事务处理
    事务介绍是一组操作的集合,它是一个不可分割的工作单位,这些操作要么同时成功,要么同时失败Spring事务管理:注解:@Transactional位置:业务层的方法上、类上、接口上作用:将当前方法交给spring进行事务管理,方法执行前,开始事务。成功执行完毕,提交事务,出现异常,回滚事务引入案......
  • 【机器学习 | 数据预处理】 提升模型性能,优化特征表达:数据标准化和归一化的数值处理技
    ......
  • Ngginx 根据UA处理
    nginx的 代码:     #  set$flag0;          #  if($http_user_agent~*"360Spider|Baiduspider|Baiduspider-render|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Bingbot|MSNBot|YisouSpider|Sosospid......
  • 异常
           ......
  • 手写RISC-V处理器--1
    由来由于去年工作变动,有幸进入了芯片行业,但主要工作内容为基于RISC-V的嵌入式应用软件开发,几乎接触不到芯片设计的相关知识,然而随着工作的深入,越来越想探究一下运行在软件之下的CPU的世界,于是便产生了自己手写一个RISC-V处理器的想法,同时在博客里记录和分享一下自己学习和探索的......
  • 图像后期处理操作
    1.引言最近,在闲暇之余,拍摄了一些昆虫的照片。我发现在手持拍摄昆虫时,几乎不可能拍出一次排除完美的照片。通常我们对照明的控制有限,对取景的控制有限(由于焦距和所有的树枝和树叶),以及对昆虫的运动没有控制,而且我们通常仅有很短的时间拍摄。因此,为了创造一个好的图像,后期处理几乎是......
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
    文章目录前言`%~dp0`的含义扩展字符串从字符串中截取路径、文件名脚本传参for语法扩展总结 前言又是实际开发中的问题,想要截取一个文件路径中的盘符、文件名等信息,第一反应是正则表达式?或者是split函数?这些往往都是“高级”语言中才会有的实现方法,对于批处......
  • CentOS操作系统忘记密码处理方法
    开机后在改画面按e键找到‘linux16’开头的行,修改‘ro’为‘rwinit=/sysroot/bin/sh’,进入单用户模式,按ctrl+x进入以后......
  • 20230826 step03 获取当前异常等级 CurrentEL
    armV8-A架构文档的C5.2.1 在EL0不可用,EL1时。。。。。,返回值前60bits和后2bits都为0修改一下boot.S//Theentrypointisinitsownsection".text.boot"..section".text.boot"//Thesymbol"_start"isthekernel'sentrypoint,makeitgl......
  • 使用filebeat监听异常日志发送redis
    使用场景:自定义监听日志关键字符,第一时间发现生产问题,实测从服务打出异常日志到redis监听到日志延迟在5s左右适用于:服务机器数有限的情况,目前全部采用手动部署的方式,一、在目标机器上部署filebeat官网下载filebeathttps://artifacts.elastic.co/downloads/beats/filebeat/......