以下内容引用自http://wiki.jikexueyuan.com/project/spring/mvc-framework/spring-exception-handling-example.html

例子:

pom.xml:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.jsoft.testspring</groupId>
  5. <artifactId>testexception</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>testexception Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>3.8.1</version>
  15. <scope>test</scope>
  16. </dependency>
  17.  
  18. <!-- Servlet Library -->
  19. <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
  20. <dependency>
  21. <groupId>javax.servlet</groupId>
  22. <artifactId>javax.servlet-api</artifactId>
  23. <version>3.1.0</version>
  24. <scope>provided</scope>
  25. </dependency>
  26. <!-- Spring Core -->
  27. <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
  28. <dependency>
  29. <groupId>org.springframework</groupId>
  30. <artifactId>spring-core</artifactId>
  31. <version>4.1.4.RELEASE</version>
  32. </dependency>
  33. <!-- Spring Web -->
  34. <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
  35. <dependency>
  36. <groupId>org.springframework</groupId>
  37. <artifactId>spring-web</artifactId>
  38. <version>4.1.4.RELEASE</version>
  39. </dependency>
  40. <!-- Spring Web MVC -->
  41. <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
  42. <dependency>
  43. <groupId>org.springframework</groupId>
  44. <artifactId>spring-webmvc</artifactId>
  45. <version>4.1.4.RELEASE</version>
  46. </dependency>
  47.  
  48. </dependencies>
  49. <build>
  50. <finalName>testexception</finalName>
  51. <plugins>
  52. <!-- Config: Maven Tomcat Plugin -->
  53. <!-- http://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
  54. <!-- http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html -->
  55. <plugin>
  56. <groupId>org.apache.tomcat.maven</groupId>
  57. <artifactId>tomcat7-maven-plugin</artifactId>
  58. <version>2.2</version>
  59. <!-- Config: contextPath and Port (Default:8080) -->
  60. <!--
  61. <configuration>
  62. <path>/</path>
  63. <port>8899</port>
  64. </configuration>
  65. -->
  66. </plugin>
  67. <!-- Config: Maven Jetty Plugin -->
  68. <!-- http://mvnrepository.com/artifact/org.mortbay.jetty/jetty-maven-plugin -->
  69. <!-- http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html -->
  70. <plugin>
  71. <groupId>org.eclipse.jetty</groupId>
  72. <artifactId>jetty-maven-plugin</artifactId>
  73. <version>9.4.3.v20170317</version>
  74. <!-- Config: contextPath and Port (Default:8080) -->
  75. <!--
  76. <configuration>
  77. <httpConnector>
  78. <port>8899</port>
  79. </httpConnector>
  80. <webAppConfig>
  81. <contextPath>/</contextPath>
  82. </webAppConfig>
  83. </configuration>
  84. -->
  85. </plugin>
  86. </plugins>
  87. </build>
  88. </project>

web.xml:

  1. <web-app id="WebApp_ID" version="3.0"
  2. xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  6.  
  7. <display-name>Spring MVC Application</display-name>
  8.  
  9. <servlet>
  10. <servlet-name>spring-mvc</servlet-name>
  11. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  12. <!-- 默认:[servlet-name]-servlet.xml -->
  13. <!-- 通过初始化参数,指定xml文件的位置 -->
  14. <init-param>
  15. <param-name>contextConfigLocation</param-name>
  16. <param-value>/WEB-INF/springmvc-context.xml</param-value>
  17. </init-param>
  18. <load-on-startup>1</load-on-startup>
  19. </servlet>
  20.  
  21. <servlet-mapping>
  22. <servlet-name>spring-mvc</servlet-name>
  23. <url-pattern>/</url-pattern>
  24. </servlet-mapping>
  25.  
  26. </web-app>

springmvc-context.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  13.  
  14. <context:component-scan base-package="com.jsoft.testspring"/>
  15.  
  16. <context:annotation-config/>
  17.  
  18. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  19. <property name="prefix">
  20. <value>/WEB-INF/jsp/</value>
  21. </property>
  22. <property name="suffix">
  23. <value>.jsp</value>
  24. </property>
  25. </bean>
  26.  
  27. <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
  28. <property name="exceptionMappings">
  29. <props>
  30. <prop key="com.jsoft.testspring.testexception.SpringException">
  31. ExceptionPage
  32. </prop>
  33. </props>
  34. </property>
  35. <property name="defaultErrorView" value="error" />
  36. </bean>
  37. </beans>

