Java框架_SpringMVC_day06_异常处理

SpringMVC知识 day03 异常处理&SSM整合 一、SpringMVC的异常处理 1.1 异常处理的思路: 系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息, 后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端 控制器交由异常处理器进行异常处理,如下图: 1.2实现步骤 1.2.1 编写异常类... 阅读详情

目录

七、SpringMVC 的异常处理

7.1 异常处理思路

7.2 SpringMVC 的异常处理

7.2.1 数据准备

7.2.2 编写自定义异常类

7.2.3 编写异常处理器

7.2.4 配置异常处理器

7.2.5 Controller

7.2.6 error.jsp


七、SpringMVC 的异常处理

7.1 异常处理思路

       系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理

7.2 SpringMVC 的异常处理

7.2.1 数据准备

导入坐标

<!-- 版本锁定 -->
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <spring.version>5.0.2.RELEASE</spring.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
  </dependency>

  <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
</dependencies>

web.xml

<!-- SpringMVC的核心控制器 -->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <!-- 配置servlet启动时加载对象 -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!--配置解决中文乱码过滤器-->
<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

springmvc.xml

<beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
        <context:component-scan base-package="com.cpz"/>

        <!--视图解析器-->
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>

        <mvc:annotation-driven></mvc:annotation-driven>

        <!-- 设置静态资源不过滤 -->
        <mvc:resources location="/js/" mapping="/js/**"/>  <!-- javascript -->

</beans>

index.jsp

<a href="user/testException">异常处理</a>

Controller

@Controller
@RequestMapping(value = "/user")
public class UserController {

    @RequestMapping(value = "/testException")
    public String testException(){
        System.out.println("执行了 testException 方法 !!! ");
        int a = 10 / 0;
        return "success";
    }
}

测试结果

7.2.2 编写自定义异常类

package com.cpz.exception;

// 自定义异常类
public class MySysException extends Exception {
    // 异常提示信息
    private String message;

    public MySysException(String message){
        this.message = message;
    }

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

7.2.3 编写异常处理器

package com.cpz.exception;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

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

// 异常处理器
public class MySysExceptionResolver implements HandlerExceptionResolver {
    // 跳转到具体的错误页面的方法
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

        MySysException mySysException = null;
        // 如果这个异常是我们自定义的异常类型,就强转成自定义的类型
        if (ex instanceof MySysException){
            mySysException = (MySysException) ex;
        }else {
            // 如果不是自定义类型,利用有参构造,存入一个错误信息
            mySysException = new MySysException("请联系管理员!!!!");
        }

        ModelAndView mv = new ModelAndView();
        // 存入错误信息
        mv.addObject("message",mySysException.getMessage());
        // 确定跳转的页面
        mv.setViewName("error");

        return mv;
    }
}

7.2.4 配置异常处理器

<!-- 配置异常处理器 -->
<bean id="mySysExceptionResolver" class="com.cpz.exception.MySysExceptionResolver"></bean>

7.2.5 Controller

    @RequestMapping(value = "/testException")
    public String testException() throws MySysException {
        System.out.println("执行了 testException 方法 !!! ");
        try{
            int a = 10 / 0;
        }catch (Exception e){
            throw new MySysException("页面出现问题啦,请稍后重试");
        }
        return "success";
    }

7.2.6 error.jsp

<h1>访问失败!!!</h1>
${message}<br>

 

java modbus通讯协议_Modbus通 讯 协 议 电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96... 阅读详情

相关推荐

告别ROS1思维:在ROS2 Humble上,用Python搞定MoveIt2机械臂控制的完整流程

本文详细介绍了在ROS2 Humble环境下使用Python控制MoveIt2机械臂的完整流程。从环境配置、架构变革到实战操作,涵盖URDF适配、Action接口编程及性能优化技巧,帮助开发者高效迁移ROS1项目至ROS2平台,实现工业级机械臂控制。

weixin_30352645的博客 449

springMVC自定义异常和异常处理器

