1.配置web.xml文件

  1. <!DOCTYPE web-app PUBLIC
  2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
  4. <web-app>
  5. <display-name>Archetype Created Web Application</display-name>
  6. <servlet>
  7. <servlet-name>springmvc</servlet-name>
  8. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  9. <init-param>
  10. <param-name>contextConfigLocation</param-name>
  11. <param-value>classpath:spring-mvc.xml</param-value>
  12. </init-param>
  13. <load-on-startup>1</load-on-startup>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>springmvc</servlet-name>
  17. <url-pattern>/</url-pattern>
  18. </servlet-mapping>
  19. </web-app>

  2.实体类UserInfo

  1. public class UserInfo {
  2. private String name;
  3. private Integer Age;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public Integer getAge() {
  11. return Age;
  12. }
  13. public void setAge(Integer age) {
  14. Age = age;
  15. }
  16. }

  3.1:用户异常

  1. public class UserInfoException extends Exception {
  2. public UserInfoException() {
  3. }
  4. public UserInfoException(String message) {
  5. super(message);
  6. }
  7. }

  3.2:用户名异常

  1. public class NameException extends UserInfoException {
  2. public NameException() {
  3. }
  4. public NameException(String message) {
  5. super(message);
  6. }
  7. }

  3.3:年龄异常

  1. public class AgeException extends UserInfoException {
  2. public AgeException() {
  3. }
  4. public AgeException(String message) {
  5. super(message);
  6. }
  7. }

  4.异常解析器(谁继承它,谁就拥有异常解析)

  1. import cn.happy.exceptions.AgeException;
  2. import cn.happy.exceptions.NameException;
  3. import org.springframework.web.bind.annotation.ExceptionHandler;
  4. import org.springframework.web.servlet.ModelAndView;
  5. public class BaseController {
  6. //解析异常
  7. @ExceptionHandler
  8. public ModelAndView resolveException(Exception ex) {
  9. ModelAndView mv = new ModelAndView();
  10. mv.setViewName("/error.jsp");
  11. if (ex instanceof NameException) {
  12. mv.setViewName("/error/NameException.jsp");
  13. } else if (ex instanceof AgeException) {
  14. mv.setViewName("/error/AgeException.jsp");
  15. }
  16. return mv;
  17. }
  18. }

  5.处理器

  1. import cn.happy.exceptions.AgeException;
  2. import cn.happy.exceptions.NameException;
  3. import cn.happy.exceptions.UserInfoException;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.web.bind.annotation.ExceptionHandler;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.servlet.ModelAndView;
  8. @Controller
  9. public class FirstController extends BaseController {
  10. @RequestMapping("/first")
  11. public String doFirst(String name, int age) throws UserInfoException {
  12. if (!"admin".equals(name)) {
  13. throw new NameException("用户名错误");
  14. } else if (age > 60) {
  15. throw new AgeException("年龄错误");
  16. }
  17. return "/index.jsp";
  18. }
  19. }

  6.映射器

  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:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context.xsd">
  9.  
  10. <context:component-scan base-package="cn.happy"/>
  11. </beans>

  7.1:视图(年龄异常页面)

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <h2>年龄错误</h2>
  8. </body>
  9. </html>

  7.2.视图(用户名异常页面)

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <h2>用户名错误</h2>
  8. </body>
  9. </html>

  7.3视图(登录页面)

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <form action="/first" method="post">
  8. 用户名:<input name="name"/>
  9. 年龄:<input name="age"/>
  10. <input type="submit" value="登录"/>
  11. </form>
  12. </body>
  13. </html>

  7.4:视图(异常页面)

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
  2. <html>
  3. <head>
  4. <title>Title</title>
  5. </head>
  6. <body>
  7. <h2>ErrorPage出错了</h2>
  8. ${ex.localizedMessage}
  9. </body>
  10. </html>

  7.5:视图(登录成功页面)

  1. <html>
  2. <body>
  3. <h2>Hello World!</h2>
  4. </body>
  5. </html>

  

  测试页面:测试登录成功

  测试页面:测试用户名异常

  测试页面:测试年龄异常