说明:指定ExceptionPage作为一个异常视图,当SpringException发生时触发,另外,如果有任何其他类型的异常发生,通用的视图error就会触发。

Student.java:

  1. package com.jsoft.testspring.testexception;
  2.  
  3. public class Student {
  4. private Integer age;
  5. private String name;
  6. private Integer id;
  7.  
  8. public void setAge(Integer age) {
  9. this.age = age;
  10. }
  11.  
  12. public Integer getAge() {
  13. return age;
  14. }
  15.  
  16. public void setName(String name) {
  17. this.name = name;
  18. }
  19.  
  20. public String getName() {
  21. return name;
  22. }
  23.  
  24. public void setId(Integer id) {
  25. this.id = id;
  26. }
  27.  
  28. public Integer getId() {
  29. return id;
  30. }
  31. }

SpringException.java:

  1. package com.jsoft.testspring.testexception;
  2.  
  3. public class SpringException extends RuntimeException {
  4. private String exceptionMsg;
  5.  
  6. public SpringException(String exceptionMsg) {
  7. this.exceptionMsg = exceptionMsg;
  8. }
  9.  
  10. public String getExceptionMsg() {
  11. return this.exceptionMsg;
  12. }
  13.  
  14. public void setExceptionMsg(String exceptionMsg) {
  15. this.exceptionMsg = exceptionMsg;
  16. }
  17. }

StudentController.java:

  1. package com.jsoft.testspring.testexception;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.ui.ModelMap;
  5. import org.springframework.web.bind.annotation.ExceptionHandler;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestMethod;
  8. import org.springframework.web.servlet.ModelAndView;
  9.  
  10. @Controller
  11. public class StudentController {
  12.  
  13. @RequestMapping(value = "/student", method = RequestMethod.GET)
  14. public ModelAndView student() {
  15. return new ModelAndView("student", "command", new Student());
  16. }
  17.  
  18. @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
  19. @ExceptionHandler({ SpringException.class })
  20. public String addStudent(Student student, ModelMap model) {
  21. if (student.getName().length() < 5) {
  22. throw new SpringException("Given name is too short");
  23. } else {
  24. model.addAttribute("name", student.getName());
  25. }
  26. if (student.getAge() < 10) {
  27. throw new SpringException("Given age is too low");
  28. } else {
  29. model.addAttribute("age", student.getAge());
  30. }
  31. model.addAttribute("id", student.getId());
  32. return "result";
  33. }
  34. }

student.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
  5. <html>
  6. <head>
  7. <title>Spring MVC Exception Handling</title>
  8. </head>
  9. <body>
  10.  
  11. <h2>Student Information</h2>
  12. <form:form method="POST" action="addStudent">
  13. <table>
  14. <tr>
  15. <td><form:label path="name">Name</form:label></td>
  16. <td><form:input path="name" /></td>
  17. </tr>
  18. <tr>
  19. <td><form:label path="age">Age</form:label></td>
  20. <td><form:input path="age" /></td>
  21. </tr>
  22. <tr>
  23. <td><form:label path="id">id</form:label></td>
  24. <td><form:input path="id" /></td>
  25. </tr>
  26. <tr>
  27. <td colspan="2">
  28. <input type="submit" value="Submit"/>
  29. </td>
  30. </tr>
  31. </table>
  32. </form:form>
  33. </body>
  34. </html>

result.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <title>Spring MVC Form Handling</title>
  7. </head>
  8. <body>
  9.  
  10. <h2>Submitted Student Information</h2>
  11. <table>
  12. <tr>
  13. <td>Name</td>
  14. <td>${name}</td>
  15. </tr>
  16. <tr>
  17. <td>Age</td>
  18. <td>${age}</td>
  19. </tr>
  20. <tr>
  21. <td>ID</td>
  22. <td>${id}</td>
  23. </tr>
  24. </table>
  25. </body>
  26. </html>

ExceptionPage.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <title>Spring MVC Exception Handling</title>
  7. </head>
  8. <body>
  9.  
  10. <h2>Spring MVC Exception Handling</h2>
  11.  
  12. <h3>${exception.exceptionMsg}</h3>
  13.  
  14. </body>
  15. </html>

error.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <title>Spring Error Page</title>
  7. </head>
  8. <body>
  9.  
  10. <p>An error occured, please contact webmaster.</p>
  11.  
  12. </body>
  13. </html>

测试工程:https://github.com/easonjim/5_java_example/tree/master/springtest/test19/testexception