思路:出现异常后,会往上传,然后传到前端控制器时,会寻找异常处理器,将异常传入异常处理器中进行处理。 创建自定义异常类,集称Exception 不能继承Throable,也不知道为啥2.创建异常处理器,并可以选择xml方式配置,或者注解方式 1.首先判断异常的类型,if (ex instanceof SysException) 2.如果是指定异常,那么进行处理exception =(SysExc...

weixin_44065691的博客 358

自动驾驶仿真 (四)—— 基于PreScan与Simulink的AEB系统多场景验证

本文详细介绍了基于PreScan与Simulink的AEB系统多场景验证方法,涵盖标准场景搭建、复杂工况扩展及控制策略优化。通过仿真技术,显著降低测试成本并提升场景覆盖率,有效解决实车测试中的痛点问题。特别适用于自动驾驶领域的AEB系统开发与验证。

weixin_28273593的博客 249

if(e instanceof XxxException)判断后,throw e 报错提示没有处理其他异常。

今天在项目中碰到这样一个问题,我写了如下代码: try{ /** * do something * 将会 抛出 GeneralSecurityException、IOException */ } catch (Exception e) { if (e instanceof GeneralSecurityException) { th...

蛋壳城堡 6025

企业微信群机器人配置全攻略:从零到消息推送的完整流程

本文详细介绍了企业微信群机器人的配置与使用全流程,从零开始指导如何创建机器人、获取Webhook地址,到通过HTTP请求发送文本、Markdown、图片及模板卡片等多种消息类型。内容涵盖核心的接口配置、安全实践及实战应用场景,帮助开发与运维团队快速构建自动化消息推送中枢,提升协作效率。

weixin_29231725的博客 842

Python 3.13.7 (64-bit)安装弹窗提示:Setup failed:0x80070643 - 安装时发生严重错误...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2117

SpringMVC的异常处理

异常处理思路 Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进 行异常的处理。 SpringMVC的异常处理 自定义异常类package cn.itcast.exception; public class SysException extends Exception{ private static final long serialVersionUID = 4055945147128016300L; //.

qq_42483491的博客 259

为YOLOv11引入加权双向特征金字塔(BiFPN)

本文介绍了将BiFPN应用于YOLOv11模型以提升边缘设备上小目标检测精度的实践。针对传统FPN在特征融合时的信息丢失问题,采用带可学习权重的BiFPN结构进行改造,实现了不同层级特征的动态融合。重点阐述了WeightedFeatureFusion模块的实现细节、neck结构改造方法及训练部署注意事项。实验表明,该改进使小目标AP提升3.1%,参数量仅增加5%,在精度和效率间取得良好平衡。文章还分享了权重初始化、归一化处理等实用技巧,并强调需根据数据特性评估改进效果,重新计算anchor等关键点。

as1225120794的博客 349

Day7 | Java框架 | SpringMVC

表现层拿到业务层返回的数据之后,将其转换成 json 格式发送给前端页面前端页面接收数据,将其解析成用户最终浏览的页面信息,交给浏览器技术栈后端服务器数据层实现:JDBC → MyBatis 框架(加速开发)表现层开发:Servlet →SpringMVC 框架SpringMVC 是一种基于 Java 实现 MVC 模型的轻量级 Web 框架优点:相比于Sevlet,使用简单,开发便捷;灵活性强即,访问网络资源的格式。

qq_44581505的博客 1421

FM收音机调试-RDA5807M

收音机调试 IC型号:RDA5807M

mangofu的博客 6167

WPF中使用TreeView封装组合控件TreeView+DataGrid

wpf的功能非常强大,很多控件都是原生的,但是要使用TreeView+DataGrid的组合,就需要我们自己去封装实现。功能如上图所示, 目前基本上把常用的样式都实现了,购买源码后,可以自行修改样式。本文源码效果如下,(搞了好几天,的确有难度,所以源码也收费,便宜,赚点辛苦费)第一种:技术的选择是TreeView(也就是本文的演示)。这2个图都是第三方控件自带的,并且都是收费使用。首先说明一下,实现上面的效果,有3种方法。本文演示的是使用TreeView的实现。第二种:技术的选择是DataGrid。

故里2130 1650

05 SpringMVC: day02\06.异常处理及拦截器

06.异常处理及拦截器 1 SpringMVC异常处理之分析和搭建环境、2 SpringMVC异常处理之演示程序异常、3 SpringMVC异常处理之异常处理代码编写 4 SpringMVC拦截器之介绍和搭建环境、5 SpringMVC拦截器之编写controller、6 SpringMVC拦截器之拦截器入门代码 7 SpringMVC拦截器之拦截器接口方法演示 第3章 Spring...

Marlon康 365

2 中望CAD二次开发-绘制图形(ZRX C++)

本文讲解中望CAD二次开发,关于块的概念及基本图形的绘制

cilvsuanna的博客 411

SpringMVC框架学习

文章目录三层架构和MVC1、三层架构2、MVC模型SpringMVC入门案例学习SpringMVC的入门程序 三层架构和MVC 1、三层架构 使用Java语言基本上都是开发B/S架构的程序,BS架构又分成了三层架构 * 表现层:web层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模式 * 业务层:处理公司具体的业务逻辑的 * 持久层:用来操作数据库的 2、MVC...

OceanStar的博客 1298

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

springmvc day06

jar包下载网址:http://www.xwood.net/site_domain/_root/5870/5930/5932/9330/9374/t_c96056.html

yygyj的博客 179

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SpringMVC_day03 - 统一异常处理

/自定义异常处理器,用于封装异常信息,对异常进行分类​​​​​​//自定义异常处理器,用于封装异常信息,对异常进行分类​​​​​​​让自定义异常类继承的好处是,后期在抛出这两个异常的时候,就不用在try...catch...或throws了自定义异常类中添加code属性的原因是为了更好的区分异常是来自哪个业务的假如在BookServiceImpl的getById方法抛异常了,该如何来包装呢?//模拟业务异常,包装成自定义异常。

tang7mj的博客 917

SpringMVC-学习笔记06【异常处理及拦截器】

SpringMVC-学习笔记06【异常处理及拦截器】

upward 1193

Day71 手写一个SpringMVC的框架(一)

1.完善ApplicationListener,封装类描述类、方法描述类、参数描述类的对象。

weixin_69595694的博客 1066

Day133.异常处理 -SpringMVC

异常处理 1.异常处理概述 Spring MVC 通过 HandlerExceptionResolver 处理程序的异常,包括 Handler 映射、数据绑定以及目标方法执行时发生的异常。 SpringMVC 提供的 HandlerExceptionResolver 的实现类 2. HandlerExceptionResolver DispatcherServlet 默认装配的 HandlerExceptionResolver : ① 没有使用 < mvc:annotation-dr

阿昌爱Java 230

SSM_SpringMVC_Day03(异常处理机制、SSM整合)

SSM_SpringMVC_Day03(异常处理机制、SSM整合) 1.SpringMVC异常处理机制 1.1.系统中的异常分为两类: 编译期异常:Exception的直接子类 需要通过捕获/抛出异常来进行处理,不处理程序无法运行 运行时异常:RuntimeException的直接子类 可以不处理,程序可以正常运行 可以通过规范代码的编写,加强测试,严谨代码逻辑来避免异常的发生 系统开发使用mvc架构 dao service controller 在每一层都有可能发生异常,springmvc中,我

weixin_47469183的博客 255

java_springMVC

服务器启动时创建 WEB-INF里面的东西只能通过请求转发访问到,直接或者重定向都访问不到 自定义类型转换器 User类中加date private Date date; // set get toString jsp的表单添加上用户生日 <form action=""> 用户生日:<input > </form> Controller里面 用户生日...

wjl31802的博客 6004

day8:SpringMVC异常处理机制

**参数exception异常的异常对象*返回值modelAndView跳转的错误异常信息//判断是否是自定义异常modelAndView.addObject("info","自定义异常");modelAndView.addObject("info","类转换异常");}}

卓汶的博客 159

Day14-SpringMVC异常处理机制

文章目录1. SpringMVC异常处理1.1 异常处理的思路1.2 异常处理两种方式1.3 简单异常处理器SimpleMappingExceptionResolver1.4 自定义异常处理步骤1.5 知识要点异常处理方式自定义异常处理步骤 1. SpringMVC异常处理 1.1 异常处理的思路 系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发,测试等手段减少运行时异常的发生。 系统的Dao、Service、Contro.

Youmonster的博客 2026

SpringMVC框架详解

SpringMVC框架

weixin_44087365的博客 473

Java Spring|day2.SpringMVC

ajax 全名 async javascript and XML(异步JavaScript和XML)Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页(不使用 Ajax)如果需要更新内容,必需重载整个网页面。

weixin_60364343的博客 798

Java框架-SpringMVC统一异常处理、ssm框架整合

1. SpringMVC中异常处理 1.1 各层处理异常原则即实现方法 1.1.1 各层处理异常原则 dao:不处理,抛异常; service:不处理,抛异常; controller/servlet:必须处理,否则错误信息将直接在浏览器显示给用户看。 1.1.2 异常处理实现方法 方法1:控制层的方法中写try…catch。异常处理信息一多,控制层方法就会十分冗余,而且每个控制器都有可能有异常,...

KeepStruggling的博客 577

java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】...

第1章 响应数据和结果视图 1.1返回值分类 1.1.1 字符串 1.1.2 void 1.1.3 ModelAndView 1.2转发和重定向 1.2.1 forward 转发 1.2.2 Redirect 重定向 1.3ResponseBody 响应 json 数据 1.3.1 使用说明 1.3.2 使用示例 ...

weixin_30590285的博客 93
上一篇: Java基础增强(多线程、网络编程、类加载机制、反射、JavaBean、XML、Dom4J)
下一篇: Java框架_SpringMVC_day07_拦截器
chipeize
博客等级 码龄10年 23粉丝 80原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值