springMvc 自定义注解以及自定义异常处理

2023-11-07

上一篇写到自定义错误处理,那么有这么个需求,如果每个模块需要错误处理页面不同,那么上面一篇写死为error.jsp就不合理了,所以就需要我们想跳哪个错误页面就哪个页面,这样就灵活多了,我采用自定义注解的方式了指定我们需求跳转的错误页面;

具体操作如下:

1)编写自定义注解类:

package com.cwh.springmvc.Annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({java.lang.annotation.ElementType.METHOD,java.lang.annotation.ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyErrorView {
	String value() default "";//使用注解时不写则默认为value
}
@target为注解在那些位置有一下几种:
   TYPE,FIELD, METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,ANNOTATION_TYPE,PACKAGE

2)下面在自定义错误处理中来运用它

package com.cwh.springmvc.Exception;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import com.cwh.springmvc.Annotation.MyErrorView;

public class CommonExceptionResolver implements HandlerExceptionResolver {
	private static final Log log = LogFactory.getLog(CommonExceptionResolver.class);
	@Override
	public ModelAndView resolveException(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3) {
		String errorViewJsp = "error";//默认错误处理页面
		log.info(arg3);
		arg3.printStackTrace();
		HandlerMethod method = (HandlerMethod) arg2;
		MyErrorView errorView = method.getMethodAnnotation(MyErrorView.class);
		if(null != errorView&&StringUtils.isNotBlank(errorView.value())){
			errorViewJsp = errorView.value();
		}
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("message",arg3.getMessage());
		modelAndView.setViewName(errorViewJsp);
		return modelAndView;
	}

}

这样在使用@MyErrorView时候我们就可以指定跳转的错误处理页面,当没有写时默认为error这个页面

3)下面我们再另加一个错误处理页面error1.jsp

<body>
    This is another errorView page. <br>${message }
  </body>
4)然后就可以在我们需要的地方加上这个注解即可:

//用户列表
	@RequestMapping("/userlist")
	@MyErrorView("error1")
	public ModelAndView userlist(@RequestParam("currentpage")int currentpage,HttpSession session) throws Exception{
		 if(1 ==1)throw new Exception("this is a commonExceptionResolver");
		//返回ModelAndView对象包含view名称和传递的对象
		return new ModelAndView("UserManager","userlist","userList");
	
	}

5)运行结果:







本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springMvc 自定义注解以及自定义异常处理 的相关文章