Spring MVC异常处理实例的更多相关文章

  1. Spring MVC异常处理代码完整实例

    Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean

  2. Spring MVC异常处理SimpleMappingExceptionResolver

    Spring MVC异常处理SimpleMappingExceptionResolver[转] (2012-12-07 13:45:33) 转载▼ 标签: 杂谈 分类: 技术分享 Spring3.0中 ...

  3. Spring MVC框架实例

    Spring  MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,能够选择是使用内置的 Spring Web 框架还是 ...

  4. Spring系列(七) Spring MVC 异常处理

    Servlet传统异常处理 Servlet规范规定了当web应用发生异常时必须能够指明, 并确定了该如何处理, 规定了错误信息应该包含的内容和展示页面的方式.(详细可以参考servlet规范文档) 处 ...

  5. Spring MVC异常处理详解

    Spring MVC中异常处理的类体系结构 下图中,我画出了Spring MVC中,跟异常处理相关的主要类和接口. 在Spring MVC中,所有用于处理在请求映射和请求处理过程中抛出的异常的类,都要 ...

  6. Spring MVC Framework 实例

    一 SpringMVC基础入门,创建一个HelloWorld程序 1 首先,导入SpringMVC需要的jar包. commons-logging-<version>.jar spring ...

  7. Spring MVC异常处理

    Spring Mvc 中异常处理,一般有两种解决办法: 一.利用org.springframework.web.servlet.handler.SimpleMappingExceptionResolv ...

  8. Spring MVC异常处理详解(转)

    下图中,我画出了Spring MVC中,跟异常处理相关的主要类和接口. 在Spring MVC中,所有用于处理在请求映射和请求处理过程中抛出的异常的类,都要实现HandlerExceptionReso ...

  9. Spring MVC异常处理详解 ExceptionHandler good

    @ControllerAdvice(basePackageClasses = AcmeController.class) public class AcmeControllerAdvice exten ...

随机推荐

  1. flex布局以及相关属性

    容器的属性: 父元素设置display:flex:子元素即可使用flex布局. flex-direction 决定项目排列方向: .box { flex-direction: row | row-re ...

  2. 区间DP || HDU 6249 Alice’s Stamps

    题意:标号为1-n的n种邮票,m个邮票集,每个集里有标号从Li到Ri的邮票,要从中选K个邮票集,使这K个邮票集能覆盖最多种的邮票,问最多能覆盖多少种邮票 思路:区间DP (我:??? f[i][j]表 ...

  3. PHP02 PHPStrom2018.X与WAMPServer3.0.6的集成

    脚本运行环境设置:设置PHPStorm中的脚本在PHP解析器上运行 1.进入Filie>>>setting>>languages and FrameWorks 选择php ...

  4. HTML基础(五)表单

    表单的工作原理 简单来说就是客户在浏览器输入信息之后,浏览器将用户在表单中的数据进行打包发送给服务器,服务器接收到之后进行处理,如下图 语法 <form> 表单元素</form> ...

  5. [BZOJ3940]:[Usaco2015 Feb]Censoring(AC自动机)

    题目传送门 题目描述: FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过105的字符串S.他有一个包含n个单词的列表,列表里的n个单词记为t1…tN.他希望从S中删除这些单词.FJ每次在S中 ...

  6. 清除oracle归档日志

    清除oracle归档日志 1. 连接oracle报如下错误 ORA-00257: archiver error. Connect internal only, until freed 产生原因:出现O ...

  7. AT2663 Namori Grundy

    题目描述: luogu 题解: 好多细节,比如说每个点有且仅有一条入边. 所以说这个图一定是一个基环外向树. 考虑只是一个环的情况,我们可以发现,当环长为偶数时我们可以$01$交替染色,但环长为奇数时 ...

  8. selenium——操作滚动条

    在自动化测试的过程中,难免会应用到翻页键,但是webdriver提供的方法都是操作当前页面可见的元素,对于未在当前范围展示的翻页键,该如何操作呢? 小编在这里介绍一种方法:使用JavaScript操作 ...

  9. python常用模块之sys, os, random

    一. sys模块 1. 作用: sys模块是与python解释器交互的一个接口 2. 具体使用 1. sys.argv 获取当前正在执行的命令行列表, 第一个为程序本身路径 print('file n ...

  10. String字符串去掉双引号

    public static String stringReplace(String str) { //去掉" "号 String str= str.replace("\& ...