这次主要是记录一下 springmvc 关于异常处理 和 拦截的回顾

  1. 关于springmvc  异常处理:springmvc 提供了 HandlerExceptionResolver  异常处理解析接口 实现该接口

        @RequestMapping(value = "exceptionMethod")
    public void exceptionMethod() throws MyExcption {
    try {
    System.out.println(1 / 0);
    } catch (Exception e) {
    throw new MyExcption("除数不能为零");
    }
    }
    public class MyHandlerException implements HandlerExceptionResolver {
    
        @Override
    public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse res, Object parm, Exception ext) {
    String msg = "访问异常";
    ModelAndView mv = new ModelAndView();
    mv.addObject("result", msg);
    mv.setViewName("hello");
    return mv;
    }

    所有的异常 都会经过该异常处理解析,不过不管是何种异常 返回的都是 同一样的页面 提示 ,为了有更好的 错误信息反馈  我们可以修改一下  创建一个自定义的异常:

    public class MyHandlerException implements HandlerExceptionResolver {
    
        @Override
    public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse res, Object parm, Exception ext) {
    String msg = "访问异常";
    if (ext instanceof MyExcption) {
    msg = ((MyExcption) ext).getMsg();
    }
    ModelAndView mv = new ModelAndView();
    mv.addObject("result", msg);
    mv.setViewName("exception");
    return mv;
    }
    public class MyExcption extends Exception {
    public String msg; public String getMsg() {
    return msg;
    } public void setMsg(String msg) {
    this.msg = msg;
    } public MyExcption() {
    } public MyExcption(String msg) {
    this.msg = msg;
    }
    }

    这样 就会根据自定义提示的异常 返回相应的 错误页面提示

  2. 拦截器:springmvc 同样也提供了一个 处理请求拦截的处理器接口HandlerInterceptor 实现该接口:
    public class MyInterceptor implements HandlerInterceptor {
    
        @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
    throws Exception {
    } @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
    throws Exception { } @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
    return true;
    }

    先经过 preHandle 方法 过滤 请求,比如权限验证 是否登录,返回true的时候 表示 放行,在返回modeAndView的时候  执行 postHadnle  最后在执行afterComoletion方法 在springmvc.xml中配置拦截器

    <mvc:interceptors>
    <mvc:interceptor>
    <mvc:mapping path="/**" />
    <mvc:exclude-mapping path="/login/**" />
    <bean class="com.springmvc.interceptor.MyInterceptor"></bean>
    </mvc:interceptor>
    </mvc:interceptors>

    exclude-mapping 表示 不需要拦截的路径(有兴趣的可以去看一下 多个拦截器的时候 请求是如何执行的 以及springmVC Restful )

    springmvc 面试的时候 遇到过:谈一下  springmvc 如何执行一个请求的,记住springmvc 的 三大组件(处理器映射器,处理器适配器,视图解析器) 自然而然的就清楚了 springmvc 的执行流程 理解记忆总比 死记硬背的好

springmvc学习(五)的更多相关文章

  1. (转)SpringMVC学习(五)——SpringMVC的参数绑定

    http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...

  2. springMVC 学习 五 参数传递(包括restful风格)

    (一)SpringMVC Controller接受参数的方式 (1) 前端传递的参数,在springMVC的controller中使用基本数据类型或者String 类型进行接受 在前端有一个form表 ...

  3. springMVC学习五(转发和乱码)

    摘录http://www.cnblogs.com/xdp-gacl/p/3798347.html http://www.cnblogs.com/xdp-gacl/p/3798347.html 四个很重 ...

  4. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  5. SpringMvc学习心得(五)控制器产生与构建

    SpringMvc学习心得(五)控制器产生与构建 标签: springspring mvc框架 2016-03-22 15:29 140人阅读 评论(0) 收藏 举报  分类: Spring(4)  ...

  6. 史上最全的SpringMVC学习笔记

    SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于Spring ...

  7. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  8. springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

    @_@ 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) myba ...

  9. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  10. SpringMVC学习系列-后记 解决GET请求时中文乱码的问题

    SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...

随机推荐

  1. windows 下安装composer

    安装 1.在PHP目录下,打开php.ini文件,开启openssl扩展.去掉extension=php_openssl.dll前面的分号(;) 2.把php目录添加到环境变量(和php.exe同级目 ...

  2. 2018.4.2 sqlite优化

    一.参数优化. ```PRAGMA foreign_keys=ON;PRAGMA cache_size=8000;PRAGMA synchronous=OFF;PRAGMA temp_store=ME ...

  3. R49 A-D D图有向有环图

    A. Palindromic Twist 给一个字符串(小写字母)   每个字符+1,-1:变成其他字符  a只能变b  z只能变y 看能否变成回文字符串 #include<bits/stdc+ ...

  4. 【BZOJ4720】【NOIP2016】换教室

    我当年真是naive…… 原题: 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程.在可以选择的课程中,有2n节 课程安排在n个时间段上.在第i(1≤i≤n)个时间段上,两节 ...

  5. React Native使用 DeviceEventEmitter发送通知emit和监听接收addListener的用法

    js 向 js 发送数据 DeviceEventEmitter.emit('自定义名称',发送数据);   例:边看边买退出登录之后,我的淘宝和详情页的钱包数据应该改变.这时,我们可以在退出登录请求返 ...

  6. Java之SimpleDateFormat日期格式转换(Date 和 String 类型之间的转换)

    SimpleDateFormat : 可以选择任何用户定义的日期-时间格式的模式    "yyyy-MM-dd HH:mm:ss:SSS"1.格式化:Date -->Stri ...

  7. 查看hp小型机命令集

    查看HP小型机的信息的命令集(一) 1.机型 #model 9000/800/L2000-44 注意:其中44是指每个cpu有440MHZ. 2.cpu个数 #top CPU LOAD USER NI ...

  8. 配置zabbix当内存剩余不足15%的时候触发报警

    zabbix默认的剩余内存报警:Average Lack of available memory on server {HOST.NAME}{Template OS Linux:vm.memory.s ...

  9. python json.dumps(output) ^ SyntaxError: invalid syntax

    问题 下面代码在有些机器上执行正常,有些机器上执行报错: import json output={} print json.dumps(output) python代码报错: line 277 pri ...

  10. 大数据框架hadoop服务角色介绍

    翻了一下最近一段时间写的分享,DKHadoop发行版本下载.安装.运行环境部署等相关内容几乎都已经写了一遍了.虽然有的地方可能写的不是很详细,个人理解水平有限还请见谅吧!我记得在写DKHadoop运行 ...