随机推荐

  • go-cqhttp:[禁止登录]登录失败,建议升级最新版本后重试,或通过问题反馈与我们联系。(错误码:45)

    token失效 禁止登录 登录失败 建议升级最新版本后重试 或通过问题反馈与我们联系 错误码 45 禁止登录 登录失败 建议升级最新版本后重试 或通过问题反馈与我们联系 使用go cqhttp开发QQ机器人的时候遇到的问题 登录的时候报错
  • 【uniapp】如何手动实现让input文本框聚焦

    开发中遇到一个问题 希望在每次操作页面完成后 input文本框都能自动聚焦 那么问题来了 应该怎么做 接下来请继续往下看 也许大多数同学都会这么做 尝试过修改文本框属性focus为 true 但是没有效果 参考如下
  • 关于项目内浏览器限制问题(VUE)

    目的 限制项目在某些浏览器中打开 代码位置如图 1 获取用户代理 navigator userAgent 拓展 属性 输出值 navigator appCodeName 浏览器代号 Mozilla navigator appName 浏览器
  • 分享一个电脑中病毒(无限一分钟后重启)的解决方法。

    常在河边走 哪有不湿鞋 很好计算机中毒了 情况如下 拖慢开机速度 很慢 很慢 开机后提示 你的电脑将在一分钟后重启 无限次数 解决方法 进入安全模式 以管理员方式打开CMD 命令如下 netsh winsock reset catalog
  • std::vector中swap()函数使用解析以及去重复操作

    1 常用方式 交换vector内部的两个元素 int main int argc char argv std vector
  • 磁盘操作--分区大于2T的硬盘

    一 说明 分区大于2TB的硬盘 云上操作 基于linux系统 Linux parted GPT ext4或xfs 步骤如下 1 分区类型为gpt 2 创建主分区 3 查看是否对其 4 重读分区表 5 创建文件系统 6 挂载目录 二 分区硬盘
  • R语言实验报告【全集】

    若对你有帮助 记得点赞 关注我哦 7个实验 R语言环境安装 R语言包的安装 创建和使用R语言数据集 数据的导入导出 R语言数据的清洗 高级数据管理 基本统计分析和函数与包实验 其实是两个实验 内容较长 本实验是在我同学做的云平台上运行的 所
  • mysql binlog 目录_怎么查看mysql 的binlog日志存放的位置(linux和win)

    这个你可以看配置文件 启用了才有这样的记录默认是没有的 linux系统中的 etc my cnf my cnf内容 log bin mysqlbin 默认配置 比如上面的设置重启数据库会生成mysqlbin 000001文件 常用的命令 1
  • 在虚拟机ubuntu64位系统中配置jdk

    在虚拟机ubuntu64位系统中配置jdk 第一步 下载jdk 第二步 新建一个文件夹后将压缩包解压到这个文件中 第三步 任意地方打开一个终端 这里在桌面打开 第四步 将系统的配置文件备份 第五步 在终端中打开配置界面 第六步 检查配置是否
  • antd pro mock数据方法

    export default POST api aaa bbbbb req res gt send里是mock数据返回的数据结构 res send code 200 data steps 2 downFile name 需求 url htt
  • 视觉注意力收集

    参考博文 神经网络学习小记录64 Pytorch 图像处理中注意力机制的解析与代码详解 pynq 注意力机制 Bubbliiiing的博客 CSDN博客 计算机视觉 详解 自注意力 Non local 模块与 Self attention
  • 概率论与数理统计(一)

    本文主要讲了什么是事件 事件与概率的关系 事件常见的分类 事件的基本关系及运算 什么是条件概率以及由条件概率引出的事件独立性 由事件独立性引出来的概率0乘法定理 概率的三条公理 文章目录 事件与概率 概率的三条公理 事件的关系与运算 条件概
  • Postman传入的Date参数类型

    需要定义全局变量 postman setGlobalVariable time Date parse new Date 2020 11 11 00 00 00 进行引用 time time
  • DX杂记之细分着色器和利用贝塞尔曲面平滑模型

    细分着色器的构成 细分着色器是为了将一大块的区域继续划分 划分成很多的小块 大体上由三部分构成 但也会涉及一些其它阶段的内容 这三个阶段分别为 Hull Shader Stage Tesslator Stage Domain Shader
  • Day3: 前端路由(基础篇)

    目标 持续输出 每日分享关于web前端常见知识 面试题 性能优化 新技术等方面的内容 主要面向群体 前端开发工程师 初 中 高级 应届 转行 培训等同学 Day3 今日话题 想必大家经常会在面试中或者工作生活中听到 前端路由 相关的问题或者
  • Training a deep autoencoder or a classifier on MNIST digits_Rbm训练(Matlab)

    这是第一次阅读matlab版的RBM程序所做的笔记 其中有好多没有理解的地方 希望能跟各位博友一起学习 一起研究 一起讨论 共同进步 一 Rbm阅读材料 http en wikipedia org wiki Restricted Boltz
  • statsmodels 0.10.0中文文档

    为什么翻译 本人会计出身 转行数据分析 更多是用excel sql spss等工具 30岁开始入坑python 在学习statsmodels包的过程中 在知乎 百度 CSDN和github上均没有找到statsmodels的中文文档 一开始
  • 自然图像目标检测数据集汇总

    参考 自然图像目标检测数据集汇总 云 社区 腾讯云 目录 一 PASCAL VOC 1 Challenge and tasks 2 Dataset 3 Detection Ground Truth 4 Evaluation 二 ImageN
  • 测试离线音频转文本模型Whisper.net的基本用法

    微信公众号 dotNET跨平台 中的文章 OpenAI的离线音频转文本模型Whisper的 NET封装项目 介绍了基于 net封装的开源语音辨识Whisper神经网络项目Whisper net 其GitHub地址见参考文献2 本文基于Whi
  • springMvc 自定义注解以及自定义异常处理

    上一篇写到自定义错误处理 那么有这么个需求 如果每个模块需要错误处理页面不同 那么上面一篇写死为error jsp就不合理了 所以就需要我们想跳哪个错误页面就哪个页面 这样就灵活多了 我采用自定义注解的方式了指定我们需求跳转的错误页面 具体