SpringMVC08AnnotationException 注解异常的更多相关文章

  1. shiro 配置注解异常 java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable

    解决方案: pom 文件添加: <!-- 解决shiro注解(shiro 使用 aop) --> <dependency> <groupId>aspectj< ...

  2. springmvc——基于xml的异常映射和基于注解的异常映射

    SpringMVC提供了基于XML和基于注解两种异常映射机制.这两种异常映射不能够只使用一个,他们需要一起使用.因为有些异常是基于注解异常映射捕获不到的. 在springmvc中,一个请求如果是由&l ...

  3. SpringBoot整合Mybatis多数据源 (AOP+注解)

    SpringBoot整合Mybatis多数据源 (AOP+注解) 1.pom.xml文件(开发用的JDK 10) <?xml version="1.0" encoding=& ...

  4. SpringMVC中的异常处理集锦

    1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合 ...

  5. 反射那点基础-Method

    目录 1 获取 Method 1.1 方法 1.2 实例 2 Method 的方法 2.1 Java 方法基础知识 2.2 修饰符相关方法 2.2.1 获取修饰符 2.2.2 判断是否为 defaul ...

  6. SpringMVC异常处理方式

    一.描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦合 ...

  7. Gson 解析教程

    Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gso ...

  8. Spring配置--Aop配置详情

    首先我们来看一下官方文档所给我们的关于AOP的一些概念性词语的解释: 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象.事务管理是J2EE应用中一个关于横切关注点的很好的例子.在 ...

  9. Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson

    Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gso ...

随机推荐

  1. SVN客户端下载和Svn visual studio插件

    1.Visual SVN Visual SVN visual studio插件 https://www.visualsvn.com/vis... 2.TortoiseSVN SVN客户端下载 http ...

  2. Ajax效果--个人收藏

    $.ajax({ url: "../../../Tools/WeChatMenu.ashx?action=get_menu", type: "post", da ...

  3. BO 与 VO 的属性拷贝 copyProperties(bo,vo)

    NewClass extends OldClass   : newClass继承自oldClass,属性大多数相同,但是也有新的扩展. beanUtils.copyProperties(oldClas ...

  4. spring 4.0 注解数据验证1

    通常情况下,数据验证都分为前台验证,后台验证.并且前台JS验证是肯定有的,那么其实验证的错误信息根本不必通过后台传过去,哪怕就是想国际化,前台JS也能够胜任. 如果前台验证足够了,那么如果还有不正确的 ...

  5. 笔试题: 数据库 已看1 一些关键的sql语句练习 和选择题 有用 sql语句练习 挺好

    一.     选择题 1.SQL语言是( C )语言. A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库     redis 是 3.如果在where子句中有两个条件要同时满足,应该用哪个 ...

  6. Spring 框架学习整理

    JDBC操作数据库的基本入门中存在什么问题? *   导致驱动注册两次是个问题,但不是严重的. *   严重的问题:是当前类和mysql的驱动类有很强的依赖关系. *      当我们没有驱动类的时候 ...

  7. 手机连接fiddler后,浏览器无法打开网页或者fiddler抓取不到手机应用相关数据的情况

    关于手机如何连接fiddler,网上有很多教程,我暂时就不写了 今天在使用fiddler的过程中,发现fiddler突然无法抓取移动端应用的数据包,再三确认连接无误.因此就开始了解决之旅 起因是安卓手 ...

  8. 深入学习JavaScript: apply 方法 详解

    我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文章对apply方法和call的一些示例,总算是看的有点眉目了,在这里我做如下笔记,希望和大家 ...

  9. Thinkphp通过phpqrcode实现网址验证码

    第一步: phpqrcode下载第三方扩展包,http://phpqrcode.sourceforge.net/ 第二步: 将扩展包放到/ThinkPHP/Library/Vendor/下的Phpqr ...

  10. Loadrunner监控服务器资源

    LoadRunner 加载监听服务器的步骤如下: 1.在 LoadRunner Controller 下,将工作面板切换到 Run状态,Available Graphs 栏 ,System Resou ...