SpringMVC学习笔记五:HandlerExceptionResolver异常处理
继承HandlerExceptionResolver自定义异常处理器
控制器ExceptionController.java
package com.orange.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import com.orange.exception.NameException;
import com.orange.exception.PasswordException; @Controller
@RequestMapping("/exception")
public class ExceptionController { @RequestMapping("handlerException")
public ModelAndView doException2(String name, String password, ModelAndView mav) throws Exception{
if(! "admin".equals(name)){
throw new NameException("用户名错误");
}
if(! "admin".equals(password)){
throw new PasswordException("密码错误");
}
mav.addObject("name", name);
mav.addObject("password", password);
mav.setViewName("/showException.jsp");
return mav;
}
}
定义两个异常类型,NameException.Java和PasswordException.java
package com.orange.exception;
public class NameException extends Exception {
public NameException() {
super();
}
public NameException(String message) {
super(message);
}
}
package com.orange.exception;
public class PasswordException extends Exception {
public PasswordException() {
super();
}
public PasswordException(String message) {
super(message);
}
}
自定义异常处理器MyException,当发生异常时,指定跳转的视图jsp
package com.orange.exception; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView; import com.fasterxml.jackson.core.sym.Name; public class MyExceptionResolver implements HandlerExceptionResolver { @Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
ModelAndView mav = new ModelAndView();
mav.addObject("ex", ex);
mav.setViewName("/defaultException.jsp"); if(ex instanceof NameException){
mav.setViewName("/showException.jsp");
} if(ex instanceof PasswordException){
mav.setViewName("/showException.jsp");
} return mav;
} }
注册异常处理器
<!-- 注册异常处理器 -->
<bean class="com.orange.exception.MyExceptionResolver">
当发生异常时,跳转的jsp页面
exception.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<base href="<%=basePath %>">
<title>Default Page</title>
</head>
<body>
<dir>
<h3>SimpleMappingExceptionResolver</h3><br>
<a href="exception/simple">测试</a>
</dir>
<hr>
<div>
<h3>HandlerExceptionResolver</h3><br>
<form action="exception/handlerException">
name: <input type="text" name="name"><br>
password: <input type="text" name="password"><br>
<input type="submit" value="submit">
</form>
</div>
</body>
</html>
showException.jsp
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<base href="<%=basePath %>">
<title>ShowExceptionPage</title>
</head>
<body>
<div>
<c:out value="${ex.message }"></c:out>
</div>
<div>
<c:out value="${name }"></c:out><br>
<c:out value="${password }"></c:out>
</div>
</body>
</html>
SpringMVC学习笔记五:HandlerExceptionResolver异常处理的更多相关文章
- SpringMVC学习笔记四:SimpleMappingExceptionResolver异常处理
SpringMVC的异常处理,SimpleMappingExceptionResolver只能简单的处理异常 当发生异常的时候,根据发生的异常类型跳转到指定的页面来显示异常信息 ExceptionCo ...
- springMVC学习笔记(五)
一.使用Ajax调用 1.1 Controller返回的类型为text类型的方式. @RequestMapping("/getPerson") public void getPer ...
- SpringMVC学习笔记五:使用converter进行参数数据转换
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6832898.html 一:SpringMVC数据绑定机制 1:request到达SpringMVC框架时,框 ...
- SpringMVC 学习笔记(五) 基于RESTful的CRUD
1.1. 概述 当提交的表单带有_method字段时,通过HiddenHttpMethodFilter 将 POST 请求转换成 DELETE.PUT请求,加上@PathVariable注解从而实现 ...
- SpringMVC 学习笔记(五)
47. 尚硅谷_佟刚_SpringMVC_文件上传.avi 参看博客https://www.cnblogs.com/hanfeihanfei/p/7931758.html相当的经典 我是陌生人关于Sp ...
- springmvc学习笔记--REST API的异常处理
前言: 最近使用springmvc写了不少rest api, 觉得真是一个好框架. 之前描述的几篇关于rest api的文章, 其实还是不够完善. 比如当遇到参数缺失, 类型不匹配的情况时, 直接抛出 ...
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- 史上最全的SpringMVC学习笔记
SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
随机推荐
- Spring Cloud Alibaba 教程 | Nacos(三)
使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多 ...
- 第3章 ZooKeeper基本数据模型
第3章 ZooKeeper基本数据模型 3-1 zk数据模型介绍 3-2 zk客户端连接关闭服务端,查看znode ./zkCli.sh Ctrl + C 退出 =================== ...
- JavaSE--RMI初识
转自:http://blog.csdn.net/guyuealian/article/details/51992182 一.Java RMI机制: 远程方法调用RMI(Remote Me ...
- ios 真机使用相机闪退问题
需要增加权限 在info文件增加 主要前面的key 后面的cameraDesciption只是一段描述 随便写就可以
- flutter 命令卡主的问题
情况 1 镜像的问题 如果你的镜像已经设置,却仍然卡主,那么请参考情况 2 这种情况在中文官网上已经有了,并且有这修改镜像的方法,附上链接: https://flutter.cn/community/ ...
- C语言代码在内存中的存储
http://blog.chinaunix.net/uid-26430381-id-4359960.html
- ruoyi IpUtils
package com.ruoyi.common.utils; import java.net.InetAddress; import java.net.UnknownHostException; i ...
- Cell theory|Bulk RNA-seq|Cellar heterogeneity|Micromanipulation|Limiting dilution|LCM|FACS|MACS|Droplet|10X genomics|Human cell atlas|Spatially resolved transcriptomes|ST|Slide-seq|SeqFISH|MERFISH
生物信息学 Cell theory:7个要点 All known living things are made up of one or more cells. All living cells ar ...
- svn文件冲突,树冲突详解
解决冲突 偶尔,当你从版本库更新.合并文件时,或者切换工作副本至一个不同的 URL 时你会遇到冲突.有两种冲突: 文件冲突 当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突. ...
- GIS开源库OpenSceneGraph(OSG)、OSGEarth、GDAL、Qt、CGAL、Boost
GIS开源有这些库:OpenSceneGraph(OSG).OSGEarth.GDAL.Qt.CGAL.Boost